{
  "version": 3,
  "sources": ["../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../../node_modules/clipboard/dist/clipboard.js", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js", "../../../node_modules/tributejs/src/utils.js", "../../../node_modules/tributejs/src/TributeEvents.js", "../../../node_modules/tributejs/src/TributeMenuEvents.js", "../../../node_modules/tributejs/src/TributeRange.js", "../../../node_modules/tributejs/src/TributeSearch.js", "../../../node_modules/tributejs/src/Tribute.js", "../../../node_modules/konva/lib/Global.js", "../../../node_modules/konva/lib/Util.js", "../../../node_modules/konva/lib/Context.js", "../../../node_modules/konva/lib/Canvas.js", "../../../node_modules/konva/lib/DragAndDrop.js", "../../../node_modules/konva/lib/Validators.js", "../../../node_modules/konva/lib/Factory.js", "../../../node_modules/konva/lib/Node.js", "../../../node_modules/konva/lib/Container.js", "../../../node_modules/konva/lib/PointerEvents.js", "../../../node_modules/konva/lib/Stage.js", "../../../node_modules/konva/lib/Shape.js", "../../../node_modules/konva/lib/Layer.js", "../../../node_modules/konva/lib/FastLayer.js", "../../../node_modules/konva/lib/Group.js", "../../../node_modules/konva/lib/Animation.js", "../../../node_modules/konva/lib/Tween.js", "../../../node_modules/konva/lib/_CoreInternals.js", "../../../node_modules/konva/lib/shapes/Arc.js", "../../../node_modules/konva/lib/shapes/Line.js", "../../../node_modules/konva/lib/BezierFunctions.js", "../../../node_modules/konva/lib/shapes/Path.js", "../../../node_modules/konva/lib/shapes/Arrow.js", "../../../node_modules/konva/lib/shapes/Circle.js", "../../../node_modules/konva/lib/shapes/Ellipse.js", "../../../node_modules/konva/lib/shapes/Image.js", "../../../node_modules/konva/lib/shapes/Label.js", "../../../node_modules/konva/lib/shapes/Rect.js", "../../../node_modules/konva/lib/shapes/RegularPolygon.js", "../../../node_modules/konva/lib/shapes/Ring.js", "../../../node_modules/konva/lib/shapes/Sprite.js", "../../../node_modules/konva/lib/shapes/Star.js", "../../../node_modules/konva/lib/shapes/Text.js", "../../../node_modules/konva/lib/shapes/TextPath.js", "../../../node_modules/konva/lib/shapes/Transformer.js", "../../../node_modules/konva/lib/shapes/Wedge.js", "../../../node_modules/konva/lib/filters/Blur.js", "../../../node_modules/konva/lib/filters/Brighten.js", "../../../node_modules/konva/lib/filters/Brightness.js", "../../../node_modules/konva/lib/filters/Contrast.js", "../../../node_modules/konva/lib/filters/Emboss.js", "../../../node_modules/konva/lib/filters/Enhance.js", "../../../node_modules/konva/lib/filters/Grayscale.js", "../../../node_modules/konva/lib/filters/HSL.js", "../../../node_modules/konva/lib/filters/HSV.js", "../../../node_modules/konva/lib/filters/Invert.js", "../../../node_modules/konva/lib/filters/Kaleidoscope.js", "../../../node_modules/konva/lib/filters/Mask.js", "../../../node_modules/konva/lib/filters/Noise.js", "../../../node_modules/konva/lib/filters/Pixelate.js", "../../../node_modules/konva/lib/filters/Posterize.js", "../../../node_modules/konva/lib/filters/RGB.js", "../../../node_modules/konva/lib/filters/RGBA.js", "../../../node_modules/konva/lib/filters/Sepia.js", "../../../node_modules/konva/lib/filters/Solarize.js", "../../../node_modules/konva/lib/filters/Threshold.js", "../../../node_modules/konva/lib/_FullInternals.js", "../../../node_modules/konva/lib/index.js", "../../javascript/src/confirm.js", "../../javascript/src/direct_uploads.js", "../../javascript/src/lazysrc.js", "../../../node_modules/jstz/dist/jstz.js", "../../../node_modules/jstz/index.js", "../../../node_modules/local-time/app/assets/javascripts/local-time.es2017-umd.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/accounts_controller.js", "../../../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js", "../../javascript/channels/consumer.js", "../../javascript/controllers/article_editor_controller.js", "../../javascript/controllers/autogrow_controller.js", "../../javascript/controllers/autosubmit_controller.js", "../../javascript/controllers/billing_filter_controller.js", "../../javascript/controllers/box_drawer_controller.js", "../../javascript/controllers/box_scan_controller.js", "../../javascript/controllers/braintree_controller.js", "../../javascript/controllers/bulk_controller.js", "../../javascript/controllers/bulk_variant_creator_controller.js", "../../javascript/controllers/catalog_dropdown_controller.js", "../../javascript/controllers/catalog_image_preview_controller.js", "../../javascript/controllers/catalog_nav_controller.js", "../../javascript/controllers/checkbox_select_controller.js", "../../javascript/controllers/clipboard_controller.js", "../../../node_modules/@popperjs/core/lib/enums.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/math.js", "../../../node_modules/@popperjs/core/lib/utils/userAgent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../../node_modules/@popperjs/core/lib/utils/within.js", "../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../../node_modules/@popperjs/core/lib/utils/getVariation.js", "../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../../node_modules/@popperjs/core/lib/modifiers/flip.js", "../../../node_modules/@popperjs/core/lib/modifiers/hide.js", "../../../node_modules/@popperjs/core/lib/modifiers/offset.js", "../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../../node_modules/@popperjs/core/lib/utils/debounce.js", "../../../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../../node_modules/@popperjs/core/lib/createPopper.js", "../../../node_modules/@popperjs/core/lib/popper.js", "../../../node_modules/tippy.js/src/constants.ts", "../../../node_modules/tippy.js/src/utils.ts", "../../../node_modules/tippy.js/src/dom-utils.ts", "../../../node_modules/tippy.js/src/bindGlobalEventListeners.ts", "../../../node_modules/tippy.js/src/browser.ts", "../../../node_modules/tippy.js/src/validation.ts", "../../../node_modules/tippy.js/src/props.ts", "../../../node_modules/tippy.js/src/template.ts", "../../../node_modules/tippy.js/src/createTippy.ts", "../../../node_modules/tippy.js/src/index.ts", "../../../node_modules/tippy.js/src/addons/createSingleton.ts", "../../../node_modules/tippy.js/src/addons/delegate.ts", "../../../node_modules/tippy.js/src/plugins/animateFill.ts", "../../../node_modules/tippy.js/src/plugins/followCursor.ts", "../../../node_modules/tippy.js/src/plugins/inlinePositioning.ts", "../../../node_modules/tippy.js/src/plugins/sticky.ts", "../../../node_modules/tippy.js/build/base.js", "../../javascript/controllers/collapse_controller.js", "../../javascript/controllers/color_swatch_controller.js", "../../javascript/controllers/command_palette_controller.js", "../../../node_modules/@lit/reactive-element/src/css-tag.ts", "../../../node_modules/@lit/reactive-element/src/reactive-element.ts", "../../../node_modules/lit-html/src/lit-html.ts", "../../../node_modules/lit-element/src/lit-element.ts", "../../../node_modules/@lit/reactive-element/src/decorators/custom-element.ts", "../../../node_modules/@lit/reactive-element/src/decorators/property.ts", "../../../node_modules/@lit/reactive-element/src/decorators/state.ts", "../../../node_modules/@lit/reactive-element/src/decorators/query-assigned-elements.ts", "../../../node_modules/lit-html/src/directive.ts", "../../../node_modules/lit-html/src/directive-helpers.ts", "../../../node_modules/lit-html/src/directives/repeat.ts", "../../../node_modules/lit-html/src/directives/live.ts", "../../../node_modules/lit-html/src/async-directive.ts", "../../../node_modules/lit-html/src/directives/ref.ts", "../../../node_modules/lit-html/src/directives/class-map.ts", "../../../node_modules/hotkeys-js/dist/hotkeys.esm.js", "../../../node_modules/@gorails/ninja-keys/src/ninja-header.ts", "../../../node_modules/lit-html/src/directives/unsafe-html.ts", "../../../node_modules/tslib/tslib.es6.mjs", "../../../node_modules/@material/mwc-icon/mwc-icon-host.css.ts", "../../../node_modules/@material/mwc-icon/mwc-icon.ts", "../../../node_modules/@gorails/ninja-keys/src/ninja-action.ts", "../../../node_modules/@gorails/ninja-keys/src/ninja-footer.ts", "../../../node_modules/@gorails/ninja-keys/src/base-styles.ts", "../../../node_modules/@gorails/ninja-keys/src/ninja-keys.ts", "../../javascript/controllers/drawer_controller.js", "../../../node_modules/flowbite/src/dom/events.ts", "../../../node_modules/flowbite/src/dom/instances.ts", "../../../node_modules/flowbite/src/components/accordion/index.ts", "../../../node_modules/flowbite/src/components/collapse/index.ts", "../../../node_modules/flowbite/src/components/carousel/index.ts", "../../../node_modules/flowbite/src/components/dismiss/index.ts", "../../../node_modules/flowbite/src/components/dropdown/index.ts", "../../../node_modules/flowbite/src/components/modal/index.ts", "../../../node_modules/flowbite/src/components/drawer/index.ts", "../../../node_modules/flowbite/src/components/tabs/index.ts", "../../../node_modules/flowbite/src/components/tooltip/index.ts", "../../../node_modules/flowbite/src/components/popover/index.ts", "../../../node_modules/flowbite/src/components/dial/index.ts", "../../../node_modules/flowbite/src/components/input-counter/index.ts", "../../../node_modules/flowbite/src/components/clipboard/index.ts", "../../../node_modules/flowbite-datepicker/dist/main.esm.js", "../../../node_modules/flowbite/src/components/datepicker/index.ts", "../../../node_modules/flowbite/src/components/index.ts", "../../../node_modules/flowbite/src/index.ts", "../../javascript/controllers/dtg_dashboard_controller.js", "../../javascript/controllers/etsy_import_controller.js", "../../javascript/controllers/etsy_listing_sync_controller.js", "../../javascript/controllers/etsy_product_map_picker_controller.js", "../../javascript/controllers/feature_flag_controller.js", "../../javascript/controllers/field_help_controller.js", "../../javascript/controllers/filter_manager_controller.js", "../../javascript/controllers/flash_clear_controller.js", "../../javascript/controllers/form_controller.js", "../../javascript/controllers/gift_box_form_controller.js", "../../javascript/controllers/gift_box_packing_station_controller.js", "../../javascript/controllers/helpers/escape.js", "../../javascript/controllers/gift_box_product_picker_controller.js", "../../javascript/controllers/gift_box_template_form_controller.js", "../../javascript/controllers/help_feedback_controller.js", "../../javascript/controllers/inline_edit_controller.js", "../../javascript/controllers/inventory_popover_controller.js", "../../javascript/controllers/kiosk_keypad_controller.js", "../../javascript/controllers/kiosk_reset_controller.js", "../../javascript/controllers/lightbox_controller.js", "../../javascript/controllers/line_items_controller.js", "../../javascript/controllers/linked_row_controller.js", "../../javascript/controllers/listing_builder_controller.js", "../../javascript/controllers/listing_images_controller.js", "../../javascript/controllers/listing_validator_controller.js", "../../javascript/controllers/manual_order_controller.js", "../../javascript/controllers/manual_order_variant_controller.js", "../../javascript/controllers/mentions_controller.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/node_modules/dompurify/dist/purify.es.mjs", "../../../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", "../../javascript/controllers/mobile_menu_controller.js", "../../javascript/controllers/mockup_batch_poll_controller.js", "../../javascript/controllers/mockup_output_size_controller.js", "../../javascript/controllers/mockup_studio_picker_controller.js", "../../javascript/controllers/mockup_upload_controller.js", "../../javascript/controllers/mockup_uploader_controller.js", "../../javascript/controllers/mockup_video_options_controller.js", "../../javascript/controllers/mockup_video_selection_controller.js", "../../javascript/controllers/modal_controller.js", "../../javascript/controllers/nav_dropdown_controller.js", "../../javascript/controllers/notifications_controller.js", "../../javascript/controllers/order_item_controller.js", "../../javascript/controllers/overlay_editor_controller.js", "../../javascript/controllers/pack_station_controller.js", "../../javascript/controllers/paddle_controller.js", "../../javascript/controllers/pagy_initializer_controller.js", "../../javascript/src/pagy.mjs", "../../javascript/controllers/paypal_controller.js", "../../javascript/controllers/persistent_dropdown_controller.js", "../../javascript/controllers/personalization_questions_controller.js", "../../javascript/controllers/pick_list_filter_controller.js", "../../javascript/controllers/pick_list_scanner_controller.js", "../../javascript/controllers/placement_editor_controller.js", "../../javascript/lib/placement_geometry.js", "../../javascript/controllers/po_filter_controller.js", "../../javascript/controllers/po_line_item_type_controller.js", "../../../node_modules/tom-select/src/contrib/microevent.ts", "../../../node_modules/tom-select/src/contrib/microplugin.ts", "../../../node_modules/@orchidjs/unicode-variants/lib/regex.ts", "../../../node_modules/@orchidjs/unicode-variants/lib/strings.ts", "../../../node_modules/@orchidjs/unicode-variants/lib/index.ts", "../../../node_modules/@orchidjs/sifter/lib/utils.ts", "../../../node_modules/@orchidjs/sifter/lib/sifter.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/contrib/highlight.ts", "../../../node_modules/tom-select/src/constants.ts", "../../../node_modules/tom-select/src/defaults.ts", "../../../node_modules/tom-select/src/getSettings.ts", "../../../node_modules/tom-select/src/tom-select.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/plugins/change_listener/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/checkbox_options/plugin.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/clear_button/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/drag_drop/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/dropdown_header/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/caret_position/plugin.ts", "../../../node_modules/tom-select/src/constants.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/dropdown_input/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/plugins/input_autogrow/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_backspace_delete/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_active_items/plugin.ts", "../../../node_modules/tom-select/src/constants.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/optgroup_columns/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/remove_button/plugin.ts", "../../../node_modules/tom-select/src/plugins/restore_on_backspace/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/virtual_scroll/plugin.ts", "../../../node_modules/tom-select/src/tom-select.complete.ts", "../../javascript/controllers/pricing_controller.js", "../../javascript/controllers/print_file_drop_controller.js", "../../javascript/controllers/print_file_editor_controller.js", "../../javascript/controllers/print_file_render_poll_controller.js", "../../javascript/controllers/print_files_controller.js", "../../javascript/controllers/print_locations_controller.js", "../../javascript/controllers/print_station_controller.js", "../../javascript/controllers/product_form_sidebar_controller.js", "../../javascript/controllers/product_picker_controller.js", "../../javascript/controllers/product_variant_controller.js", "../../javascript/controllers/production_dashboard_controller.js", "../../javascript/controllers/production_station_controller.js", "../../javascript/controllers/profile_sync_controller.js", "../../javascript/controllers/push_status_controller.js", "../../javascript/controllers/qc_station_controller.js", "../../javascript/controllers/receiving_station_controller.js", "../../javascript/controllers/remote_modal_controller.js", "../../javascript/controllers/removable_controller.js", "../../javascript/controllers/removals_controller.js", "../../javascript/controllers/reset_form_controller.js", "../../javascript/controllers/scroll_tabs_controller.js", "../../javascript/controllers/search_filter_controller.js", "../../javascript/controllers/section_nav_controller.js", "../../javascript/controllers/select_controller.js", "../../javascript/controllers/selecteds_action_controller.js", "../../javascript/controllers/send_email_confirm_controller.js", "../../javascript/controllers/shipping_toggle_controller.js", "../../javascript/controllers/sidebar_controller.js", "../../javascript/controllers/simple_modal_controller.js", "../../javascript/controllers/size_prefix_preview_controller.js", "../../javascript/controllers/sortable_list_controller.js", "../../javascript/controllers/ss_inventory_controller.js", "../../javascript/controllers/ss_refresh_controller.js", "../../javascript/controllers/ss_variant_import_controller.js", "../../javascript/controllers/status_dropdown_controller.js", "../../javascript/controllers/sticky_toc_controller.js", "../../javascript/controllers/stock_drawer_controller.js", "../../javascript/controllers/stripe_controller.js", "../../javascript/controllers/submit_guard_controller.js", "../../javascript/controllers/submit_spinner_controller.js", "../../javascript/controllers/support_ticket_filter_controller.js", "../../javascript/controllers/tabbed_interface_controller.js", "../../javascript/controllers/taxonomy_selector_controller.js", "../../javascript/controllers/template_layer_form_controller.js", "../../javascript/controllers/template_layer_inline_controller.js", "../../javascript/controllers/template_product_picker_controller.js", "../../javascript/controllers/template_selection_controller.js", "../../javascript/controllers/theme_controller.js", "../../../node_modules/@rails/request.js/src/fetch_response.js", "../../../node_modules/@rails/request.js/src/request_interceptor.js", "../../../node_modules/@rails/request.js/src/lib/utils.js", "../../../node_modules/@rails/request.js/src/fetch_request.js", "../../../node_modules/@rails/request.js/src/verbs.js", "../../javascript/controllers/toast_controller.js", "../../javascript/controllers/tooltip_controller.js", "../../javascript/controllers/turbo_controller.js", "../../javascript/controllers/turbo_native/sign_out_controller.js", "../../javascript/controllers/turnstile_controller.js", "../../javascript/controllers/user_autocomplete_controller.js", "../../javascript/controllers/variant_counter_controller.js", "../../javascript/controllers/variant_price_edit_controller.js", "../../javascript/controllers/variant_print_files_color_controller.js", "../../javascript/controllers/variant_print_files_controller.js", "../../javascript/controllers/variant_sku_manager_controller.js", "../../javascript/controllers/variation_label_picker_controller.js", "../../javascript/controllers/variation_values_controller.js", "../../javascript/controllers/view_toggle_controller.js", "../../javascript/controllers/zone_box_controller.js", "rails:/home/deployer/podzilla/releases/20260824215130/app/javascript/controllers/**/*_controller.js", "../../../node_modules/tailwindcss-stimulus-components/dist/tailwindcss-stimulus-components.module.js", "../../../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", "../../../node_modules/stimulus-flatpickr/node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../node_modules/stimulus-flatpickr/src/utils.js", "../../../node_modules/stimulus-flatpickr/src/config_options.js", "../../../node_modules/stimulus-flatpickr/src/events.js", "../../../node_modules/stimulus-flatpickr/src/elements.js", "../../../node_modules/stimulus-flatpickr/src/strftime_mapping.js", "../../../node_modules/stimulus-flatpickr/src/index.js", "../../../node_modules/@josefarias/hotwire_combobox/app/assets/javascripts/hotwire_combobox.esm.js", "../../javascript/controllers/index.js", "../../../node_modules/@rails/actiontext/app/assets/javascripts/actiontext.esm.js", "../../javascript/src/actiontext.js", "rails:/home/deployer/podzilla/releases/20260824215130/app/javascript/src/**/*", "../../../node_modules/js-cookie/dist/js.cookie.mjs", "../../javascript/src/timezone.js", "../../javascript/src/turbo_native/bridge.js", "../../javascript/src/turbo_streams.js", "../../../node_modules/alpinejs/dist/module.esm.js", "../../../node_modules/apexcharts/dist/apexcharts.esm.js", "../../javascript/application.js"],
  "sourcesContent": ["export default {\n  logger: typeof console !== \"undefined\" ? console : undefined,\n  WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined,\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n//   ActionCable.logger.enabled = true\n//\n//   Example:\n//\n//   import * as ActionCable from '@rails/actioncable'\n//\n//   ActionCable.logger.enabled = true\n//   ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now())\n      adapters.logger.log(\"[ActionCable]\", ...messages)\n    }\n  },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this)\n    this.connection = connection\n    this.reconnectAttempts = 0\n  }\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\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\n  isRunning() {\n    return this.startedAt && !this.stoppedAt\n  }\n\n  recordMessage() {\n    this.pingedAt = now()\n  }\n\n  recordConnect() {\n    this.reconnectAttempts = 0\n    delete this.disconnectedAt\n    logger.log(\"ConnectionMonitor recorded connect\")\n  }\n\n  recordDisconnect() {\n    this.disconnectedAt = now()\n    logger.log(\"ConnectionMonitor recorded disconnect\")\n  }\n\n  // Private\n\n  startPolling() {\n    this.stopPolling()\n    this.poll()\n  }\n\n  stopPolling() {\n    clearTimeout(this.pollTimeout)\n  }\n\n  poll() {\n    this.pollTimeout = setTimeout(() => {\n      this.reconnectIfStale()\n      this.poll()\n    }\n    , this.getPollInterval())\n  }\n\n  getPollInterval() {\n    const { staleThreshold, reconnectionBackoffRate } = this.constructor\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n    const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n    const jitter = jitterMax * Math.random()\n    return staleThreshold * 1000 * backoff * (1 + jitter)\n  }\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\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt\n  }\n\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n  }\n\n  disconnectedRecently() {\n    return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n  }\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      }\n      , 200)\n    }\n  }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\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\": [\n    \"actioncable-v1-json\",\n    \"actioncable-unsupported\"\n  ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\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\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\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) { this.uninstallEventHandlers() }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols)\n      this.installEventHandlers()\n      this.monitor.start()\n      return true\n    }\n  }\n\n  close({allowReconnect} = {allowReconnect: true}) {\n    if (!allowReconnect) { this.monitor.stop() }\n    // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n    if (this.isOpen()) {\n      return this.webSocket.close()\n    }\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      }\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\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol\n    }\n  }\n\n  isOpen() {\n    return this.isState(\"open\")\n  }\n\n  isActive() {\n    return this.isState(\"open\", \"connecting\")\n  }\n\n  triedToReconnect() {\n    return this.monitor.reconnectAttempts > 0\n  }\n\n  // Private\n\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n  }\n\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0\n  }\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\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\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {}\n    }\n  }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) { return }\n    const {identifier, message, reason, reconnect, 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      case message_types.disconnect:\n        logger.log(`Disconnecting. Reason: ${reason}`)\n        return this.close({allowReconnect: reconnect})\n      case message_types.ping:\n        return null\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\", {reconnected: true})\n        } else {\n          return this.subscriptions.notify(identifier, \"connected\", {reconnected: false})\n        }\n      case message_types.rejection:\n        return this.subscriptions.reject(identifier)\n      default:\n        return this.subscriptions.notify(identifier, \"received\", message)\n    }\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({allowReconnect: false})\n    }\n  },\n\n  close(event) {\n    logger.log(\"WebSocket onclose event\")\n    if (this.disconnected) { return }\n    this.disconnected = true\n    this.monitor.recordDisconnect()\n    return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n  },\n\n  error() {\n    logger.log(\"WebSocket onerror event\")\n  }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n//     connected() {\n//       // Called once the subscription has been successfully completed\n//     },\n//\n//     disconnected({ willAttemptReconnect: boolean }) {\n//       // Called when the client has disconnected with the server.\n//       // The object will have an `willAttemptReconnect` property which\n//       // says whether the client has the intention of attempting\n//       // to reconnect.\n//     },\n//\n//     appear() {\n//       this.perform('appear', {appearing_on: this.appearingOn()})\n//     },\n//\n//     away() {\n//       this.perform('away')\n//     },\n//\n//     appearingOn() {\n//       $('main').data('appearing-on')\n//     }\n//   })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n//   class AppearanceChannel < ApplicationActionCable::Channel\n//     def subscribed\n//       current_user.appear\n//     end\n//\n//     def unsubscribed\n//       current_user.disappear\n//     end\n//\n//     def appear(data)\n//       current_user.appear on: data['appearing_on']\n//     end\n//\n//     def away\n//       current_user.away\n//     end\n//   end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\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\nexport default class Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer\n    this.identifier = JSON.stringify(params)\n    extend(this, mixin)\n  }\n\n  // Perform a channel action with the optional data passed as an attribute\n  perform(action, data = {}) {\n    data.action = action\n    return this.send(data)\n  }\n\n  send(data) {\n    return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n  }\n\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this)\n  }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions\n    this.pendingSubscriptions = []\n  }\n\n  guarantee(subscription) {\n    if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n      this.pendingSubscriptions.push(subscription) \n    }\n    else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n    }\n    this.startGuaranteeing()\n  }\n\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n    this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n  }\n\n  startGuaranteeing() {\n    this.stopGuaranteeing()\n    this.retrySubscribing()\n  }\n  \n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout)\n  }\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    }\n    , 500)\n  }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer\n    this.guarantor = new SubscriptionGuarantor(this)\n    this.subscriptions = []\n  }\n\n  create(channelName, mixin) {\n    const channel = channelName\n    const params = typeof channel === \"object\" ? channel : {channel}\n    const subscription = new Subscription(this.consumer, params, mixin)\n    return this.add(subscription)\n  }\n\n  // Private\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\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\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\n  forget(subscription) {\n    this.guarantor.forget(subscription)\n    this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n    return subscription\n  }\n\n  findAll(identifier) {\n    return this.subscriptions.filter((s) => s.identifier === identifier)\n  }\n\n  reload() {\n    return this.subscriptions.map((subscription) =>\n      this.subscribe(subscription))\n  }\n\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription) =>\n      this.notify(subscription, callbackName, ...args))\n  }\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\n    return subscriptions.map((subscription) =>\n      (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n  }\n\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription)\n    }\n  }\n\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`)\n    this.findAll(identifier).map((subscription) =>\n      this.guarantor.forget(subscription))\n  }\n\n  sendCommand(subscription, command) {\n    const {identifier} = subscription\n    return this.consumer.send({command, identifier})\n  }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n//   App.cable.disconnect()\n//\n// and to restart the connection:\n//\n//   App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class 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\n  get url() {\n    return createWebSocketURL(this._url)\n  }\n\n  send(data) {\n    return this.connection.send(data)\n  }\n\n  connect() {\n    return this.connection.open()\n  }\n\n  disconnect() {\n    return this.connection.close({allowReconnect: false})\n  }\n\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open()\n    }\n  }\n\n  addSubProtocol(subprotocol) {\n    this.subprotocols = [...this.subprotocols, subprotocol]\n  }\n}\n\nexport function createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url()\n  }\n\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\")\n    a.href = url\n    // Fix populating Location properties in IE. Otherwise, protocol will be blank.\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", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n  Connection,\n  ConnectionMonitor,\n  Consumer,\n  INTERNAL,\n  Subscription,\n  Subscriptions,\n  SubscriptionGuarantor,\n  adapters,\n  createWebSocketURL,\n  logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url)\n}\n\nexport function getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n  if (element) {\n    return element.getAttribute(\"content\")\n  }\n}\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\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[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n  try {\n    return document.execCommand(type);\n  } catch (err) {\n    return false;\n  }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n  var selectedText = select_default()(target);\n  command('cut');\n  return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n  var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n  var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n  fakeElement.style.fontSize = '12pt'; // Reset box model\n\n  fakeElement.style.border = '0';\n  fakeElement.style.padding = '0';\n  fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n  fakeElement.style.position = 'absolute';\n  fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n  var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n  fakeElement.style.top = \"\".concat(yPosition, \"px\");\n  fakeElement.setAttribute('readonly', '');\n  fakeElement.value = value;\n  return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n  var fakeElement = createFakeElement(value);\n  options.container.appendChild(fakeElement);\n  var selectedText = select_default()(fakeElement);\n  command('copy');\n  fakeElement.remove();\n  return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    container: document.body\n  };\n  var selectedText = '';\n\n  if (typeof target === 'string') {\n    selectedText = fakeCopyAction(target, options);\n  } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n    // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n    selectedText = fakeCopyAction(target.value, options);\n  } else {\n    selectedText = select_default()(target);\n    command('copy');\n  }\n\n  return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  // Defines base properties passed from constructor.\n  var _options$action = options.action,\n      action = _options$action === void 0 ? 'copy' : _options$action,\n      container = options.container,\n      target = options.target,\n      text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n  if (action !== 'copy' && action !== 'cut') {\n    throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n  } // Sets the `target` property using an element that will be have its content copied.\n\n\n  if (target !== undefined) {\n    if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n      if (action === 'copy' && target.hasAttribute('disabled')) {\n        throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n      }\n\n      if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n        throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n      }\n    } else {\n      throw new Error('Invalid \"target\" value, use a valid Element');\n    }\n  } // Define selection strategy based on `text` property.\n\n\n  if (text) {\n    return actions_copy(text, {\n      container: container\n    });\n  } // Defines which selection strategy based on `target` property.\n\n\n  if (target) {\n    return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n      container: container\n    });\n  }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n  var attribute = \"data-clipboard-\".concat(suffix);\n\n  if (!element.hasAttribute(attribute)) {\n    return;\n  }\n\n  return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n  _inherits(Clipboard, _Emitter);\n\n  var _super = _createSuper(Clipboard);\n\n  /**\n   * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n   * @param {Object} options\n   */\n  function Clipboard(trigger, options) {\n    var _this;\n\n    _classCallCheck(this, Clipboard);\n\n    _this = _super.call(this);\n\n    _this.resolveOptions(options);\n\n    _this.listenClick(trigger);\n\n    return _this;\n  }\n  /**\n   * Defines if attributes would be resolved using internal setter functions\n   * or custom functions that were passed in the constructor.\n   * @param {Object} options\n   */\n\n\n  _createClass(Clipboard, [{\n    key: \"resolveOptions\",\n    value: function resolveOptions() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n      this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n      this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n      this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n    }\n    /**\n     * Adds a click event listener to the passed trigger.\n     * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n     */\n\n  }, {\n    key: \"listenClick\",\n    value: function listenClick(trigger) {\n      var _this2 = this;\n\n      this.listener = listen_default()(trigger, 'click', function (e) {\n        return _this2.onClick(e);\n      });\n    }\n    /**\n     * Defines a new `ClipboardAction` on each click event.\n     * @param {Event} e\n     */\n\n  }, {\n    key: \"onClick\",\n    value: function onClick(e) {\n      var trigger = e.delegateTarget || e.currentTarget;\n      var action = this.action(trigger) || 'copy';\n      var text = actions_default({\n        action: action,\n        container: this.container,\n        target: this.target(trigger),\n        text: this.text(trigger)\n      }); // Fires an event based on the copy operation result.\n\n      this.emit(text ? 'success' : 'error', {\n        action: action,\n        text: text,\n        trigger: trigger,\n        clearSelection: function clearSelection() {\n          if (trigger) {\n            trigger.focus();\n          }\n\n          window.getSelection().removeAllRanges();\n        }\n      });\n    }\n    /**\n     * Default `action` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultAction\",\n    value: function defaultAction(trigger) {\n      return getAttributeValue('action', trigger);\n    }\n    /**\n     * Default `target` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultTarget\",\n    value: function defaultTarget(trigger) {\n      var selector = getAttributeValue('target', trigger);\n\n      if (selector) {\n        return document.querySelector(selector);\n      }\n    }\n    /**\n     * Allow fire programmatically a copy action\n     * @param {String|HTMLElement} target\n     * @param {Object} options\n     * @returns Text copied.\n     */\n\n  }, {\n    key: \"defaultText\",\n\n    /**\n     * Default `text` lookup function.\n     * @param {Element} trigger\n     */\n    value: function defaultText(trigger) {\n      return getAttributeValue('text', trigger);\n    }\n    /**\n     * Destroy lifecycle.\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.listener.destroy();\n    }\n  }], [{\n    key: \"copy\",\n    value: function copy(target) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        container: document.body\n      };\n      return actions_copy(target, options);\n    }\n    /**\n     * Allow fire programmatically a cut action\n     * @param {String|HTMLElement} target\n     * @returns Text cutted.\n     */\n\n  }, {\n    key: \"cut\",\n    value: function cut(target) {\n      return actions_cut(target);\n    }\n    /**\n     * Returns the support of the given action, or all actions if no action is\n     * given.\n     * @param {String} [action]\n     */\n\n  }, {\n    key: \"isSupported\",\n    value: function isSupported() {\n      var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n      var actions = typeof action === 'string' ? [action] : action;\n      var support = !!document.queryCommandSupported;\n      actions.forEach(function (action) {\n        support = support && !!document.queryCommandSupported(action);\n      });\n      return support;\n    }\n  }]);\n\n  return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n    var proto = Element.prototype;\n\n    proto.matches = proto.matchesSelector ||\n                    proto.mozMatchesSelector ||\n                    proto.msMatchesSelector ||\n                    proto.oMatchesSelector ||\n                    proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n    while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n        if (typeof element.matches === 'function' &&\n            element.matches(selector)) {\n          return element;\n        }\n        element = element.parentNode;\n    }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n    var listenerFn = listener.apply(this, arguments);\n\n    element.addEventListener(type, listenerFn, useCapture);\n\n    return {\n        destroy: function() {\n            element.removeEventListener(type, listenerFn, useCapture);\n        }\n    }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n    // Handle the regular Element usage\n    if (typeof elements.addEventListener === 'function') {\n        return _delegate.apply(null, arguments);\n    }\n\n    // Handle Element-less usage, it defaults to global delegation\n    if (typeof type === 'function') {\n        // Use `document` as the first parameter, then apply arguments\n        // This is a short way to .unshift `arguments` without running into deoptimizations\n        return _delegate.bind(null, document).apply(null, arguments);\n    }\n\n    // Handle Selector-based usage\n    if (typeof elements === 'string') {\n        elements = document.querySelectorAll(elements);\n    }\n\n    // Handle Array-like based usage\n    return Array.prototype.map.call(elements, function (element) {\n        return _delegate(element, selector, type, callback, useCapture);\n    });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n    return function(e) {\n        e.delegateTarget = closest(e.target, selector);\n\n        if (e.delegateTarget) {\n            callback.call(element, e);\n        }\n    }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n    return value !== undefined\n        && value instanceof HTMLElement\n        && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return value !== undefined\n        && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n        && ('length' in value)\n        && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n    return typeof value === 'string'\n        || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n    if (!target && !type && !callback) {\n        throw new Error('Missing required arguments');\n    }\n\n    if (!is.string(type)) {\n        throw new TypeError('Second argument must be a String');\n    }\n\n    if (!is.fn(callback)) {\n        throw new TypeError('Third argument must be a Function');\n    }\n\n    if (is.node(target)) {\n        return listenNode(target, type, callback);\n    }\n    else if (is.nodeList(target)) {\n        return listenNodeList(target, type, callback);\n    }\n    else if (is.string(target)) {\n        return listenSelector(target, type, callback);\n    }\n    else {\n        throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n    }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n    node.addEventListener(type, callback);\n\n    return {\n        destroy: function() {\n            node.removeEventListener(type, callback);\n        }\n    }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n    Array.prototype.forEach.call(nodeList, function(node) {\n        node.addEventListener(type, callback);\n    });\n\n    return {\n        destroy: function() {\n            Array.prototype.forEach.call(nodeList, function(node) {\n                node.removeEventListener(type, callback);\n            });\n        }\n    }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n    return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n    var selectedText;\n\n    if (element.nodeName === 'SELECT') {\n        element.focus();\n\n        selectedText = element.value;\n    }\n    else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n        var isReadOnly = element.hasAttribute('readonly');\n\n        if (!isReadOnly) {\n            element.setAttribute('readonly', '');\n        }\n\n        element.select();\n        element.setSelectionRange(0, element.value.length);\n\n        if (!isReadOnly) {\n            element.removeAttribute('readonly');\n        }\n\n        selectedText = element.value;\n    }\n    else {\n        if (element.hasAttribute('contenteditable')) {\n            element.focus();\n        }\n\n        var selection = window.getSelection();\n        var range = document.createRange();\n\n        range.selectNodeContents(element);\n        selection.removeAllRanges();\n        selection.addRange(range);\n\n        selectedText = selection.toString();\n    }\n\n    return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n  // Keep this empty so it's easier to inherit from\n  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n  on: function (name, callback, ctx) {\n    var e = this.e || (this.e = {});\n\n    (e[name] || (e[name] = [])).push({\n      fn: callback,\n      ctx: ctx\n    });\n\n    return this;\n  },\n\n  once: function (name, callback, ctx) {\n    var self = this;\n    function listener () {\n      self.off(name, listener);\n      callback.apply(ctx, arguments);\n    };\n\n    listener._ = callback\n    return this.on(name, listener, ctx);\n  },\n\n  emit: function (name) {\n    var data = [].slice.call(arguments, 1);\n    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n    var i = 0;\n    var len = evtArr.length;\n\n    for (i; i < len; i++) {\n      evtArr[i].fn.apply(evtArr[i].ctx, data);\n    }\n\n    return this;\n  },\n\n  off: function (name, callback) {\n    var e = this.e || (this.e = {});\n    var evts = e[name];\n    var liveEvents = [];\n\n    if (evts && callback) {\n      for (var i = 0, len = evts.length; i < len; i++) {\n        if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n          liveEvents.push(evts[i]);\n      }\n    }\n\n    // Remove event from queue to prevent memory leak\n    // Suggested by https://github.com/lazd\n    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n    (liveEvents.length)\n      ? e[name] = liveEvents\n      : delete e[name];\n\n    return this;\n  }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\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\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].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](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/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : (global = typeof globalThis !== \"undefined\" ? globalThis : global || self, \n  factory(global.ActiveStorage = {}));\n})(this, (function(exports) {\n  \"use strict\";\n  var sparkMd5 = {\n    exports: {}\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  var SparkMD5 = sparkMd5.exports;\n  const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  class 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  function getMetaValue(name) {\n    const element = findElement(document.head, `meta[name=\"${name}\"]`);\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  function 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  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    return root.querySelector(selector);\n  }\n  function 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  function 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  class 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  class 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  let id = 0;\n  class 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  function notify(object, methodName, ...messages) {\n    if (object && typeof object[methodName] == \"function\") {\n      return object[methodName](...messages);\n    }\n  }\n  class 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  const inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  class 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  const processingAttribute = \"data-direct-uploads-processing\";\n  const submitButtonsByForm = new WeakMap;\n  let started = false;\n  function 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  function 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  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n  function 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  function 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  function disable(input) {\n    input.disabled = true;\n  }\n  function enable(input) {\n    input.disabled = false;\n  }\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n  setTimeout(autostart, 1);\n  exports.DirectUpload = DirectUpload;\n  exports.DirectUploadController = DirectUploadController;\n  exports.DirectUploadsController = DirectUploadsController;\n  exports.start = start;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n}));\n", "if (!Array.prototype.find) {\n    Array.prototype.find = function(predicate) {\n        if (this === null) {\n            throw new TypeError('Array.prototype.find called on null or undefined')\n        }\n        if (typeof predicate !== 'function') {\n            throw new TypeError('predicate must be a function')\n        }\n        var list = Object(this)\n        var length = list.length >>> 0\n        var thisArg = arguments[1]\n        var value\n\n        for (var i = 0; i < length; i++) {\n            value = list[i]\n            if (predicate.call(thisArg, value, i, list)) {\n                return value\n            }\n        }\n        return undefined\n    }\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n  function CustomEvent(event, params) {\n    params = params || {\n      bubbles: false,\n      cancelable: false,\n      detail: undefined\n    }\n    var evt = document.createEvent('CustomEvent')\n    evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail)\n    return evt\n  }\n\n if (typeof window.Event !== 'undefined') {\n   CustomEvent.prototype = window.Event.prototype\n }\n\n  window.CustomEvent = CustomEvent\n}", "class TributeEvents {\n  constructor(tribute) {\n    this.tribute = tribute;\n    this.tribute.events = this;\n  }\n\n  static keys() {\n    return [\n      {\n        key: 9,\n        value: \"TAB\"\n      },\n      {\n        key: 8,\n        value: \"DELETE\"\n      },\n      {\n        key: 13,\n        value: \"ENTER\"\n      },\n      {\n        key: 27,\n        value: \"ESCAPE\"\n      },\n      {\n        key: 32,\n        value: \"SPACE\"\n      },\n      {\n        key: 38,\n        value: \"UP\"\n      },\n      {\n        key: 40,\n        value: \"DOWN\"\n      }\n    ];\n  }\n\n  bind(element) {\n    element.boundKeydown = this.keydown.bind(element, this);\n    element.boundKeyup = this.keyup.bind(element, this);\n    element.boundInput = this.input.bind(element, this);\n\n    element.addEventListener(\"keydown\", element.boundKeydown, false);\n    element.addEventListener(\"keyup\", element.boundKeyup, false);\n    element.addEventListener(\"input\", element.boundInput, false);\n  }\n\n  unbind(element) {\n    element.removeEventListener(\"keydown\", element.boundKeydown, false);\n    element.removeEventListener(\"keyup\", element.boundKeyup, false);\n    element.removeEventListener(\"input\", element.boundInput, false);\n\n    delete element.boundKeydown;\n    delete element.boundKeyup;\n    delete element.boundInput;\n  }\n\n  keydown(instance, event) {\n    if (instance.shouldDeactivate(event)) {\n      instance.tribute.isActive = false;\n      instance.tribute.hideMenu();\n    }\n\n    let element = this;\n    instance.commandEvent = false;\n\n    TributeEvents.keys().forEach(o => {\n      if (o.key === event.keyCode) {\n        instance.commandEvent = true;\n        instance.callbacks()[o.value.toLowerCase()](event, element);\n      }\n    });\n  }\n\n  input(instance, event) {\n    instance.inputEvent = true;\n    instance.keyup.call(this, instance, event);\n  }\n\n  click(instance, event) {\n    let tribute = instance.tribute;\n    if (tribute.menu && tribute.menu.contains(event.target)) {\n      let li = event.target;\n      event.preventDefault();\n      event.stopPropagation();\n      while (li.nodeName.toLowerCase() !== \"li\") {\n        li = li.parentNode;\n        if (!li || li === tribute.menu) {\n          throw new Error(\"cannot find the <li> container for the click\");\n        }\n      }\n      tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n      tribute.hideMenu();\n\n      // TODO: should fire with externalTrigger and target is outside of menu\n    } else if (tribute.current.element && !tribute.current.externalTrigger) {\n      tribute.current.externalTrigger = false;\n      setTimeout(() => tribute.hideMenu());\n    }\n  }\n\n  keyup(instance, event) {\n    if (instance.inputEvent) {\n      instance.inputEvent = false;\n    }\n    instance.updateSelection(this);\n\n    if (event.keyCode === 27) return;\n\n    if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n      instance.tribute.hasTrailingSpace = false;\n      instance.commandEvent = true;\n      instance.callbacks()[\"space\"](event, this);\n      return;\n    }\n\n    if (!instance.tribute.isActive) {\n      if (instance.tribute.autocompleteMode) {\n        instance.callbacks().triggerChar(event, this, \"\");\n      } else {\n        let keyCode = instance.getKeyCode(instance, this, event);\n\n        if (isNaN(keyCode) || !keyCode) return;\n\n        let trigger = instance.tribute.triggers().find(trigger => {\n          return trigger.charCodeAt(0) === keyCode;\n        });\n\n        if (typeof trigger !== \"undefined\") {\n          instance.callbacks().triggerChar(event, this, trigger);\n        }\n      }\n    }\n\n    if (\n      instance.tribute.current.mentionText.length <\n      instance.tribute.current.collection.menuShowMinLength\n    ) {\n      return;\n    }\n\n    if (\n      ((instance.tribute.current.trigger ||\n        instance.tribute.autocompleteMode) &&\n        instance.commandEvent === false) ||\n      (instance.tribute.isActive && event.keyCode === 8)\n    ) {\n      instance.tribute.showMenuFor(this, true);\n    }\n  }\n\n  shouldDeactivate(event) {\n    if (!this.tribute.isActive) return false;\n\n    if (this.tribute.current.mentionText.length === 0) {\n      let eventKeyPressed = false;\n      TributeEvents.keys().forEach(o => {\n        if (event.keyCode === o.key) eventKeyPressed = true;\n      });\n\n      return !eventKeyPressed;\n    }\n\n    return false;\n  }\n\n  getKeyCode(instance, el, event) {\n    let char;\n    let tribute = instance.tribute;\n    let info = tribute.range.getTriggerInfo(\n      false,\n      tribute.hasTrailingSpace,\n      true,\n      tribute.allowSpaces,\n      tribute.autocompleteMode\n    );\n\n    if (info) {\n      return info.mentionTriggerChar.charCodeAt(0);\n    } else {\n      return false;\n    }\n  }\n\n  updateSelection(el) {\n    this.tribute.current.element = el;\n    let info = this.tribute.range.getTriggerInfo(\n      false,\n      this.tribute.hasTrailingSpace,\n      true,\n      this.tribute.allowSpaces,\n      this.tribute.autocompleteMode\n    );\n\n    if (info) {\n      this.tribute.current.selectedPath = info.mentionSelectedPath;\n      this.tribute.current.mentionText = info.mentionText;\n      this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n    }\n  }\n\n  callbacks() {\n    return {\n      triggerChar: (e, el, trigger) => {\n        let tribute = this.tribute;\n        tribute.current.trigger = trigger;\n\n        let collectionItem = tribute.collection.find(item => {\n          return item.trigger === trigger;\n        });\n\n        tribute.current.collection = collectionItem;\n\n        if (\n          tribute.current.mentionText.length >=\n            tribute.current.collection.menuShowMinLength &&\n          tribute.inputEvent\n        ) {\n          tribute.showMenuFor(el, true);\n        }\n      },\n      enter: (e, el) => {\n        // choose selection\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          setTimeout(() => {\n            this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n            this.tribute.hideMenu();\n          }, 0);\n        }\n      },\n      escape: (e, el) => {\n        if (this.tribute.isActive) {\n          e.preventDefault();\n          e.stopPropagation();\n          this.tribute.isActive = false;\n          this.tribute.hideMenu();\n        }\n      },\n      tab: (e, el) => {\n        // choose first match\n        this.callbacks().enter(e, el);\n      },\n      space: (e, el) => {\n        if (this.tribute.isActive) {\n          if (this.tribute.spaceSelectsMatch) {\n            this.callbacks().enter(e, el);\n          } else if (!this.tribute.allowSpaces) {\n            e.stopPropagation();\n            setTimeout(() => {\n              this.tribute.hideMenu();\n              this.tribute.isActive = false;\n            }, 0);\n          }\n        }\n      },\n      up: (e, el) => {\n        // navigate up ul\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          let count = this.tribute.current.filteredItems.length,\n            selected = this.tribute.menuSelected;\n\n          if (count > selected && selected > 0) {\n            this.tribute.menuSelected--;\n            this.setActiveLi();\n          } else if (selected === 0) {\n            this.tribute.menuSelected = count - 1;\n            this.setActiveLi();\n            this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n          }\n        }\n      },\n      down: (e, el) => {\n        // navigate down ul\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          let count = this.tribute.current.filteredItems.length - 1,\n            selected = this.tribute.menuSelected;\n\n          if (count > selected) {\n            this.tribute.menuSelected++;\n            this.setActiveLi();\n          } else if (count === selected) {\n            this.tribute.menuSelected = 0;\n            this.setActiveLi();\n            this.tribute.menu.scrollTop = 0;\n          }\n        }\n      },\n      delete: (e, el) => {\n        if (\n          this.tribute.isActive &&\n          this.tribute.current.mentionText.length < 1\n        ) {\n          this.tribute.hideMenu();\n        } else if (this.tribute.isActive) {\n          this.tribute.showMenuFor(el);\n        }\n      }\n    };\n  }\n\n  setActiveLi(index) {\n    let lis = this.tribute.menu.querySelectorAll(\"li\"),\n      length = lis.length >>> 0;\n\n    if (index) this.tribute.menuSelected = parseInt(index);\n\n    for (let i = 0; i < length; i++) {\n      let li = lis[i];\n      if (i === this.tribute.menuSelected) {\n        li.classList.add(this.tribute.current.collection.selectClass);\n\n        let liClientRect = li.getBoundingClientRect();\n        let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n        if (liClientRect.bottom > menuClientRect.bottom) {\n          let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n          this.tribute.menu.scrollTop += scrollDistance;\n        } else if (liClientRect.top < menuClientRect.top) {\n          let scrollDistance = menuClientRect.top - liClientRect.top;\n          this.tribute.menu.scrollTop -= scrollDistance;\n        }\n      } else {\n        li.classList.remove(this.tribute.current.collection.selectClass);\n      }\n    }\n  }\n\n  getFullHeight(elem, includeMargin) {\n    let height = elem.getBoundingClientRect().height;\n\n    if (includeMargin) {\n      let style = elem.currentStyle || window.getComputedStyle(elem);\n      return (\n        height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n      );\n    }\n\n    return height;\n  }\n}\n\nexport default TributeEvents;\n", "class TributeMenuEvents {\n  constructor(tribute) {\n    this.tribute = tribute;\n    this.tribute.menuEvents = this;\n    this.menu = this.tribute.menu;\n  }\n\n  bind(menu) {\n    this.menuClickEvent = this.tribute.events.click.bind(null, this);\n    this.menuContainerScrollEvent = this.debounce(\n      () => {\n        if (this.tribute.isActive) {\n          this.tribute.showMenuFor(this.tribute.current.element, false);\n        }\n      },\n      300,\n      false\n    );\n    this.windowResizeEvent = this.debounce(\n      () => {\n        if (this.tribute.isActive) {\n          this.tribute.range.positionMenuAtCaret(true);\n        }\n      },\n      300,\n      false\n    );\n\n    // fixes IE11 issues with mousedown\n    this.tribute.range\n      .getDocument()\n      .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n    this.tribute.range\n      .getDocument()\n      .addEventListener(\"mousedown\", this.menuClickEvent, false);\n    window.addEventListener(\"resize\", this.windowResizeEvent);\n\n    if (this.menuContainer) {\n      this.menuContainer.addEventListener(\n        \"scroll\",\n        this.menuContainerScrollEvent,\n        false\n      );\n    } else {\n      window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n    }\n  }\n\n  unbind(menu) {\n    this.tribute.range\n      .getDocument()\n      .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n    this.tribute.range\n      .getDocument()\n      .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n    window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n    if (this.menuContainer) {\n      this.menuContainer.removeEventListener(\n        \"scroll\",\n        this.menuContainerScrollEvent,\n        false\n      );\n    } else {\n      window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n    }\n  }\n\n  debounce(func, wait, immediate) {\n    var timeout;\n    return () => {\n      var context = this,\n        args = arguments;\n      var later = () => {\n        timeout = null;\n        if (!immediate) func.apply(context, args);\n      };\n      var callNow = immediate && !timeout;\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n      if (callNow) func.apply(context, args);\n    };\n  }\n}\n\nexport default TributeMenuEvents;\n", "// Thanks to https://github.com/jeff-collins/ment.io\nimport \"./utils\";\n\nclass TributeRange {\n    constructor(tribute) {\n        this.tribute = tribute\n        this.tribute.range = this\n    }\n\n    getDocument() {\n        let iframe\n        if (this.tribute.current.collection) {\n            iframe = this.tribute.current.collection.iframe\n        }\n\n        if (!iframe) {\n            return document\n        }\n\n        return iframe.contentWindow.document\n    }\n\n    positionMenuAtCaret(scrollTo) {\n        let context = this.tribute.current,\n            coordinates\n\n        let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode)\n\n        if (typeof info !== 'undefined') {\n\n            if(!this.tribute.positionMenu){\n                this.tribute.menu.style.cssText = `display: block;`\n                return\n            }\n\n            if (!this.isContentEditable(context.element)) {\n                coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n                    info.mentionPosition)\n            }\n            else {\n                coordinates = this.getContentEditableCaretPosition(info.mentionPosition)\n            }\n\n            this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n                                     left: ${coordinates.left}px;\n                                     right: ${coordinates.right}px;\n                                     bottom: ${coordinates.bottom}px;\n                                     position: absolute;\n                                     display: block;`\n\n            if (coordinates.left === 'auto') {\n                this.tribute.menu.style.left = 'auto'\n            }\n\n            if (coordinates.top === 'auto') {\n                this.tribute.menu.style.top = 'auto'\n            }\n\n            if (scrollTo) this.scrollIntoView()\n\n            window.setTimeout(() => {\n                let menuDimensions = {\n                   width: this.tribute.menu.offsetWidth,\n                   height: this.tribute.menu.offsetHeight\n                }\n                let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n\n                let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right)\n                let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom)\n                if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n                    this.tribute.menu.style.cssText = 'display: none'\n                    this.positionMenuAtCaret(scrollTo)\n                }\n            }, 0)\n\n        } else {\n            this.tribute.menu.style.cssText = 'display: none'\n        }\n    }\n\n    get menuContainerIsBody() {\n        return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n    }\n\n\n    selectElement(targetElement, path, offset) {\n        let range\n        let elem = targetElement\n\n        if (path) {\n            for (var i = 0; i < path.length; i++) {\n                elem = elem.childNodes[path[i]]\n                if (elem === undefined) {\n                    return\n                }\n                while (elem.length < offset) {\n                    offset -= elem.length\n                    elem = elem.nextSibling\n                }\n                if (elem.childNodes.length === 0 && !elem.length) {\n                    elem = elem.previousSibling\n                }\n            }\n        }\n        let sel = this.getWindowSelection()\n\n        range = this.getDocument().createRange()\n        range.setStart(elem, offset)\n        range.setEnd(elem, offset)\n        range.collapse(true)\n\n        try {\n            sel.removeAllRanges()\n        } catch (error) {}\n\n        sel.addRange(range)\n        targetElement.focus()\n    }\n\n    replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n        let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode)\n\n        if (info !== undefined) {\n            let context = this.tribute.current\n            let replaceEvent = new CustomEvent('tribute-replaced', {\n                detail: {\n                    item: item,\n                    instance: context,\n                    context: info,\n                    event: originalEvent,\n                }\n            })\n\n            if (!this.isContentEditable(context.element)) {\n                let myField = this.tribute.current.element\n                let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n                    ? this.tribute.replaceTextSuffix\n                    : ' '\n                text += textSuffix\n                let startPos = info.mentionPosition\n                let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length\n                if (!this.tribute.autocompleteMode) {\n                    endPos += info.mentionTriggerChar.length - 1\n                }\n                myField.value = myField.value.substring(0, startPos) + text +\n                    myField.value.substring(endPos, myField.value.length)\n                myField.selectionStart = startPos + text.length\n                myField.selectionEnd = startPos + text.length\n            } else {\n                // add a space to the end of the pasted text\n                let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n                    ? this.tribute.replaceTextSuffix\n                    : '\\xA0'\n                text += textSuffix\n                let endPos = info.mentionPosition + info.mentionText.length\n                if (!this.tribute.autocompleteMode) {\n                    endPos += info.mentionTriggerChar.length\n                }\n                this.pasteHtml(text, info.mentionPosition, endPos)\n            }\n\n            context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }))\n            context.element.dispatchEvent(replaceEvent)\n        }\n    }\n\n    pasteHtml(html, startPos, endPos) {\n        let range, sel\n        sel = this.getWindowSelection()\n        range = this.getDocument().createRange()\n        range.setStart(sel.anchorNode, startPos)\n        range.setEnd(sel.anchorNode, endPos)\n        range.deleteContents()\n\n        let el = this.getDocument().createElement('div')\n        el.innerHTML = html\n        let frag = this.getDocument().createDocumentFragment(),\n            node, lastNode\n        while ((node = el.firstChild)) {\n            lastNode = frag.appendChild(node)\n        }\n        range.insertNode(frag)\n\n        // Preserve the selection\n        if (lastNode) {\n            range = range.cloneRange()\n            range.setStartAfter(lastNode)\n            range.collapse(true)\n            sel.removeAllRanges()\n            sel.addRange(range)\n        }\n    }\n\n    getWindowSelection() {\n        if (this.tribute.collection.iframe) {\n            return this.tribute.collection.iframe.contentWindow.getSelection()\n        }\n\n        return window.getSelection()\n    }\n\n    getNodePositionInParent(element) {\n        if (element.parentNode === null) {\n            return 0\n        }\n\n        for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n            let node = element.parentNode.childNodes[i]\n\n            if (node === element) {\n                return i\n            }\n        }\n    }\n\n    getContentEditableSelectedPath(ctx) {\n        let sel = this.getWindowSelection()\n        let selected = sel.anchorNode\n        let path = []\n        let offset\n\n        if (selected != null) {\n            let i\n            let ce = selected.contentEditable\n            while (selected !== null && ce !== 'true') {\n                i = this.getNodePositionInParent(selected)\n                path.push(i)\n                selected = selected.parentNode\n                if (selected !== null) {\n                    ce = selected.contentEditable\n                }\n            }\n            path.reverse()\n\n            // getRangeAt may not exist, need alternative\n            offset = sel.getRangeAt(0).startOffset\n\n            return {\n                selected: selected,\n                path: path,\n                offset: offset\n            }\n        }\n    }\n\n    getTextPrecedingCurrentSelection() {\n        let context = this.tribute.current,\n            text = ''\n\n        if (!this.isContentEditable(context.element)) {\n            let textComponent = this.tribute.current.element;\n            if (textComponent) {\n                let startPos = textComponent.selectionStart\n                if (textComponent.value && startPos >= 0) {\n                    text = textComponent.value.substring(0, startPos)\n                }\n            }\n\n        } else {\n            let selectedElem = this.getWindowSelection().anchorNode\n\n            if (selectedElem != null) {\n                let workingNodeContent = selectedElem.textContent\n                let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset\n\n                if (workingNodeContent && selectStartOffset >= 0) {\n                    text = workingNodeContent.substring(0, selectStartOffset)\n                }\n            }\n        }\n\n        return text\n    }\n\n    getLastWordInText(text) {\n        text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n        let wordsArray = text.split(/\\s+/);\n        let worldsCount = wordsArray.length - 1\n        return wordsArray[worldsCount].trim()\n    }\n\n    getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n        let ctx = this.tribute.current\n        let selected, path, offset\n\n        if (!this.isContentEditable(ctx.element)) {\n            selected = this.tribute.current.element\n        } else {\n            let selectionInfo = this.getContentEditableSelectedPath(ctx)\n\n            if (selectionInfo) {\n                selected = selectionInfo.selected\n                path = selectionInfo.path\n                offset = selectionInfo.offset\n            }\n        }\n\n        let effectiveRange = this.getTextPrecedingCurrentSelection()\n        let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange)\n\n        if (isAutocomplete) {\n            return {\n                mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n                mentionText: lastWordOfEffectiveRange,\n                mentionSelectedElement: selected,\n                mentionSelectedPath: path,\n                mentionSelectedOffset: offset\n            }\n        }\n\n        if (effectiveRange !== undefined && effectiveRange !== null) {\n            let mostRecentTriggerCharPos = -1\n            let triggerChar\n\n            this.tribute.collection.forEach(config => {\n                let c = config.trigger\n                let idx = config.requireLeadingSpace ?\n                    this.lastIndexWithLeadingSpace(effectiveRange, c) :\n                    effectiveRange.lastIndexOf(c)\n\n                if (idx > mostRecentTriggerCharPos) {\n                    mostRecentTriggerCharPos = idx\n                    triggerChar = c\n                    requireLeadingSpace = config.requireLeadingSpace\n                }\n            })\n\n            if (mostRecentTriggerCharPos >= 0 &&\n                (\n                    mostRecentTriggerCharPos === 0 ||\n                    !requireLeadingSpace ||\n                    /[\\xA0\\s]/g.test(\n                        effectiveRange.substring(\n                            mostRecentTriggerCharPos - 1,\n                            mostRecentTriggerCharPos)\n                    )\n                )\n            ) {\n                let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n                    effectiveRange.length)\n\n                triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length)\n                let firstSnippetChar = currentTriggerSnippet.substring(0, 1)\n                let leadingSpace = currentTriggerSnippet.length > 0 &&\n                    (\n                        firstSnippetChar === ' ' ||\n                        firstSnippetChar === '\\xA0'\n                    )\n                if (hasTrailingSpace) {\n                    currentTriggerSnippet = currentTriggerSnippet.trim()\n                }\n\n                let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n                this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n                if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n                    return {\n                        mentionPosition: mostRecentTriggerCharPos,\n                        mentionText: currentTriggerSnippet,\n                        mentionSelectedElement: selected,\n                        mentionSelectedPath: path,\n                        mentionSelectedOffset: offset,\n                        mentionTriggerChar: triggerChar\n                    }\n                }\n            }\n        }\n    }\n\n    lastIndexWithLeadingSpace (str, trigger) {\n        let reversedStr = str.split('').reverse().join('')\n        let index = -1\n\n        for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n            let firstChar = cidx === str.length - 1\n            let leadingSpace = /\\s/.test(reversedStr[cidx + 1])\n\n            let match = true\n            for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n              if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n                match = false\n                break\n              }\n            }\n\n            if (match && (firstChar || leadingSpace)) {\n                index = str.length - 1 - cidx\n                break\n            }\n        }\n\n        return index\n    }\n\n    isContentEditable(element) {\n        return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n    }\n\n    isMenuOffScreen(coordinates, menuDimensions) {\n        let windowWidth = window.innerWidth\n        let windowHeight = window.innerHeight\n        let doc = document.documentElement\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0)\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n\n        let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height\n        let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width\n        let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height\n        let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width\n\n        return {\n            top: menuTop < Math.floor(windowTop),\n            right: menuRight > Math.ceil(windowLeft + windowWidth),\n            bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n            left: menuLeft < Math.floor(windowLeft)\n        }\n    }\n\n    getMenuDimensions() {\n        // Width of the menu depends of its contents and position\n        // We must check what its width would be without any obstruction\n        // This way, we can achieve good positioning for flipping the menu\n        let dimensions = {\n            width: null,\n            height: null\n        }\n\n        this.tribute.menu.style.cssText = `top: 0px;\n                                 left: 0px;\n                                 position: fixed;\n                                 display: block;\n                                 visibility; hidden;`\n       dimensions.width = this.tribute.menu.offsetWidth\n       dimensions.height = this.tribute.menu.offsetHeight\n\n       this.tribute.menu.style.cssText = `display: none;`\n\n       return dimensions\n    }\n\n    getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n        let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n            'overflowY', 'borderTopWidth', 'borderRightWidth',\n            'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n            'paddingRight', 'paddingBottom', 'paddingLeft',\n            'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n            'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n            'textAlign', 'textTransform', 'textIndent',\n            'textDecoration', 'letterSpacing', 'wordSpacing'\n        ]\n\n        let isFirefox = (window.mozInnerScreenX !== null)\n\n        let div = this.getDocument().createElement('div')\n        div.id = 'input-textarea-caret-position-mirror-div'\n        this.getDocument().body.appendChild(div)\n\n        let style = div.style\n        let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle\n\n        style.whiteSpace = 'pre-wrap'\n        if (element.nodeName !== 'INPUT') {\n            style.wordWrap = 'break-word'\n        }\n\n        // position off-screen\n        style.position = 'absolute'\n        style.visibility = 'hidden'\n\n        // transfer the element's properties to the div\n        properties.forEach(prop => {\n            style[prop] = computed[prop]\n        })\n\n        if (isFirefox) {\n            style.width = `${(parseInt(computed.width) - 2)}px`\n            if (element.scrollHeight > parseInt(computed.height))\n                style.overflowY = 'scroll'\n        } else {\n            style.overflow = 'hidden'\n        }\n\n        div.textContent = element.value.substring(0, position)\n\n        if (element.nodeName === 'INPUT') {\n            div.textContent = div.textContent.replace(/\\s/g, ' ')\n        }\n\n        let span = this.getDocument().createElement('span')\n        span.textContent = element.value.substring(position) || '.'\n        div.appendChild(span)\n\n        let rect = element.getBoundingClientRect()\n        let doc = document.documentElement\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0)\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n\n        let top = 0;\n        let left = 0;\n        if (this.menuContainerIsBody) {\n          top = rect.top;\n          left = rect.left;\n        }\n\n        let coordinates = {\n            top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n            left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n        }\n\n        let windowWidth = window.innerWidth\n        let windowHeight = window.innerHeight\n\n        let menuDimensions = this.getMenuDimensions()\n        let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n\n        if (menuIsOffScreen.right) {\n            coordinates.right = windowWidth - coordinates.left\n            coordinates.left = 'auto'\n        }\n\n        let parentHeight = this.tribute.menuContainer\n            ? this.tribute.menuContainer.offsetHeight\n            : this.getDocument().body.offsetHeight\n\n        if (menuIsOffScreen.bottom) {\n            let parentRect = this.tribute.menuContainer\n                ? this.tribute.menuContainer.getBoundingClientRect()\n                : this.getDocument().body.getBoundingClientRect()\n            let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top)\n\n            coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop)\n            coordinates.top = 'auto'\n        }\n\n        menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n        if (menuIsOffScreen.left) {\n            coordinates.left = windowWidth > menuDimensions.width\n                ? windowLeft + windowWidth - menuDimensions.width\n                : windowLeft\n            delete coordinates.right\n        }\n        if (menuIsOffScreen.top) {\n            coordinates.top = windowHeight > menuDimensions.height\n                ? windowTop + windowHeight - menuDimensions.height\n                : windowTop\n            delete coordinates.bottom\n        }\n\n        this.getDocument().body.removeChild(div)\n        return coordinates\n    }\n\n    getContentEditableCaretPosition(selectedNodePosition) {\n        let range\n        let sel = this.getWindowSelection()\n\n        range = this.getDocument().createRange()\n        range.setStart(sel.anchorNode, selectedNodePosition)\n        range.setEnd(sel.anchorNode, selectedNodePosition)\n\n        range.collapse(false)\n\n        let rect = range.getBoundingClientRect()\n        let doc = document.documentElement\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0)\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n\n        let left = rect.left\n        let top = rect.top\n\n        let coordinates = {\n            left: left + windowLeft,\n            top: top + rect.height + windowTop\n        }\n        let windowWidth = window.innerWidth\n        let windowHeight = window.innerHeight\n\n        let menuDimensions = this.getMenuDimensions()\n        let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n\n        if (menuIsOffScreen.right) {\n            coordinates.left = 'auto'\n            coordinates.right = windowWidth - rect.left - windowLeft\n        }\n\n        let parentHeight = this.tribute.menuContainer\n            ? this.tribute.menuContainer.offsetHeight\n            : this.getDocument().body.offsetHeight\n\n        if (menuIsOffScreen.bottom) {\n            let parentRect = this.tribute.menuContainer\n                ? this.tribute.menuContainer.getBoundingClientRect()\n                : this.getDocument().body.getBoundingClientRect()\n            let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top)\n\n            coordinates.top = 'auto'\n            coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top)\n        }\n\n        menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n        if (menuIsOffScreen.left) {\n            coordinates.left = windowWidth > menuDimensions.width\n                ? windowLeft + windowWidth - menuDimensions.width\n                : windowLeft\n            delete coordinates.right\n        }\n        if (menuIsOffScreen.top) {\n            coordinates.top = windowHeight > menuDimensions.height\n                ? windowTop + windowHeight - menuDimensions.height\n                : windowTop\n            delete coordinates.bottom\n        }\n\n        if (!this.menuContainerIsBody) {\n            coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left\n            coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top\n        }\n\n        return coordinates\n    }\n\n    scrollIntoView(elem) {\n        let reasonableBuffer = 20,\n            clientRect\n        let maxScrollDisplacement = 100\n        let e = this.menu\n\n        if (typeof e === 'undefined') return;\n\n        while (clientRect === undefined || clientRect.height === 0) {\n            clientRect = e.getBoundingClientRect()\n\n            if (clientRect.height === 0) {\n                e = e.childNodes[0]\n                if (e === undefined || !e.getBoundingClientRect) {\n                    return\n                }\n            }\n        }\n\n        let elemTop = clientRect.top\n        let elemBottom = elemTop + clientRect.height\n\n        if (elemTop < 0) {\n            window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer)\n        } else if (elemBottom > window.innerHeight) {\n            let maxY = window.pageYOffset + clientRect.top - reasonableBuffer\n\n            if (maxY - window.pageYOffset > maxScrollDisplacement) {\n                maxY = window.pageYOffset + maxScrollDisplacement\n            }\n\n            let targetY = window.pageYOffset - (window.innerHeight - elemBottom)\n\n            if (targetY > maxY) {\n                targetY = maxY\n            }\n\n            window.scrollTo(0, targetY)\n        }\n    }\n}\n\n\nexport default TributeRange;\n", "// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n    constructor(tribute) {\n        this.tribute = tribute\n        this.tribute.search = this\n    }\n\n    simpleFilter(pattern, array) {\n        return array.filter(string => {\n            return this.test(pattern, string)\n        })\n    }\n\n    test(pattern, string) {\n        return this.match(pattern, string) !== null\n    }\n\n    match(pattern, string, opts) {\n        opts = opts || {}\n        let patternIdx = 0,\n            result = [],\n            len = string.length,\n            totalScore = 0,\n            currScore = 0,\n            pre = opts.pre || '',\n            post = opts.post || '',\n            compareString = opts.caseSensitive && string || string.toLowerCase(),\n            ch, compareChar\n\n        if (opts.skip) {\n            return {rendered: string, score: 0}\n        }\n\n        pattern = opts.caseSensitive && pattern || pattern.toLowerCase()\n\n        let patternCache = this.traverse(compareString, pattern, 0, 0, [])\n        if (!patternCache) {\n            return null\n        }\n        return {\n            rendered: this.render(string, patternCache.cache, pre, post),\n            score: patternCache.score\n        }\n    }\n\n    traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n        // if the pattern search at end\n        if (pattern.length === patternIndex) {\n\n            // calculate score and copy the cache containing the indices where it's found\n            return {\n                score: this.calculateScore(patternCache),\n                cache: patternCache.slice()\n            }\n        }\n\n        // if string at end or remaining pattern > remaining string\n        if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n            return undefined\n        }\n\n        let c = pattern[patternIndex]\n        let index = string.indexOf(c, stringIndex)\n        let best, temp\n\n        while (index > -1) {\n            patternCache.push(index)\n            temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache)\n            patternCache.pop()\n\n            // if downstream traversal failed, return best answer so far\n            if (!temp) {\n                return best\n            }\n\n            if (!best || best.score < temp.score) {\n                best = temp\n            }\n\n            index = string.indexOf(c, index + 1)\n        }\n\n        return best\n    }\n\n    calculateScore(patternCache) {\n        let score = 0\n        let temp = 1\n\n        patternCache.forEach((index, i) => {\n            if (i > 0) {\n                if (patternCache[i - 1] + 1 === index) {\n                    temp += temp + 1\n                }\n                else {\n                    temp = 1\n                }\n            }\n\n            score += temp\n        })\n\n        return score\n    }\n\n    render(string, indices, pre, post) {\n        var rendered = string.substring(0, indices[0])\n\n        indices.forEach((index, i) => {\n            rendered += pre + string[index] + post +\n                string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length)\n        })\n\n        return rendered\n    }\n\n    filter(pattern, arr, opts) {\n        opts = opts || {}\n        return arr\n            .reduce((prev, element, idx, arr) => {\n                let str = element\n\n                if (opts.extract) {\n                    str = opts.extract(element)\n\n                    if (!str) { // take care of undefineds / nulls / etc.\n                        str = ''\n                    }\n                }\n\n                let rendered = this.match(pattern, str, opts)\n\n                if (rendered != null) {\n                    prev[prev.length] = {\n                        string: rendered.rendered,\n                        score: rendered.score,\n                        index: idx,\n                        original: element\n                    }\n                }\n\n                return prev\n            }, [])\n\n        .sort((a, b) => {\n            let compare = b.score - a.score\n            if (compare) return compare\n            return a.index - b.index\n        })\n    }\n}\n\nexport default TributeSearch;\n", "import \"./utils\";\nimport TributeEvents from \"./TributeEvents\";\nimport TributeMenuEvents from \"./TributeMenuEvents\";\nimport TributeRange from \"./TributeRange\";\nimport TributeSearch from \"./TributeSearch\";\n\nclass Tribute {\n  constructor({\n    values = null,\n    iframe = null,\n    selectClass = \"highlight\",\n    containerClass = \"tribute-container\",\n    itemClass = \"\",\n    trigger = \"@\",\n    autocompleteMode = false,\n    selectTemplate = null,\n    menuItemTemplate = null,\n    lookup = \"key\",\n    fillAttr = \"value\",\n    collection = null,\n    menuContainer = null,\n    noMatchTemplate = null,\n    requireLeadingSpace = true,\n    allowSpaces = false,\n    replaceTextSuffix = null,\n    positionMenu = true,\n    spaceSelectsMatch = false,\n    searchOpts = {},\n    menuItemLimit = null,\n    menuShowMinLength = 0\n  }) {\n    this.autocompleteMode = autocompleteMode;\n    this.menuSelected = 0;\n    this.current = {};\n    this.inputEvent = false;\n    this.isActive = false;\n    this.menuContainer = menuContainer;\n    this.allowSpaces = allowSpaces;\n    this.replaceTextSuffix = replaceTextSuffix;\n    this.positionMenu = positionMenu;\n    this.hasTrailingSpace = false;\n    this.spaceSelectsMatch = spaceSelectsMatch;\n\n    if (this.autocompleteMode) {\n      trigger = \"\";\n      allowSpaces = false;\n    }\n\n    if (values) {\n      this.collection = [\n        {\n          // symbol that starts the lookup\n          trigger: trigger,\n\n          // is it wrapped in an iframe\n          iframe: iframe,\n\n          // class applied to selected item\n          selectClass: selectClass,\n\n          // class applied to the Container\n          containerClass: containerClass,\n\n          // class applied to each item\n          itemClass: itemClass,\n\n          // function called on select that retuns the content to insert\n          selectTemplate: (\n            selectTemplate || Tribute.defaultSelectTemplate\n          ).bind(this),\n\n          // function called that returns content for an item\n          menuItemTemplate: (\n            menuItemTemplate || Tribute.defaultMenuItemTemplate\n          ).bind(this),\n\n          // function called when menu is empty, disables hiding of menu.\n          noMatchTemplate: (t => {\n            if (typeof t === \"string\") {\n              if (t.trim() === \"\") return null;\n              return t;\n            }\n            if (typeof t === \"function\") {\n              return t.bind(this);\n            }\n\n            return (\n              noMatchTemplate ||\n              function() {\n                return \"<li>No Match Found!</li>\";\n              }.bind(this)\n            );\n          })(noMatchTemplate),\n\n          // column to search against in the object\n          lookup: lookup,\n\n          // column that contains the content to insert by default\n          fillAttr: fillAttr,\n\n          // array of objects or a function returning an array of objects\n          values: values,\n\n          requireLeadingSpace: requireLeadingSpace,\n\n          searchOpts: searchOpts,\n\n          menuItemLimit: menuItemLimit,\n\n          menuShowMinLength: menuShowMinLength\n        }\n      ];\n    } else if (collection) {\n      if (this.autocompleteMode)\n        console.warn(\n          \"Tribute in autocomplete mode does not work for collections\"\n        );\n      this.collection = collection.map(item => {\n        return {\n          trigger: item.trigger || trigger,\n          iframe: item.iframe || iframe,\n          selectClass: item.selectClass || selectClass,\n          containerClass: item.containerClass || containerClass,\n          itemClass: item.itemClass || itemClass,\n          selectTemplate: (\n            item.selectTemplate || Tribute.defaultSelectTemplate\n          ).bind(this),\n          menuItemTemplate: (\n            item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n          ).bind(this),\n          // function called when menu is empty, disables hiding of menu.\n          noMatchTemplate: (t => {\n            if (typeof t === \"string\") {\n              if (t.trim() === \"\") return null;\n              return t;\n            }\n            if (typeof t === \"function\") {\n              return t.bind(this);\n            }\n\n            return (\n              noMatchTemplate ||\n              function() {\n                return \"<li>No Match Found!</li>\";\n              }.bind(this)\n            );\n          })(noMatchTemplate),\n          lookup: item.lookup || lookup,\n          fillAttr: item.fillAttr || fillAttr,\n          values: item.values,\n          requireLeadingSpace: item.requireLeadingSpace,\n          searchOpts: item.searchOpts || searchOpts,\n          menuItemLimit: item.menuItemLimit || menuItemLimit,\n          menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n        };\n      });\n    } else {\n      throw new Error(\"[Tribute] No collection specified.\");\n    }\n\n    new TributeRange(this);\n    new TributeEvents(this);\n    new TributeMenuEvents(this);\n    new TributeSearch(this);\n  }\n\n  get isActive() {\n    return this._isActive;\n  }\n\n  set isActive(val) {\n    if (this._isActive != val) {\n      this._isActive = val;\n      if (this.current.element) {\n        let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n        this.current.element.dispatchEvent(noMatchEvent);\n      }\n    }\n  }\n\n  static defaultSelectTemplate(item) {\n    if (typeof item === \"undefined\")\n      return `${this.current.collection.trigger}${this.current.mentionText}`;\n    if (this.range.isContentEditable(this.current.element)) {\n      return (\n        '<span class=\"tribute-mention\">' +\n        (this.current.collection.trigger +\n          item.original[this.current.collection.fillAttr]) +\n        \"</span>\"\n      );\n    }\n\n    return (\n      this.current.collection.trigger +\n      item.original[this.current.collection.fillAttr]\n    );\n  }\n\n  static defaultMenuItemTemplate(matchItem) {\n    return matchItem.string;\n  }\n\n  static inputTypes() {\n    return [\"TEXTAREA\", \"INPUT\"];\n  }\n\n  triggers() {\n    return this.collection.map(config => {\n      return config.trigger;\n    });\n  }\n\n  attach(el) {\n    if (!el) {\n      throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n    }\n\n    // Check if it is a jQuery collection\n    if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n      el = el.get();\n    }\n\n    // Is el an Array/Array-like object?\n    if (\n      el.constructor === NodeList ||\n      el.constructor === HTMLCollection ||\n      el.constructor === Array\n    ) {\n      let length = el.length;\n      for (var i = 0; i < length; ++i) {\n        this._attach(el[i]);\n      }\n    } else {\n      this._attach(el);\n    }\n  }\n\n  _attach(el) {\n    if (el.hasAttribute(\"data-tribute\")) {\n      console.warn(\"Tribute was already bound to \" + el.nodeName);\n    }\n\n    this.ensureEditable(el);\n    this.events.bind(el);\n    el.setAttribute(\"data-tribute\", true);\n  }\n\n  ensureEditable(element) {\n    if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n      if (element.contentEditable) {\n        element.contentEditable = true;\n      } else {\n        throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n      }\n    }\n  }\n\n  createMenu(containerClass) {\n    let wrapper = this.range.getDocument().createElement(\"div\"),\n      ul = this.range.getDocument().createElement(\"ul\");\n    wrapper.className = containerClass;\n    wrapper.appendChild(ul);\n\n    if (this.menuContainer) {\n      return this.menuContainer.appendChild(wrapper);\n    }\n\n    return this.range.getDocument().body.appendChild(wrapper);\n  }\n\n  showMenuFor(element, scrollTo) {\n    // Only proceed if menu isn't already shown for the current element & mentionText\n    if (\n      this.isActive &&\n      this.current.element === element &&\n      this.current.mentionText === this.currentMentionTextSnapshot\n    ) {\n      return;\n    }\n    this.currentMentionTextSnapshot = this.current.mentionText;\n\n    // create the menu if it doesn't exist.\n    if (!this.menu) {\n      this.menu = this.createMenu(this.current.collection.containerClass);\n      element.tributeMenu = this.menu;\n      this.menuEvents.bind(this.menu);\n    }\n\n    this.isActive = true;\n    this.menuSelected = 0;\n\n    if (!this.current.mentionText) {\n      this.current.mentionText = \"\";\n    }\n\n    const processValues = values => {\n      // Tribute may not be active any more by the time the value callback returns\n      if (!this.isActive) {\n        return;\n      }\n\n      let items = this.search.filter(this.current.mentionText, values, {\n        pre: this.current.collection.searchOpts.pre || \"<span>\",\n        post: this.current.collection.searchOpts.post || \"</span>\",\n        skip: this.current.collection.searchOpts.skip,\n        extract: el => {\n          if (typeof this.current.collection.lookup === \"string\") {\n            return el[this.current.collection.lookup];\n          } else if (typeof this.current.collection.lookup === \"function\") {\n            return this.current.collection.lookup(el, this.current.mentionText);\n          } else {\n            throw new Error(\n              \"Invalid lookup attribute, lookup must be string or function.\"\n            );\n          }\n        }\n      });\n\n      if (this.current.collection.menuItemLimit) {\n        items = items.slice(0, this.current.collection.menuItemLimit);\n      }\n\n      this.current.filteredItems = items;\n\n      let ul = this.menu.querySelector(\"ul\");\n\n      this.range.positionMenuAtCaret(scrollTo);\n\n      if (!items.length) {\n        let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n          detail: this.menu\n        });\n        this.current.element.dispatchEvent(noMatchEvent);\n        if (\n          (typeof this.current.collection.noMatchTemplate === \"function\" &&\n            !this.current.collection.noMatchTemplate()) ||\n          !this.current.collection.noMatchTemplate\n        ) {\n          this.hideMenu();\n        } else {\n          typeof this.current.collection.noMatchTemplate === \"function\"\n            ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n            : (ul.innerHTML = this.current.collection.noMatchTemplate);\n        }\n\n        return;\n      }\n\n      ul.innerHTML = \"\";\n      let fragment = this.range.getDocument().createDocumentFragment();\n\n      items.forEach((item, index) => {\n        let li = this.range.getDocument().createElement(\"li\");\n        li.setAttribute(\"data-index\", index);\n        li.className = this.current.collection.itemClass;\n        li.addEventListener(\"mousemove\", e => {\n          let [li, index] = this._findLiTarget(e.target);\n          if (e.movementY !== 0) {\n            this.events.setActiveLi(index);\n          }\n        });\n        if (this.menuSelected === index) {\n          li.classList.add(this.current.collection.selectClass);\n        }\n        li.innerHTML = this.current.collection.menuItemTemplate(item);\n        fragment.appendChild(li);\n      });\n      ul.appendChild(fragment);\n    };\n\n    if (typeof this.current.collection.values === \"function\") {\n      this.current.collection.values(this.current.mentionText, processValues);\n    } else {\n      processValues(this.current.collection.values);\n    }\n  }\n\n  _findLiTarget(el) {\n    if (!el) return [];\n    const index = el.getAttribute(\"data-index\");\n    return !index ? this._findLiTarget(el.parentNode) : [el, index];\n  }\n\n  showMenuForCollection(element, collectionIndex) {\n    if (element !== document.activeElement) {\n      this.placeCaretAtEnd(element);\n    }\n\n    this.current.collection = this.collection[collectionIndex || 0];\n    this.current.externalTrigger = true;\n    this.current.element = element;\n\n    if (element.isContentEditable)\n      this.insertTextAtCursor(this.current.collection.trigger);\n    else this.insertAtCaret(element, this.current.collection.trigger);\n\n    this.showMenuFor(element);\n  }\n\n  // TODO: make sure this works for inputs/textareas\n  placeCaretAtEnd(el) {\n    el.focus();\n    if (\n      typeof window.getSelection != \"undefined\" &&\n      typeof document.createRange != \"undefined\"\n    ) {\n      var range = document.createRange();\n      range.selectNodeContents(el);\n      range.collapse(false);\n      var sel = window.getSelection();\n      sel.removeAllRanges();\n      sel.addRange(range);\n    } else if (typeof document.body.createTextRange != \"undefined\") {\n      var textRange = document.body.createTextRange();\n      textRange.moveToElementText(el);\n      textRange.collapse(false);\n      textRange.select();\n    }\n  }\n\n  // for contenteditable\n  insertTextAtCursor(text) {\n    var sel, range, html;\n    sel = window.getSelection();\n    range = sel.getRangeAt(0);\n    range.deleteContents();\n    var textNode = document.createTextNode(text);\n    range.insertNode(textNode);\n    range.selectNodeContents(textNode);\n    range.collapse(false);\n    sel.removeAllRanges();\n    sel.addRange(range);\n  }\n\n  // for regular inputs\n  insertAtCaret(textarea, text) {\n    var scrollPos = textarea.scrollTop;\n    var caretPos = textarea.selectionStart;\n\n    var front = textarea.value.substring(0, caretPos);\n    var back = textarea.value.substring(\n      textarea.selectionEnd,\n      textarea.value.length\n    );\n    textarea.value = front + text + back;\n    caretPos = caretPos + text.length;\n    textarea.selectionStart = caretPos;\n    textarea.selectionEnd = caretPos;\n    textarea.focus();\n    textarea.scrollTop = scrollPos;\n  }\n\n  hideMenu() {\n    if (this.menu) {\n      this.menu.style.cssText = \"display: none;\";\n      this.isActive = false;\n      this.menuSelected = 0;\n      this.current = {};\n    }\n  }\n\n  selectItemAtIndex(index, originalEvent) {\n    index = parseInt(index);\n    if (typeof index !== \"number\" || isNaN(index)) return;\n    let item = this.current.filteredItems[index];\n    let content = this.current.collection.selectTemplate(item);\n    if (content !== null) this.replaceText(content, originalEvent, item);\n  }\n\n  replaceText(content, originalEvent, item) {\n    this.range.replaceTriggerText(content, true, true, originalEvent, item);\n  }\n\n  _append(collection, newValues, replace) {\n    if (typeof collection.values === \"function\") {\n      throw new Error(\"Unable to append to values, as it is a function.\");\n    } else if (!replace) {\n      collection.values = collection.values.concat(newValues);\n    } else {\n      collection.values = newValues;\n    }\n  }\n\n  append(collectionIndex, newValues, replace) {\n    let index = parseInt(collectionIndex);\n    if (typeof index !== \"number\")\n      throw new Error(\"please provide an index for the collection to update.\");\n\n    let collection = this.collection[index];\n\n    this._append(collection, newValues, replace);\n  }\n\n  appendCurrent(newValues, replace) {\n    if (this.isActive) {\n      this._append(this.current.collection, newValues, replace);\n    } else {\n      throw new Error(\n        \"No active state. Please use append instead and pass an index.\"\n      );\n    }\n  }\n\n  detach(el) {\n    if (!el) {\n      throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n    }\n\n    // Check if it is a jQuery collection\n    if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n      el = el.get();\n    }\n\n    // Is el an Array/Array-like object?\n    if (\n      el.constructor === NodeList ||\n      el.constructor === HTMLCollection ||\n      el.constructor === Array\n    ) {\n      let length = el.length;\n      for (var i = 0; i < length; ++i) {\n        this._detach(el[i]);\n      }\n    } else {\n      this._detach(el);\n    }\n  }\n\n  _detach(el) {\n    this.events.unbind(el);\n    if (el.tributeMenu) {\n      this.menuEvents.unbind(el.tributeMenu);\n    }\n\n    setTimeout(() => {\n      el.removeAttribute(\"data-tribute\");\n      this.isActive = false;\n      if (el.tributeMenu) {\n        el.tributeMenu.remove();\n      }\n    });\n  }\n}\n\nexport default Tribute;\n", "const PI_OVER_180 = Math.PI / 180;\nfunction detectBrowser() {\n    return (typeof window !== 'undefined' &&\n        ({}.toString.call(window) === '[object Window]' ||\n            {}.toString.call(window) === '[object global]'));\n}\nexport const glob = typeof global !== 'undefined'\n    ? global\n    : typeof window !== 'undefined'\n        ? window\n        : typeof WorkerGlobalScope !== 'undefined'\n            ? self\n            : {};\nexport const Konva = {\n    _global: glob,\n    version: '10.3.0',\n    isBrowser: detectBrowser(),\n    isUnminified: /param/.test(function (param) { }.toString()),\n    dblClickWindow: 400,\n    getAngle(angle) {\n        return Konva.angleDeg ? angle * PI_OVER_180 : angle;\n    },\n    enableTrace: false,\n    pointerEventsEnabled: true,\n    autoDrawEnabled: true,\n    hitOnDragEnabled: false,\n    capturePointerEventsEnabled: false,\n    _mouseListenClick: false,\n    _touchListenClick: false,\n    _pointerListenClick: false,\n    _mouseInDblClickWindow: false,\n    _touchInDblClickWindow: false,\n    _pointerInDblClickWindow: false,\n    _mouseDblClickPointerId: null,\n    _touchDblClickPointerId: null,\n    _pointerDblClickPointerId: null,\n    _renderBackend: 'web',\n    legacyTextRendering: false,\n    pixelRatio: (typeof window !== 'undefined' && window.devicePixelRatio) || 1,\n    dragDistance: 3,\n    angleDeg: true,\n    showWarnings: true,\n    dragButtons: [0, 1],\n    isDragging() {\n        return Konva['DD'].isDragging;\n    },\n    isTransforming() {\n        var _a, _b;\n        return (_b = (_a = Konva['Transformer']) === null || _a === void 0 ? void 0 : _a.isTransforming()) !== null && _b !== void 0 ? _b : false;\n    },\n    isDragReady() {\n        return !!Konva['DD'].node;\n    },\n    releaseCanvasOnDestroy: true,\n    document: glob.document,\n    _injectGlobal(Konva) {\n        if (typeof glob.Konva !== 'undefined') {\n            console.error('Several Konva instances detected. It is not recommended to use multiple Konva instances in the same environment.');\n        }\n        glob.Konva = Konva;\n    },\n};\nexport const _registerNode = (NodeClass) => {\n    Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nKonva._injectGlobal(Konva);\n", "import { Konva } from \"./Global.js\";\nconst NODE_ERROR = `Konva.js unsupported environment.\n\nLooks like you are trying to use Konva.js in Node.js environment. because \"document\" object is undefined.\n\nTo use Konva.js in Node.js environment, you need to use the \"canvas-backend\" or \"skia-backend\" module.\n\nbash: npm install canvas\njs: import \"konva/canvas-backend\";\n\nor\n\nbash: npm install skia-canvas\njs: import \"konva/skia-backend\";\n`;\nconst ensureBrowser = () => {\n    if (typeof document === 'undefined') {\n        throw new Error(NODE_ERROR);\n    }\n};\nexport class Transform {\n    constructor(m = [1, 0, 0, 1, 0, 0]) {\n        this.dirty = false;\n        this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n    }\n    reset() {\n        this.m[0] = 1;\n        this.m[1] = 0;\n        this.m[2] = 0;\n        this.m[3] = 1;\n        this.m[4] = 0;\n        this.m[5] = 0;\n    }\n    copy() {\n        return new Transform(this.m);\n    }\n    copyInto(tr) {\n        tr.m[0] = this.m[0];\n        tr.m[1] = this.m[1];\n        tr.m[2] = this.m[2];\n        tr.m[3] = this.m[3];\n        tr.m[4] = this.m[4];\n        tr.m[5] = this.m[5];\n    }\n    point(point) {\n        const m = this.m;\n        return {\n            x: m[0] * point.x + m[2] * point.y + m[4],\n            y: m[1] * point.x + m[3] * point.y + m[5],\n        };\n    }\n    translate(x, y) {\n        this.m[4] += this.m[0] * x + this.m[2] * y;\n        this.m[5] += this.m[1] * x + this.m[3] * y;\n        return this;\n    }\n    scale(sx, sy) {\n        this.m[0] *= sx;\n        this.m[1] *= sx;\n        this.m[2] *= sy;\n        this.m[3] *= sy;\n        return this;\n    }\n    rotate(rad) {\n        const c = Math.cos(rad);\n        const s = Math.sin(rad);\n        const m11 = this.m[0] * c + this.m[2] * s;\n        const m12 = this.m[1] * c + this.m[3] * s;\n        const m21 = this.m[0] * -s + this.m[2] * c;\n        const m22 = this.m[1] * -s + this.m[3] * c;\n        this.m[0] = m11;\n        this.m[1] = m12;\n        this.m[2] = m21;\n        this.m[3] = m22;\n        return this;\n    }\n    getTranslation() {\n        return {\n            x: this.m[4],\n            y: this.m[5],\n        };\n    }\n    skew(sx, sy) {\n        const m11 = this.m[0] + this.m[2] * sy;\n        const m12 = this.m[1] + this.m[3] * sy;\n        const m21 = this.m[2] + this.m[0] * sx;\n        const m22 = this.m[3] + this.m[1] * sx;\n        this.m[0] = m11;\n        this.m[1] = m12;\n        this.m[2] = m21;\n        this.m[3] = m22;\n        return this;\n    }\n    multiply(matrix) {\n        const m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n        const m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n        const m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n        const m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n        const dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n        const dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n        this.m[0] = m11;\n        this.m[1] = m12;\n        this.m[2] = m21;\n        this.m[3] = m22;\n        this.m[4] = dx;\n        this.m[5] = dy;\n        return this;\n    }\n    invert() {\n        const d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n        const m0 = this.m[3] * d;\n        const m1 = -this.m[1] * d;\n        const m2 = -this.m[2] * d;\n        const m3 = this.m[0] * d;\n        const m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n        const m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n        this.m[0] = m0;\n        this.m[1] = m1;\n        this.m[2] = m2;\n        this.m[3] = m3;\n        this.m[4] = m4;\n        this.m[5] = m5;\n        return this;\n    }\n    getMatrix() {\n        return this.m;\n    }\n    decompose() {\n        const a = this.m[0];\n        const b = this.m[1];\n        const c = this.m[2];\n        const d = this.m[3];\n        const e = this.m[4];\n        const f = this.m[5];\n        const delta = a * d - b * c;\n        const result = {\n            x: e,\n            y: f,\n            rotation: 0,\n            scaleX: 0,\n            scaleY: 0,\n            skewX: 0,\n            skewY: 0,\n        };\n        if (a != 0 || b != 0) {\n            const r = Math.sqrt(a * a + b * b);\n            result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n            result.scaleX = r;\n            result.scaleY = delta / r;\n            result.skewX = (a * c + b * d) / delta;\n            result.skewY = 0;\n        }\n        else if (c != 0 || d != 0) {\n            const s = Math.sqrt(c * c + d * d);\n            result.rotation =\n                Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n            result.scaleX = delta / s;\n            result.scaleY = s;\n            result.skewX = 0;\n            result.skewY = (a * c + b * d) / delta;\n        }\n        else {\n        }\n        result.rotation = Util._getRotation(result.rotation);\n        return result;\n    }\n}\nconst OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n    aliceblue: [240, 248, 255],\n    antiquewhite: [250, 235, 215],\n    aqua: [0, 255, 255],\n    aquamarine: [127, 255, 212],\n    azure: [240, 255, 255],\n    beige: [245, 245, 220],\n    bisque: [255, 228, 196],\n    black: [0, 0, 0],\n    blanchedalmond: [255, 235, 205],\n    blue: [0, 0, 255],\n    blueviolet: [138, 43, 226],\n    brown: [165, 42, 42],\n    burlywood: [222, 184, 135],\n    cadetblue: [95, 158, 160],\n    chartreuse: [127, 255, 0],\n    chocolate: [210, 105, 30],\n    coral: [255, 127, 80],\n    cornflowerblue: [100, 149, 237],\n    cornsilk: [255, 248, 220],\n    crimson: [220, 20, 60],\n    cyan: [0, 255, 255],\n    darkblue: [0, 0, 139],\n    darkcyan: [0, 139, 139],\n    darkgoldenrod: [184, 132, 11],\n    darkgray: [169, 169, 169],\n    darkgreen: [0, 100, 0],\n    darkgrey: [169, 169, 169],\n    darkkhaki: [189, 183, 107],\n    darkmagenta: [139, 0, 139],\n    darkolivegreen: [85, 107, 47],\n    darkorange: [255, 140, 0],\n    darkorchid: [153, 50, 204],\n    darkred: [139, 0, 0],\n    darksalmon: [233, 150, 122],\n    darkseagreen: [143, 188, 143],\n    darkslateblue: [72, 61, 139],\n    darkslategray: [47, 79, 79],\n    darkslategrey: [47, 79, 79],\n    darkturquoise: [0, 206, 209],\n    darkviolet: [148, 0, 211],\n    deeppink: [255, 20, 147],\n    deepskyblue: [0, 191, 255],\n    dimgray: [105, 105, 105],\n    dimgrey: [105, 105, 105],\n    dodgerblue: [30, 144, 255],\n    firebrick: [178, 34, 34],\n    floralwhite: [255, 255, 240],\n    forestgreen: [34, 139, 34],\n    fuchsia: [255, 0, 255],\n    gainsboro: [220, 220, 220],\n    ghostwhite: [248, 248, 255],\n    gold: [255, 215, 0],\n    goldenrod: [218, 165, 32],\n    gray: [128, 128, 128],\n    green: [0, 128, 0],\n    greenyellow: [173, 255, 47],\n    grey: [128, 128, 128],\n    honeydew: [240, 255, 240],\n    hotpink: [255, 105, 180],\n    indianred: [205, 92, 92],\n    indigo: [75, 0, 130],\n    ivory: [255, 255, 240],\n    khaki: [240, 230, 140],\n    lavender: [230, 230, 250],\n    lavenderblush: [255, 240, 245],\n    lawngreen: [124, 252, 0],\n    lemonchiffon: [255, 250, 205],\n    lightblue: [173, 216, 230],\n    lightcoral: [240, 128, 128],\n    lightcyan: [224, 255, 255],\n    lightgoldenrodyellow: [250, 250, 210],\n    lightgray: [211, 211, 211],\n    lightgreen: [144, 238, 144],\n    lightgrey: [211, 211, 211],\n    lightpink: [255, 182, 193],\n    lightsalmon: [255, 160, 122],\n    lightseagreen: [32, 178, 170],\n    lightskyblue: [135, 206, 250],\n    lightslategray: [119, 136, 153],\n    lightslategrey: [119, 136, 153],\n    lightsteelblue: [176, 196, 222],\n    lightyellow: [255, 255, 224],\n    lime: [0, 255, 0],\n    limegreen: [50, 205, 50],\n    linen: [250, 240, 230],\n    magenta: [255, 0, 255],\n    maroon: [128, 0, 0],\n    mediumaquamarine: [102, 205, 170],\n    mediumblue: [0, 0, 205],\n    mediumorchid: [186, 85, 211],\n    mediumpurple: [147, 112, 219],\n    mediumseagreen: [60, 179, 113],\n    mediumslateblue: [123, 104, 238],\n    mediumspringgreen: [0, 250, 154],\n    mediumturquoise: [72, 209, 204],\n    mediumvioletred: [199, 21, 133],\n    midnightblue: [25, 25, 112],\n    mintcream: [245, 255, 250],\n    mistyrose: [255, 228, 225],\n    moccasin: [255, 228, 181],\n    navajowhite: [255, 222, 173],\n    navy: [0, 0, 128],\n    oldlace: [253, 245, 230],\n    olive: [128, 128, 0],\n    olivedrab: [107, 142, 35],\n    orange: [255, 165, 0],\n    orangered: [255, 69, 0],\n    orchid: [218, 112, 214],\n    palegoldenrod: [238, 232, 170],\n    palegreen: [152, 251, 152],\n    paleturquoise: [175, 238, 238],\n    palevioletred: [219, 112, 147],\n    papayawhip: [255, 239, 213],\n    peachpuff: [255, 218, 185],\n    peru: [205, 133, 63],\n    pink: [255, 192, 203],\n    plum: [221, 160, 203],\n    powderblue: [176, 224, 230],\n    purple: [128, 0, 128],\n    rebeccapurple: [102, 51, 153],\n    red: [255, 0, 0],\n    rosybrown: [188, 143, 143],\n    royalblue: [65, 105, 225],\n    saddlebrown: [139, 69, 19],\n    salmon: [250, 128, 114],\n    sandybrown: [244, 164, 96],\n    seagreen: [46, 139, 87],\n    seashell: [255, 245, 238],\n    sienna: [160, 82, 45],\n    silver: [192, 192, 192],\n    skyblue: [135, 206, 235],\n    slateblue: [106, 90, 205],\n    slategray: [119, 128, 144],\n    slategrey: [119, 128, 144],\n    snow: [255, 255, 250],\n    springgreen: [0, 255, 127],\n    steelblue: [70, 130, 180],\n    tan: [210, 180, 140],\n    teal: [0, 128, 128],\n    thistle: [216, 191, 216],\n    transparent: [255, 255, 255, 0],\n    tomato: [255, 99, 71],\n    turquoise: [64, 224, 208],\n    violet: [238, 130, 238],\n    wheat: [245, 222, 179],\n    white: [255, 255, 255],\n    whitesmoke: [245, 245, 245],\n    yellow: [255, 255, 0],\n    yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/;\nlet animQueue = [];\nlet _isCanvasFarblingActive = null;\nconst req = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame) ||\n    function (f) {\n        setTimeout(f, 16);\n    };\nexport const Util = {\n    _isElement(obj) {\n        return !!(obj && obj.nodeType == 1);\n    },\n    _isFunction(obj) {\n        return !!(obj && obj.constructor && obj.call && obj.apply);\n    },\n    _isPlainObject(obj) {\n        return !!obj && obj.constructor === Object;\n    },\n    _isArray(obj) {\n        return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n    },\n    _isNumber(obj) {\n        return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n            !isNaN(obj) &&\n            isFinite(obj));\n    },\n    _isString(obj) {\n        return Object.prototype.toString.call(obj) === OBJECT_STRING;\n    },\n    _isBoolean(obj) {\n        return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n    },\n    isObject(val) {\n        return val instanceof Object;\n    },\n    isValidSelector(selector) {\n        if (typeof selector !== 'string') {\n            return false;\n        }\n        const firstChar = selector[0];\n        return (firstChar === '#' ||\n            firstChar === '.' ||\n            firstChar === firstChar.toUpperCase());\n    },\n    _sign(number) {\n        if (number === 0) {\n            return 1;\n        }\n        if (number > 0) {\n            return 1;\n        }\n        else {\n            return -1;\n        }\n    },\n    requestAnimFrame(callback) {\n        animQueue.push(callback);\n        if (animQueue.length === 1) {\n            req(function () {\n                const queue = animQueue;\n                animQueue = [];\n                queue.forEach(function (cb) {\n                    cb();\n                });\n            });\n        }\n    },\n    createCanvasElement() {\n        ensureBrowser();\n        const canvas = document.createElement('canvas');\n        try {\n            canvas.style = canvas.style || {};\n        }\n        catch (e) { }\n        return canvas;\n    },\n    createImageElement() {\n        ensureBrowser();\n        return document.createElement('img');\n    },\n    _isInDocument(el) {\n        while ((el = el.parentNode)) {\n            if (el == document) {\n                return true;\n            }\n        }\n        return false;\n    },\n    _urlToImage(url, callback) {\n        const imageObj = Util.createImageElement();\n        imageObj.onload = function () {\n            callback(imageObj);\n        };\n        imageObj.src = url;\n    },\n    _rgbToHex(r, g, b) {\n        return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n    },\n    _hexToRgb(hex) {\n        hex = hex.replace(HASH, EMPTY_STRING);\n        const bigint = parseInt(hex, 16);\n        return {\n            r: (bigint >> 16) & 255,\n            g: (bigint >> 8) & 255,\n            b: bigint & 255,\n        };\n    },\n    getRandomColor() {\n        let randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n        while (randColor.length < 6) {\n            randColor = ZERO + randColor;\n        }\n        return HASH + randColor;\n    },\n    isCanvasFarblingActive() {\n        if (_isCanvasFarblingActive !== null) {\n            return _isCanvasFarblingActive;\n        }\n        if (typeof document === 'undefined') {\n            _isCanvasFarblingActive = false;\n            return false;\n        }\n        const c = this.createCanvasElement();\n        c.width = 10;\n        c.height = 10;\n        const ctx = c.getContext('2d', {\n            willReadFrequently: true,\n        });\n        ctx.clearRect(0, 0, 10, 10);\n        ctx.fillStyle = '#282828';\n        ctx.fillRect(0, 0, 10, 10);\n        const d = ctx.getImageData(0, 0, 10, 10).data;\n        let isFarbling = false;\n        for (let i = 0; i < 100; i++) {\n            if (d[i * 4] !== 40 ||\n                d[i * 4 + 1] !== 40 ||\n                d[i * 4 + 2] !== 40 ||\n                d[i * 4 + 3] !== 255) {\n                isFarbling = true;\n                break;\n            }\n        }\n        _isCanvasFarblingActive = isFarbling;\n        this.releaseCanvas(c);\n        return _isCanvasFarblingActive;\n    },\n    getHitColor() {\n        const color = this.getRandomColor();\n        return this.isCanvasFarblingActive()\n            ? this.getSnappedHexColor(color)\n            : color;\n    },\n    getHitColorKey(r, g, b) {\n        if (this.isCanvasFarblingActive()) {\n            r = Math.round(r / 5) * 5;\n            g = Math.round(g / 5) * 5;\n            b = Math.round(b / 5) * 5;\n        }\n        return HASH + this._rgbToHex(r, g, b);\n    },\n    getSnappedHexColor(hex) {\n        const rgb = this._hexToRgb(hex);\n        return (HASH +\n            this._rgbToHex(Math.round(rgb.r / 5) * 5, Math.round(rgb.g / 5) * 5, Math.round(rgb.b / 5) * 5));\n    },\n    getRGB(color) {\n        let rgb;\n        if (color in COLORS) {\n            rgb = COLORS[color];\n            return {\n                r: rgb[0],\n                g: rgb[1],\n                b: rgb[2],\n            };\n        }\n        else if (color[0] === HASH) {\n            return this._hexToRgb(color.substring(1));\n        }\n        else if (color.substr(0, 4) === RGB_PAREN) {\n            rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n            return {\n                r: parseInt(rgb[1], 10),\n                g: parseInt(rgb[2], 10),\n                b: parseInt(rgb[3], 10),\n            };\n        }\n        else {\n            return {\n                r: 0,\n                g: 0,\n                b: 0,\n            };\n        }\n    },\n    colorToRGBA(str) {\n        str = str || 'black';\n        return (Util._namedColorToRBA(str) ||\n            Util._hex3ColorToRGBA(str) ||\n            Util._hex4ColorToRGBA(str) ||\n            Util._hex6ColorToRGBA(str) ||\n            Util._hex8ColorToRGBA(str) ||\n            Util._rgbColorToRGBA(str) ||\n            Util._rgbaColorToRGBA(str) ||\n            Util._hslColorToRGBA(str));\n    },\n    _namedColorToRBA(str) {\n        const c = COLORS[str.toLowerCase()];\n        if (!c) {\n            return null;\n        }\n        return {\n            r: c[0],\n            g: c[1],\n            b: c[2],\n            a: 1,\n        };\n    },\n    _rgbColorToRGBA(str) {\n        if (str.indexOf('rgb(') === 0) {\n            str = str.match(/rgb\\(([^)]+)\\)/)[1];\n            const parts = str.split(/ *, */).map(Number);\n            return {\n                r: parts[0],\n                g: parts[1],\n                b: parts[2],\n                a: 1,\n            };\n        }\n    },\n    _rgbaColorToRGBA(str) {\n        if (str.indexOf('rgba(') === 0) {\n            str = str.match(/rgba\\(([^)]+)\\)/)[1];\n            const parts = str.split(/ *, */).map((n, index) => {\n                if (n.slice(-1) === '%') {\n                    return index === 3 ? parseInt(n) / 100 : (parseInt(n) / 100) * 255;\n                }\n                return Number(n);\n            });\n            return {\n                r: parts[0],\n                g: parts[1],\n                b: parts[2],\n                a: parts[3],\n            };\n        }\n    },\n    _hex8ColorToRGBA(str) {\n        if (str[0] === '#' && str.length === 9) {\n            return {\n                r: parseInt(str.slice(1, 3), 16),\n                g: parseInt(str.slice(3, 5), 16),\n                b: parseInt(str.slice(5, 7), 16),\n                a: parseInt(str.slice(7, 9), 16) / 0xff,\n            };\n        }\n    },\n    _hex6ColorToRGBA(str) {\n        if (str[0] === '#' && str.length === 7) {\n            return {\n                r: parseInt(str.slice(1, 3), 16),\n                g: parseInt(str.slice(3, 5), 16),\n                b: parseInt(str.slice(5, 7), 16),\n                a: 1,\n            };\n        }\n    },\n    _hex4ColorToRGBA(str) {\n        if (str[0] === '#' && str.length === 5) {\n            return {\n                r: parseInt(str[1] + str[1], 16),\n                g: parseInt(str[2] + str[2], 16),\n                b: parseInt(str[3] + str[3], 16),\n                a: parseInt(str[4] + str[4], 16) / 0xff,\n            };\n        }\n    },\n    _hex3ColorToRGBA(str) {\n        if (str[0] === '#' && str.length === 4) {\n            return {\n                r: parseInt(str[1] + str[1], 16),\n                g: parseInt(str[2] + str[2], 16),\n                b: parseInt(str[3] + str[3], 16),\n                a: 1,\n            };\n        }\n    },\n    _hslColorToRGBA(str) {\n        if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n            const [_, ...hsl] = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str);\n            const h = Number(hsl[0]) / 360;\n            const s = Number(hsl[1]) / 100;\n            const l = Number(hsl[2]) / 100;\n            let t2;\n            let t3;\n            let val;\n            if (s === 0) {\n                val = l * 255;\n                return {\n                    r: Math.round(val),\n                    g: Math.round(val),\n                    b: Math.round(val),\n                    a: 1,\n                };\n            }\n            if (l < 0.5) {\n                t2 = l * (1 + s);\n            }\n            else {\n                t2 = l + s - l * s;\n            }\n            const t1 = 2 * l - t2;\n            const rgb = [0, 0, 0];\n            for (let i = 0; i < 3; i++) {\n                t3 = h + (1 / 3) * -(i - 1);\n                if (t3 < 0) {\n                    t3++;\n                }\n                if (t3 > 1) {\n                    t3--;\n                }\n                if (6 * t3 < 1) {\n                    val = t1 + (t2 - t1) * 6 * t3;\n                }\n                else if (2 * t3 < 1) {\n                    val = t2;\n                }\n                else if (3 * t3 < 2) {\n                    val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n                }\n                else {\n                    val = t1;\n                }\n                rgb[i] = val * 255;\n            }\n            return {\n                r: Math.round(rgb[0]),\n                g: Math.round(rgb[1]),\n                b: Math.round(rgb[2]),\n                a: 1,\n            };\n        }\n    },\n    haveIntersection(r1, r2) {\n        return !(r2.x > r1.x + r1.width ||\n            r2.x + r2.width < r1.x ||\n            r2.y > r1.y + r1.height ||\n            r2.y + r2.height < r1.y);\n    },\n    cloneObject(obj) {\n        const retObj = {};\n        for (const key in obj) {\n            if (this._isPlainObject(obj[key])) {\n                retObj[key] = this.cloneObject(obj[key]);\n            }\n            else if (this._isArray(obj[key])) {\n                retObj[key] = this.cloneArray(obj[key]);\n            }\n            else {\n                retObj[key] = obj[key];\n            }\n        }\n        return retObj;\n    },\n    cloneArray(arr) {\n        return arr.slice(0);\n    },\n    degToRad(deg) {\n        return deg * PI_OVER_DEG180;\n    },\n    radToDeg(rad) {\n        return rad * DEG180_OVER_PI;\n    },\n    _degToRad(deg) {\n        Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n        return Util.degToRad(deg);\n    },\n    _radToDeg(rad) {\n        Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n        return Util.radToDeg(rad);\n    },\n    _getRotation(radians) {\n        return Konva.angleDeg ? Util.radToDeg(radians) : radians;\n    },\n    _capitalize(str) {\n        return str.charAt(0).toUpperCase() + str.slice(1);\n    },\n    throw(str) {\n        throw new Error(KONVA_ERROR + str);\n    },\n    error(str) {\n        console.error(KONVA_ERROR + str);\n    },\n    warn(str) {\n        if (!Konva.showWarnings) {\n            return;\n        }\n        console.warn(KONVA_WARNING + str);\n    },\n    each(obj, func) {\n        for (const key in obj) {\n            func(key, obj[key]);\n        }\n    },\n    _inRange(val, left, right) {\n        return left <= val && val < right;\n    },\n    _getProjectionToSegment(x1, y1, x2, y2, x3, y3) {\n        let x, y, dist;\n        const pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n        if (pd2 == 0) {\n            x = x1;\n            y = y1;\n            dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n        }\n        else {\n            const u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n            if (u < 0) {\n                x = x1;\n                y = y1;\n                dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n            }\n            else if (u > 1.0) {\n                x = x2;\n                y = y2;\n                dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n            }\n            else {\n                x = x1 + u * (x2 - x1);\n                y = y1 + u * (y2 - y1);\n                dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n            }\n        }\n        return [x, y, dist];\n    },\n    _getProjectionToLine(pt, line, isClosed) {\n        const pc = Util.cloneObject(pt);\n        let dist = Number.MAX_VALUE;\n        line.forEach(function (p1, i) {\n            if (!isClosed && i === line.length - 1) {\n                return;\n            }\n            const p2 = line[(i + 1) % line.length];\n            const proj = Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n            const px = proj[0], py = proj[1], pdist = proj[2];\n            if (pdist < dist) {\n                pc.x = px;\n                pc.y = py;\n                dist = pdist;\n            }\n        });\n        return pc;\n    },\n    _prepareArrayForTween(startArray, endArray, isClosed) {\n        const start = [], end = [];\n        if (startArray.length > endArray.length) {\n            const temp = endArray;\n            endArray = startArray;\n            startArray = temp;\n        }\n        for (let n = 0; n < startArray.length; n += 2) {\n            start.push({\n                x: startArray[n],\n                y: startArray[n + 1],\n            });\n        }\n        for (let n = 0; n < endArray.length; n += 2) {\n            end.push({\n                x: endArray[n],\n                y: endArray[n + 1],\n            });\n        }\n        const newStart = [];\n        end.forEach(function (point) {\n            const pr = Util._getProjectionToLine(point, start, isClosed);\n            newStart.push(pr.x);\n            newStart.push(pr.y);\n        });\n        return newStart;\n    },\n    _prepareToStringify(obj) {\n        let desc;\n        obj.visitedByCircularReferenceRemoval = true;\n        for (const key in obj) {\n            if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n                continue;\n            }\n            desc = Object.getOwnPropertyDescriptor(obj, key);\n            if (obj[key].visitedByCircularReferenceRemoval ||\n                Util._isElement(obj[key])) {\n                if (desc.configurable) {\n                    delete obj[key];\n                }\n                else {\n                    return null;\n                }\n            }\n            else if (Util._prepareToStringify(obj[key]) === null) {\n                if (desc.configurable) {\n                    delete obj[key];\n                }\n                else {\n                    return null;\n                }\n            }\n        }\n        delete obj.visitedByCircularReferenceRemoval;\n        return obj;\n    },\n    _assign(target, source) {\n        for (const key in source) {\n            target[key] = source[key];\n        }\n        return target;\n    },\n    _getFirstPointerId(evt) {\n        if (!evt.touches) {\n            return evt.pointerId || 999;\n        }\n        else {\n            return evt.changedTouches[0].identifier;\n        }\n    },\n    releaseCanvas(...canvases) {\n        if (!Konva.releaseCanvasOnDestroy)\n            return;\n        canvases.forEach((c) => {\n            c.width = 0;\n            c.height = 0;\n        });\n    },\n    drawRoundedRectPath(context, width, height, cornerRadius) {\n        let xOrigin = width < 0 ? width : 0;\n        let yOrigin = height < 0 ? height : 0;\n        width = Math.abs(width);\n        height = Math.abs(height);\n        let topLeft = 0;\n        let topRight = 0;\n        let bottomLeft = 0;\n        let bottomRight = 0;\n        if (typeof cornerRadius === 'number') {\n            topLeft =\n                topRight =\n                    bottomLeft =\n                        bottomRight =\n                            Math.min(cornerRadius, width / 2, height / 2);\n        }\n        else {\n            topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n            topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n            bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n            bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n        }\n        context.moveTo(xOrigin + topLeft, yOrigin);\n        context.lineTo(xOrigin + width - topRight, yOrigin);\n        context.arc(xOrigin + width - topRight, yOrigin + topRight, topRight, (Math.PI * 3) / 2, 0, false);\n        context.lineTo(xOrigin + width, yOrigin + height - bottomRight);\n        context.arc(xOrigin + width - bottomRight, yOrigin + height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n        context.lineTo(xOrigin + bottomLeft, yOrigin + height);\n        context.arc(xOrigin + bottomLeft, yOrigin + height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n        context.lineTo(xOrigin, yOrigin + topLeft);\n        context.arc(xOrigin + topLeft, yOrigin + topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n    },\n    drawRoundedPolygonPath(context, points, sides, radius, cornerRadius) {\n        radius = Math.abs(radius);\n        for (let i = 0; i < sides; i++) {\n            const prev = points[(i - 1 + sides) % sides];\n            const curr = points[i];\n            const next = points[(i + 1) % sides];\n            const vec1 = { x: curr.x - prev.x, y: curr.y - prev.y };\n            const vec2 = { x: next.x - curr.x, y: next.y - curr.y };\n            const len1 = Math.hypot(vec1.x, vec1.y);\n            const len2 = Math.hypot(vec2.x, vec2.y);\n            let currCornerRadius;\n            if (typeof cornerRadius === 'number') {\n                currCornerRadius = cornerRadius;\n            }\n            else {\n                currCornerRadius = i < cornerRadius.length ? cornerRadius[i] : 0;\n            }\n            const maxCornerRadius = radius * Math.cos(Math.PI / sides);\n            currCornerRadius =\n                maxCornerRadius * Math.min(1, (currCornerRadius / radius) * 2);\n            const normalVec1 = { x: vec1.x / len1, y: vec1.y / len1 };\n            const normalVec2 = { x: vec2.x / len2, y: vec2.y / len2 };\n            const p1 = {\n                x: curr.x - normalVec1.x * currCornerRadius,\n                y: curr.y - normalVec1.y * currCornerRadius,\n            };\n            const p2 = {\n                x: curr.x + normalVec2.x * currCornerRadius,\n                y: curr.y + normalVec2.y * currCornerRadius,\n            };\n            if (i === 0) {\n                context.moveTo(p1.x, p1.y);\n            }\n            else {\n                context.lineTo(p1.x, p1.y);\n            }\n            context.arcTo(curr.x, curr.y, p2.x, p2.y, currCornerRadius);\n        }\n    },\n};\n", "import { Util } from \"./Util.js\";\nimport { Konva } from \"./Global.js\";\nfunction simplifyArray(arr) {\n    const retArr = [], len = arr.length, util = Util;\n    for (let n = 0; n < len; n++) {\n        let val = arr[n];\n        if (util._isNumber(val)) {\n            val = Math.round(val * 1000) / 1000;\n        }\n        else if (!util._isString(val)) {\n            val = val + '';\n        }\n        retArr.push(val);\n    }\n    return retArr;\n}\nconst COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', EQUALS = '=', CONTEXT_METHODS = [\n    'arc',\n    'arcTo',\n    'beginPath',\n    'bezierCurveTo',\n    'clearRect',\n    'clip',\n    'closePath',\n    'createLinearGradient',\n    'createPattern',\n    'createRadialGradient',\n    'drawImage',\n    'ellipse',\n    'fill',\n    'fillText',\n    'getImageData',\n    'createImageData',\n    'lineTo',\n    'moveTo',\n    'putImageData',\n    'quadraticCurveTo',\n    'rect',\n    'roundRect',\n    'restore',\n    'rotate',\n    'save',\n    'scale',\n    'setLineDash',\n    'setTransform',\n    'stroke',\n    'strokeText',\n    'transform',\n    'translate',\n];\nconst CONTEXT_PROPERTIES = [\n    'fillStyle',\n    'strokeStyle',\n    'shadowColor',\n    'shadowBlur',\n    'shadowOffsetX',\n    'shadowOffsetY',\n    'letterSpacing',\n    'lineCap',\n    'lineDashOffset',\n    'lineJoin',\n    'lineWidth',\n    'miterLimit',\n    'direction',\n    'font',\n    'textAlign',\n    'textBaseline',\n    'globalAlpha',\n    'globalCompositeOperation',\n    'imageSmoothingEnabled',\n    'filter',\n];\nconst traceArrMax = 100;\nlet _cssFiltersSupported = null;\nexport function isCSSFiltersSupported() {\n    if (_cssFiltersSupported !== null) {\n        return _cssFiltersSupported;\n    }\n    try {\n        const canvas = Util.createCanvasElement();\n        const ctx = canvas.getContext('2d');\n        if (!ctx) {\n            _cssFiltersSupported = false;\n            return false;\n        }\n        return !!ctx && 'filter' in ctx;\n    }\n    catch (e) {\n        _cssFiltersSupported = false;\n        return false;\n    }\n}\nexport class Context {\n    constructor(canvas) {\n        this.canvas = canvas;\n        if (Konva.enableTrace) {\n            this.traceArr = [];\n            this._enableTrace();\n        }\n    }\n    fillShape(shape) {\n        if (shape.fillEnabled()) {\n            this._fill(shape);\n        }\n    }\n    _fill(shape) {\n    }\n    strokeShape(shape) {\n        if (shape.hasStroke()) {\n            this._stroke(shape);\n        }\n    }\n    _stroke(shape) {\n    }\n    fillStrokeShape(shape) {\n        if (shape.attrs.fillAfterStrokeEnabled) {\n            this.strokeShape(shape);\n            this.fillShape(shape);\n        }\n        else {\n            this.fillShape(shape);\n            this.strokeShape(shape);\n        }\n    }\n    getTrace(relaxed, rounded) {\n        let traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\n        for (n = 0; n < len; n++) {\n            trace = traceArr[n];\n            method = trace.method;\n            if (method) {\n                args = trace.args;\n                str += method;\n                if (relaxed) {\n                    str += DOUBLE_PAREN;\n                }\n                else {\n                    if (Util._isArray(args[0])) {\n                        str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\n                    }\n                    else {\n                        if (rounded) {\n                            args = args.map((a) => typeof a === 'number' ? Math.floor(a) : a);\n                        }\n                        str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\n                    }\n                }\n            }\n            else {\n                str += trace.property;\n                if (!relaxed) {\n                    str += EQUALS + trace.val;\n                }\n            }\n            str += SEMICOLON;\n        }\n        return str;\n    }\n    clearTrace() {\n        this.traceArr = [];\n    }\n    _trace(str) {\n        let traceArr = this.traceArr, len;\n        traceArr.push(str);\n        len = traceArr.length;\n        if (len >= traceArrMax) {\n            traceArr.shift();\n        }\n    }\n    reset() {\n        const pixelRatio = this.getCanvas().getPixelRatio();\n        this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\n    }\n    getCanvas() {\n        return this.canvas;\n    }\n    clear(bounds) {\n        const canvas = this.getCanvas();\n        if (bounds) {\n            this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\n        }\n        else {\n            this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\n        }\n    }\n    _applyLineCap(shape) {\n        const lineCap = shape.attrs.lineCap;\n        if (lineCap) {\n            this.setAttr('lineCap', lineCap);\n        }\n    }\n    _applyOpacity(shape) {\n        const absOpacity = shape.getAbsoluteOpacity();\n        if (absOpacity !== 1) {\n            this.setAttr('globalAlpha', absOpacity);\n        }\n    }\n    _applyLineJoin(shape) {\n        const lineJoin = shape.attrs.lineJoin;\n        if (lineJoin) {\n            this.setAttr('lineJoin', lineJoin);\n        }\n    }\n    _applyMiterLimit(shape) {\n        const miterLimit = shape.attrs.miterLimit;\n        if (miterLimit != null) {\n            this.setAttr('miterLimit', miterLimit);\n        }\n    }\n    setAttr(attr, val) {\n        this._context[attr] = val;\n    }\n    arc(x, y, radius, startAngle, endAngle, counterClockwise) {\n        this._context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n    }\n    arcTo(x1, y1, x2, y2, radius) {\n        this._context.arcTo(x1, y1, x2, y2, radius);\n    }\n    beginPath() {\n        this._context.beginPath();\n    }\n    bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n        this._context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    }\n    clearRect(x, y, width, height) {\n        this._context.clearRect(x, y, width, height);\n    }\n    clip(...args) {\n        this._context.clip.apply(this._context, args);\n    }\n    closePath() {\n        this._context.closePath();\n    }\n    createImageData(width, height) {\n        const a = arguments;\n        if (a.length === 2) {\n            return this._context.createImageData(width, height);\n        }\n        else if (a.length === 1) {\n            return this._context.createImageData(width);\n        }\n    }\n    createLinearGradient(x0, y0, x1, y1) {\n        return this._context.createLinearGradient(x0, y0, x1, y1);\n    }\n    createPattern(image, repetition) {\n        return this._context.createPattern(image, repetition);\n    }\n    createRadialGradient(x0, y0, r0, x1, y1, r1) {\n        return this._context.createRadialGradient(x0, y0, r0, x1, y1, r1);\n    }\n    drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {\n        const a = arguments, _context = this._context;\n        if (a.length === 3) {\n            _context.drawImage(image, sx, sy);\n        }\n        else if (a.length === 5) {\n            _context.drawImage(image, sx, sy, sWidth, sHeight);\n        }\n        else if (a.length === 9) {\n            _context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\n        }\n    }\n    ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise) {\n        this._context.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise);\n    }\n    isPointInPath(x, y, path, fillRule) {\n        if (path) {\n            return this._context.isPointInPath(path, x, y, fillRule);\n        }\n        return this._context.isPointInPath(x, y, fillRule);\n    }\n    fill(...args) {\n        this._context.fill.apply(this._context, args);\n    }\n    fillRect(x, y, width, height) {\n        this._context.fillRect(x, y, width, height);\n    }\n    strokeRect(x, y, width, height) {\n        this._context.strokeRect(x, y, width, height);\n    }\n    fillText(text, x, y, maxWidth) {\n        if (maxWidth) {\n            this._context.fillText(text, x, y, maxWidth);\n        }\n        else {\n            this._context.fillText(text, x, y);\n        }\n    }\n    measureText(text) {\n        return this._context.measureText(text);\n    }\n    getImageData(sx, sy, sw, sh) {\n        return this._context.getImageData(sx, sy, sw, sh);\n    }\n    lineTo(x, y) {\n        this._context.lineTo(x, y);\n    }\n    moveTo(x, y) {\n        this._context.moveTo(x, y);\n    }\n    rect(x, y, width, height) {\n        this._context.rect(x, y, width, height);\n    }\n    roundRect(x, y, width, height, radii) {\n        this._context.roundRect(x, y, width, height, radii);\n    }\n    putImageData(imageData, dx, dy) {\n        this._context.putImageData(imageData, dx, dy);\n    }\n    quadraticCurveTo(cpx, cpy, x, y) {\n        this._context.quadraticCurveTo(cpx, cpy, x, y);\n    }\n    restore() {\n        this._context.restore();\n    }\n    rotate(angle) {\n        this._context.rotate(angle);\n    }\n    save() {\n        this._context.save();\n    }\n    scale(x, y) {\n        this._context.scale(x, y);\n    }\n    setLineDash(segments) {\n        if (this._context.setLineDash) {\n            this._context.setLineDash(segments);\n        }\n        else if ('mozDash' in this._context) {\n            this._context['mozDash'] = segments;\n        }\n        else if ('webkitLineDash' in this._context) {\n            this._context['webkitLineDash'] = segments;\n        }\n    }\n    getLineDash() {\n        return this._context.getLineDash();\n    }\n    setTransform(a, b, c, d, e, f) {\n        this._context.setTransform(a, b, c, d, e, f);\n    }\n    stroke(path2d) {\n        if (path2d) {\n            this._context.stroke(path2d);\n        }\n        else {\n            this._context.stroke();\n        }\n    }\n    strokeText(text, x, y, maxWidth) {\n        this._context.strokeText(text, x, y, maxWidth);\n    }\n    transform(a, b, c, d, e, f) {\n        this._context.transform(a, b, c, d, e, f);\n    }\n    translate(x, y) {\n        this._context.translate(x, y);\n    }\n    _enableTrace() {\n        let that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n        const func = function (methodName) {\n            let origMethod = that[methodName], ret;\n            that[methodName] = function () {\n                args = simplifyArray(Array.prototype.slice.call(arguments, 0));\n                ret = origMethod.apply(that, arguments);\n                that._trace({\n                    method: methodName,\n                    args: args,\n                });\n                return ret;\n            };\n        };\n        for (n = 0; n < len; n++) {\n            func(CONTEXT_METHODS[n]);\n        }\n        that.setAttr = function () {\n            origSetter.apply(that, arguments);\n            const prop = arguments[0];\n            let val = arguments[1];\n            if (prop === 'shadowOffsetX' ||\n                prop === 'shadowOffsetY' ||\n                prop === 'shadowBlur') {\n                val = val / this.canvas.getPixelRatio();\n            }\n            that._trace({\n                property: prop,\n                val: val,\n            });\n        };\n    }\n    _applyGlobalCompositeOperation(node) {\n        const op = node.attrs.globalCompositeOperation;\n        const def = !op || op === 'source-over';\n        if (!def) {\n            this.setAttr('globalCompositeOperation', op);\n        }\n    }\n}\nCONTEXT_PROPERTIES.forEach(function (prop) {\n    Object.defineProperty(Context.prototype, prop, {\n        get() {\n            return this._context[prop];\n        },\n        set(val) {\n            this._context[prop] = val;\n        },\n    });\n});\nexport class SceneContext extends Context {\n    constructor(canvas, { willReadFrequently = false } = {}) {\n        super(canvas);\n        this._context = canvas._canvas.getContext('2d', {\n            willReadFrequently,\n        });\n    }\n    _fillColor(shape) {\n        const fill = shape.fill();\n        this.setAttr('fillStyle', fill);\n        shape._fillFunc(this);\n    }\n    _fillPattern(shape) {\n        this.setAttr('fillStyle', shape._getFillPattern());\n        shape._fillFunc(this);\n    }\n    _fillLinearGradient(shape) {\n        const grd = shape._getLinearGradient();\n        if (grd) {\n            this.setAttr('fillStyle', grd);\n            shape._fillFunc(this);\n        }\n    }\n    _fillRadialGradient(shape) {\n        const grd = shape._getRadialGradient();\n        if (grd) {\n            this.setAttr('fillStyle', grd);\n            shape._fillFunc(this);\n        }\n    }\n    _fill(shape) {\n        const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n        if (hasColor && fillPriority === 'color') {\n            this._fillColor(shape);\n            return;\n        }\n        const hasPattern = shape.getFillPatternImage();\n        if (hasPattern && fillPriority === 'pattern') {\n            this._fillPattern(shape);\n            return;\n        }\n        const hasLinearGradient = shape.getFillLinearGradientColorStops();\n        if (hasLinearGradient && fillPriority === 'linear-gradient') {\n            this._fillLinearGradient(shape);\n            return;\n        }\n        const hasRadialGradient = shape.getFillRadialGradientColorStops();\n        if (hasRadialGradient && fillPriority === 'radial-gradient') {\n            this._fillRadialGradient(shape);\n            return;\n        }\n        if (hasColor) {\n            this._fillColor(shape);\n        }\n        else if (hasPattern) {\n            this._fillPattern(shape);\n        }\n        else if (hasLinearGradient) {\n            this._fillLinearGradient(shape);\n        }\n        else if (hasRadialGradient) {\n            this._fillRadialGradient(shape);\n        }\n    }\n    _strokeLinearGradient(shape) {\n        const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n        if (colorStops) {\n            for (let n = 0; n < colorStops.length; n += 2) {\n                grd.addColorStop(colorStops[n], colorStops[n + 1]);\n            }\n            this.setAttr('strokeStyle', grd);\n        }\n    }\n    _stroke(shape) {\n        const dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n        if (shape.hasStroke()) {\n            if (!strokeScaleEnabled) {\n                this.save();\n                const pixelRatio = this.getCanvas().getPixelRatio();\n                this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n            }\n            this._applyLineCap(shape);\n            if (dash && shape.dashEnabled()) {\n                this.setLineDash(dash);\n                this.setAttr('lineDashOffset', shape.dashOffset());\n            }\n            this.setAttr('lineWidth', shape.strokeWidth());\n            if (!shape.getShadowForStrokeEnabled()) {\n                this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n            }\n            const hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n            if (hasLinearGradient) {\n                this._strokeLinearGradient(shape);\n            }\n            else {\n                this.setAttr('strokeStyle', shape.stroke());\n            }\n            shape._strokeFunc(this);\n            if (!strokeScaleEnabled) {\n                this.restore();\n            }\n        }\n    }\n    _applyShadow(shape) {\n        var _a, _b, _c;\n        const color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n            x: 0,\n            y: 0,\n        }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n        this.setAttr('shadowColor', color);\n        this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n        this.setAttr('shadowOffsetX', offset.x * scaleX);\n        this.setAttr('shadowOffsetY', offset.y * scaleY);\n    }\n}\nexport class HitContext extends Context {\n    constructor(canvas) {\n        super(canvas);\n        this._context = canvas._canvas.getContext('2d', {\n            willReadFrequently: true,\n        });\n    }\n    _fill(shape) {\n        this.save();\n        this.setAttr('fillStyle', shape.colorKey);\n        shape._fillFuncHit(this);\n        this.restore();\n    }\n    strokeShape(shape) {\n        if (shape.hasHitStroke()) {\n            this._stroke(shape);\n        }\n    }\n    _stroke(shape) {\n        if (shape.hasHitStroke()) {\n            const strokeScaleEnabled = shape.getStrokeScaleEnabled();\n            if (!strokeScaleEnabled) {\n                this.save();\n                const pixelRatio = this.getCanvas().getPixelRatio();\n                this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n            }\n            this._applyLineCap(shape);\n            const hitStrokeWidth = shape.hitStrokeWidth();\n            const strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\n            this.setAttr('lineWidth', strokeWidth);\n            this.setAttr('strokeStyle', shape.colorKey);\n            shape._strokeFuncHit(this);\n            if (!strokeScaleEnabled) {\n                this.restore();\n            }\n        }\n    }\n}\n", "import { Util } from \"./Util.js\";\nimport { SceneContext, HitContext } from \"./Context.js\";\nimport { Konva } from \"./Global.js\";\nlet _pixelRatio;\nfunction getDevicePixelRatio() {\n    if (_pixelRatio) {\n        return _pixelRatio;\n    }\n    const canvas = Util.createCanvasElement();\n    const context = canvas.getContext('2d');\n    _pixelRatio = (function () {\n        const devicePixelRatio = Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\n            context.mozBackingStorePixelRatio ||\n            context.msBackingStorePixelRatio ||\n            context.oBackingStorePixelRatio ||\n            context.backingStorePixelRatio ||\n            1;\n        return devicePixelRatio / backingStoreRatio;\n    })();\n    Util.releaseCanvas(canvas);\n    return _pixelRatio;\n}\nexport class Canvas {\n    constructor(config) {\n        this.pixelRatio = 1;\n        this.width = 0;\n        this.height = 0;\n        this.isCache = false;\n        const conf = config || {};\n        const pixelRatio = conf.pixelRatio || Konva.pixelRatio || getDevicePixelRatio();\n        this.pixelRatio = pixelRatio;\n        this._canvas = Util.createCanvasElement();\n        this._canvas.style.padding = '0';\n        this._canvas.style.margin = '0';\n        this._canvas.style.border = '0';\n        this._canvas.style.background = 'transparent';\n        this._canvas.style.position = 'absolute';\n        this._canvas.style.top = '0';\n        this._canvas.style.left = '0';\n    }\n    getContext() {\n        return this.context;\n    }\n    getPixelRatio() {\n        return this.pixelRatio;\n    }\n    setPixelRatio(pixelRatio) {\n        const previousRatio = this.pixelRatio;\n        this.pixelRatio = pixelRatio;\n        this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n    }\n    setWidth(width) {\n        this.width = this._canvas.width = width * this.pixelRatio;\n        this._canvas.style.width = width + 'px';\n        const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n        _context.scale(pixelRatio, pixelRatio);\n    }\n    setHeight(height) {\n        this.height = this._canvas.height = height * this.pixelRatio;\n        this._canvas.style.height = height + 'px';\n        const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n        _context.scale(pixelRatio, pixelRatio);\n    }\n    getWidth() {\n        return this.width;\n    }\n    getHeight() {\n        return this.height;\n    }\n    setSize(width, height) {\n        this.setWidth(width || 0);\n        this.setHeight(height || 0);\n    }\n    toDataURL(mimeType, quality) {\n        try {\n            return this._canvas.toDataURL(mimeType, quality);\n        }\n        catch (e) {\n            try {\n                return this._canvas.toDataURL();\n            }\n            catch (err) {\n                Util.error('Unable to get data URL. ' +\n                    err.message +\n                    ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n                return '';\n            }\n        }\n    }\n}\nexport class SceneCanvas extends Canvas {\n    constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n        super(config);\n        this.context = new SceneContext(this, {\n            willReadFrequently: config.willReadFrequently,\n        });\n        this.setSize(config.width, config.height);\n    }\n}\nexport class HitCanvas extends Canvas {\n    constructor(config = { width: 0, height: 0 }) {\n        super(config);\n        this.hitCanvas = true;\n        this.context = new HitContext(this);\n        this.setSize(config.width, config.height);\n    }\n}\n", "import { Konva } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nexport const DD = {\n    get isDragging() {\n        let flag = false;\n        DD._dragElements.forEach((elem) => {\n            if (elem.dragStatus === 'dragging') {\n                flag = true;\n            }\n        });\n        return flag;\n    },\n    justDragged: false,\n    get node() {\n        let node;\n        DD._dragElements.forEach((elem) => {\n            node = elem.node;\n        });\n        return node;\n    },\n    _dragElements: new Map(),\n    _drag(evt) {\n        const nodesToFireEvents = [];\n        DD._dragElements.forEach((elem, key) => {\n            const { node } = elem;\n            const stage = node.getStage();\n            stage.setPointersPositions(evt);\n            if (elem.pointerId === undefined) {\n                elem.pointerId = Util._getFirstPointerId(evt);\n            }\n            const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n            if (!pos) {\n                return;\n            }\n            if (elem.dragStatus !== 'dragging') {\n                const dragDistance = node.dragDistance();\n                const distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n                if (distance < dragDistance) {\n                    return;\n                }\n                node.startDrag({ evt });\n                if (!node.isDragging()) {\n                    return;\n                }\n            }\n            node._setDragPosition(evt, elem);\n            nodesToFireEvents.push(node);\n        });\n        nodesToFireEvents.forEach((node) => {\n            if (!node.getStage()) {\n                return;\n            }\n            node.fire('dragmove', {\n                type: 'dragmove',\n                target: node,\n                evt: evt,\n            }, true);\n        });\n    },\n    _endDragBefore(evt) {\n        const drawNodes = [];\n        DD._dragElements.forEach((elem) => {\n            const { node } = elem;\n            const stage = node.getStage();\n            if (evt) {\n                stage.setPointersPositions(evt);\n            }\n            const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n            if (!pos) {\n                return;\n            }\n            if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n                DD.justDragged = true;\n                Konva._mouseListenClick = false;\n                Konva._touchListenClick = false;\n                Konva._pointerListenClick = false;\n                elem.dragStatus = 'stopped';\n            }\n            const drawNode = elem.node.getLayer() ||\n                (elem.node instanceof Konva['Stage'] && elem.node);\n            if (drawNode && drawNodes.indexOf(drawNode) === -1) {\n                drawNodes.push(drawNode);\n            }\n        });\n        drawNodes.forEach((drawNode) => {\n            drawNode.draw();\n        });\n    },\n    _endDragAfter(evt) {\n        DD._dragElements.forEach((elem, key) => {\n            if (elem.dragStatus === 'stopped') {\n                elem.node.fire('dragend', {\n                    type: 'dragend',\n                    target: elem.node,\n                    evt: evt,\n                }, true);\n            }\n            if (elem.dragStatus !== 'dragging') {\n                DD._dragElements.delete(key);\n            }\n        });\n    },\n};\nif (Konva.isBrowser) {\n    window.addEventListener('mouseup', DD._endDragBefore, true);\n    window.addEventListener('touchend', DD._endDragBefore, true);\n    window.addEventListener('touchcancel', DD._endDragBefore, true);\n    window.addEventListener('mousemove', DD._drag);\n    window.addEventListener('touchmove', DD._drag);\n    window.addEventListener('mouseup', DD._endDragAfter, false);\n    window.addEventListener('touchend', DD._endDragAfter, false);\n    window.addEventListener('touchcancel', DD._endDragAfter, false);\n}\n", "import { Konva } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nfunction _formatValue(val) {\n    if (Util._isString(val)) {\n        return '\"' + val + '\"';\n    }\n    if (Object.prototype.toString.call(val) === '[object Number]') {\n        return val;\n    }\n    if (Util._isBoolean(val)) {\n        return val;\n    }\n    return Object.prototype.toString.call(val);\n}\nexport function RGBComponent(val) {\n    if (val > 255) {\n        return 255;\n    }\n    else if (val < 0) {\n        return 0;\n    }\n    return Math.round(val);\n}\nexport function alphaComponent(val) {\n    if (val > 1) {\n        return 1;\n    }\n    else if (val < 0.0001) {\n        return 0.0001;\n    }\n    return val;\n}\nexport function getNumberValidator() {\n    if (Konva.isUnminified) {\n        return function (val, attr) {\n            if (!Util._isNumber(val)) {\n                Util.warn(_formatValue(val) +\n                    ' is a not valid value for \"' +\n                    attr +\n                    '\" attribute. The value should be a number.');\n            }\n            return val;\n        };\n    }\n}\nexport function getNumberOrArrayOfNumbersValidator(noOfElements) {\n    if (Konva.isUnminified) {\n        return function (val, attr) {\n            let isNumber = Util._isNumber(val);\n            let isValidArray = Util._isArray(val) && val.length == noOfElements;\n            if (!isNumber && !isValidArray) {\n                Util.warn(_formatValue(val) +\n                    ' is a not valid value for \"' +\n                    attr +\n                    '\" attribute. The value should be a number or Array<number>(' +\n                    noOfElements +\n                    ')');\n            }\n            return val;\n        };\n    }\n}\nexport function getNumberOrAutoValidator() {\n    if (Konva.isUnminified) {\n        return function (val, attr) {\n            const isNumber = Util._isNumber(val);\n            const isAuto = val === 'auto';\n            if (!(isNumber || isAuto)) {\n                Util.warn(_formatValue(val) +\n                    ' is a not valid value for \"' +\n                    attr +\n                    '\" attribute. The value should be a number or \"auto\".');\n            }\n            return val;\n        };\n    }\n}\nexport function getStringValidator() {\n    if (Konva.isUnminified) {\n        return function (val, attr) {\n            if (!Util._isString(val)) {\n                Util.warn(_formatValue(val) +\n                    ' is a not valid value for \"' +\n                    attr +\n                    '\" attribute. The value should be a string.');\n            }\n            return val;\n        };\n    }\n}\nexport function getStringOrGradientValidator() {\n    if (Konva.isUnminified) {\n        return function (val, attr) {\n            const isString = Util._isString(val);\n            const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n                (val && val['addColorStop']);\n            if (!(isString || isGradient)) {\n                Util.warn(_formatValue(val) +\n                    ' is a not valid value for \"' +\n                    attr +\n                    '\" attribute. The value should be a string or a native gradient.');\n            }\n            return val;\n        };\n    }\n}\nexport function getFunctionValidator() {\n    if (Konva.isUnminified) {\n        return function (val, attr) {\n            if (!Util._isFunction(val)) {\n                Util.warn(_formatValue(val) +\n                    ' is a not valid value for \"' +\n                    attr +\n                    '\" attribute. The value should be a function.');\n            }\n            return val;\n        };\n    }\n}\nexport function getNumberArrayValidator() {\n    if (Konva.isUnminified) {\n        return function (val, attr) {\n            const TypedArray = Int8Array ? Object.getPrototypeOf(Int8Array) : null;\n            if (TypedArray && val instanceof TypedArray) {\n                return val;\n            }\n            if (!Util._isArray(val)) {\n                Util.warn(_formatValue(val) +\n                    ' is a not valid value for \"' +\n                    attr +\n                    '\" attribute. The value should be a array of numbers.');\n            }\n            else {\n                val.forEach(function (item) {\n                    if (!Util._isNumber(item)) {\n                        Util.warn('\"' +\n                            attr +\n                            '\" attribute has non numeric element ' +\n                            item +\n                            '. Make sure that all elements are numbers.');\n                    }\n                });\n            }\n            return val;\n        };\n    }\n}\nexport function getBooleanValidator() {\n    if (Konva.isUnminified) {\n        return function (val, attr) {\n            const isBool = val === true || val === false;\n            if (!isBool) {\n                Util.warn(_formatValue(val) +\n                    ' is a not valid value for \"' +\n                    attr +\n                    '\" attribute. The value should be a boolean.');\n            }\n            return val;\n        };\n    }\n}\nexport function getComponentValidator(components) {\n    if (Konva.isUnminified) {\n        return function (val, attr) {\n            if (val === undefined || val === null) {\n                return val;\n            }\n            if (!Util.isObject(val)) {\n                Util.warn(_formatValue(val) +\n                    ' is a not valid value for \"' +\n                    attr +\n                    '\" attribute. The value should be an object with properties ' +\n                    components);\n            }\n            return val;\n        };\n    }\n}\n", "import { Util } from \"./Util.js\";\nimport { getComponentValidator } from \"./Validators.js\";\nconst GET = 'get';\nconst SET = 'set';\nexport const Factory = {\n    addGetterSetter(constructor, attr, def, validator, after) {\n        Factory.addGetter(constructor, attr, def);\n        Factory.addSetter(constructor, attr, validator, after);\n        Factory.addOverloadedGetterSetter(constructor, attr);\n    },\n    addGetter(constructor, attr, def) {\n        const method = GET + Util._capitalize(attr);\n        constructor.prototype[method] =\n            constructor.prototype[method] ||\n                function () {\n                    const val = this.attrs[attr];\n                    return val === undefined ? def : val;\n                };\n    },\n    addSetter(constructor, attr, validator, after) {\n        const method = SET + Util._capitalize(attr);\n        if (!constructor.prototype[method]) {\n            Factory.overWriteSetter(constructor, attr, validator, after);\n        }\n    },\n    overWriteSetter(constructor, attr, validator, after) {\n        const method = SET + Util._capitalize(attr);\n        constructor.prototype[method] = function (val) {\n            if (validator && val !== undefined && val !== null) {\n                val = validator.call(this, val, attr);\n            }\n            this._setAttr(attr, val);\n            if (after) {\n                after.call(this);\n            }\n            return this;\n        };\n    },\n    addComponentsGetterSetter(constructor, attr, components, validator, after) {\n        const len = components.length, capitalize = Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr);\n        constructor.prototype[getter] = function () {\n            const ret = {};\n            for (let n = 0; n < len; n++) {\n                const component = components[n];\n                ret[component] = this.getAttr(attr + capitalize(component));\n            }\n            return ret;\n        };\n        const basicValidator = getComponentValidator(components);\n        constructor.prototype[setter] = function (val) {\n            const oldVal = this.attrs[attr];\n            if (validator) {\n                val = validator.call(this, val, attr);\n            }\n            if (basicValidator) {\n                basicValidator.call(this, val, attr);\n            }\n            for (const key in val) {\n                if (!val.hasOwnProperty(key)) {\n                    continue;\n                }\n                this._setAttr(attr + capitalize(key), val[key]);\n            }\n            if (!val) {\n                components.forEach((component) => {\n                    this._setAttr(attr + capitalize(component), undefined);\n                });\n            }\n            this._fireChangeEvent(attr, oldVal, val);\n            if (after) {\n                after.call(this);\n            }\n            return this;\n        };\n        Factory.addOverloadedGetterSetter(constructor, attr);\n    },\n    addOverloadedGetterSetter(constructor, attr) {\n        const capitalizedAttr = Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n        constructor.prototype[attr] = function () {\n            if (arguments.length) {\n                this[setter](arguments[0]);\n                return this;\n            }\n            return this[getter]();\n        };\n    },\n    addDeprecatedGetterSetter(constructor, attr, def, validator) {\n        Util.error('Adding deprecated ' + attr);\n        const method = GET + Util._capitalize(attr);\n        const message = attr +\n            ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n        constructor.prototype[method] = function () {\n            Util.error(message);\n            const val = this.attrs[attr];\n            return val === undefined ? def : val;\n        };\n        Factory.addSetter(constructor, attr, validator, function () {\n            Util.error(message);\n        });\n        Factory.addOverloadedGetterSetter(constructor, attr);\n    },\n    backCompat(constructor, methods) {\n        Util.each(methods, function (oldMethodName, newMethodName) {\n            const method = constructor.prototype[newMethodName];\n            const oldGetter = GET + Util._capitalize(oldMethodName);\n            const oldSetter = SET + Util._capitalize(oldMethodName);\n            function deprecated() {\n                method.apply(this, arguments);\n                Util.error('\"' +\n                    oldMethodName +\n                    '\" method is deprecated and will be removed soon. Use \"\"' +\n                    newMethodName +\n                    '\" instead.');\n            }\n            constructor.prototype[oldMethodName] = deprecated;\n            constructor.prototype[oldGetter] = deprecated;\n            constructor.prototype[oldSetter] = deprecated;\n        });\n    },\n    afterSetFilter() {\n        this._filterUpToDate = false;\n    },\n};\n", "import { HitCanvas, SceneCanvas } from \"./Canvas.js\";\nimport { isCSSFiltersSupported } from \"./Context.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Konva } from \"./Global.js\";\nimport { Transform, Util } from \"./Util.js\";\nimport { getBooleanValidator, getNumberValidator, getStringValidator, } from \"./Validators.js\";\nfunction parseCSSFilters(cssFilter) {\n    const filterRegex = /(\\w+)\\(([^)]+)\\)/g;\n    let match;\n    while ((match = filterRegex.exec(cssFilter)) !== null) {\n        const [, filterName, filterValue] = match;\n        switch (filterName) {\n            case 'blur': {\n                const blurRadius = parseFloat(filterValue.replace('px', ''));\n                return function (imageData) {\n                    this.blurRadius(blurRadius * 0.5);\n                    const KonvaFilters = Konva.Filters;\n                    if (KonvaFilters && KonvaFilters.Blur) {\n                        KonvaFilters.Blur.call(this, imageData);\n                    }\n                };\n            }\n            case 'brightness': {\n                const brightness = filterValue.includes('%')\n                    ? parseFloat(filterValue) / 100\n                    : parseFloat(filterValue);\n                return function (imageData) {\n                    this.brightness(brightness);\n                    const KonvaFilters = Konva.Filters;\n                    if (KonvaFilters && KonvaFilters.Brightness) {\n                        KonvaFilters.Brightness.call(this, imageData);\n                    }\n                };\n            }\n            case 'contrast': {\n                const contrast = parseFloat(filterValue);\n                return function (imageData) {\n                    const konvaContrast = 100 * (Math.sqrt(contrast) - 1);\n                    this.contrast(konvaContrast);\n                    const KonvaFilters = Konva.Filters;\n                    if (KonvaFilters && KonvaFilters.Contrast) {\n                        KonvaFilters.Contrast.call(this, imageData);\n                    }\n                };\n            }\n            case 'grayscale': {\n                return function (imageData) {\n                    const KonvaFilters = Konva.Filters;\n                    if (KonvaFilters && KonvaFilters.Grayscale) {\n                        KonvaFilters.Grayscale.call(this, imageData);\n                    }\n                };\n            }\n            case 'sepia': {\n                return function (imageData) {\n                    const KonvaFilters = Konva.Filters;\n                    if (KonvaFilters && KonvaFilters.Sepia) {\n                        KonvaFilters.Sepia.call(this, imageData);\n                    }\n                };\n            }\n            case 'invert': {\n                return function (imageData) {\n                    const KonvaFilters = Konva.Filters;\n                    if (KonvaFilters && KonvaFilters.Invert) {\n                        KonvaFilters.Invert.call(this, imageData);\n                    }\n                };\n            }\n            default:\n                Util.warn(`CSS filter \"${filterName}\" is not supported in fallback mode. Consider using function filters for better compatibility.`);\n                break;\n        }\n    }\n    return () => { };\n}\nconst ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', POINTERENTER = 'pointerenter', POINTERLEAVE = 'pointerleave', TOUCHENTER = 'touchenter', TOUCHLEAVE = 'touchleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n    'xChange.konva',\n    'yChange.konva',\n    'scaleXChange.konva',\n    'scaleYChange.konva',\n    'skewXChange.konva',\n    'skewYChange.konva',\n    'rotationChange.konva',\n    'offsetXChange.konva',\n    'offsetYChange.konva',\n    'transformsEnabledChange.konva',\n].join(SPACE);\nlet idCounter = 1;\nexport class Node {\n    constructor(config) {\n        this._id = idCounter++;\n        this.eventListeners = {};\n        this.attrs = {};\n        this.index = 0;\n        this._allEventListeners = null;\n        this.parent = null;\n        this._cache = new Map();\n        this._attachedDepsListeners = new Map();\n        this._lastPos = null;\n        this._batchingTransformChange = false;\n        this._needClearTransformCache = false;\n        this._filterUpToDate = false;\n        this._isUnderCache = false;\n        this._dragEventId = null;\n        this._shouldFireChangeEvents = false;\n        this.setAttrs(config);\n        this._shouldFireChangeEvents = true;\n    }\n    hasChildren() {\n        return false;\n    }\n    _clearCache(attr) {\n        if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n            this._cache.get(attr)) {\n            this._cache.get(attr).dirty = true;\n        }\n        else if (attr) {\n            this._cache.delete(attr);\n        }\n        else {\n            this._cache.clear();\n        }\n    }\n    _getCache(attr, privateGetter) {\n        let cache = this._cache.get(attr);\n        const isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n        const invalid = cache === undefined || (isTransform && cache.dirty === true);\n        if (invalid) {\n            cache = privateGetter.call(this);\n            this._cache.set(attr, cache);\n        }\n        return cache;\n    }\n    _calculate(name, deps, getter) {\n        if (!this._attachedDepsListeners.get(name)) {\n            const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n            this.on(depsString, () => {\n                this._clearCache(name);\n            });\n            this._attachedDepsListeners.set(name, true);\n        }\n        return this._getCache(name, getter);\n    }\n    _getCanvasCache() {\n        return this._cache.get(CANVAS);\n    }\n    _clearSelfAndDescendantCache(attr) {\n        this._clearCache(attr);\n        if (attr === ABSOLUTE_TRANSFORM) {\n            this.fire('absoluteTransformChange');\n        }\n    }\n    clearCache() {\n        if (this._cache.has(CANVAS)) {\n            const { scene, filter, hit } = this._cache.get(CANVAS);\n            Util.releaseCanvas(scene._canvas, filter._canvas, hit._canvas);\n            this._cache.delete(CANVAS);\n        }\n        this._clearSelfAndDescendantCache();\n        this._requestDraw();\n        return this;\n    }\n    cache(config) {\n        const conf = config || {};\n        let rect = {};\n        if (conf.x === undefined ||\n            conf.y === undefined ||\n            conf.width === undefined ||\n            conf.height === undefined) {\n            rect = this.getClientRect({\n                skipTransform: true,\n                relativeTo: this.getParent() || undefined,\n            });\n        }\n        let width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? Math.floor(rect.x) : conf.x, y = conf.y === undefined ? Math.floor(rect.y) : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false, hitCanvasPixelRatio = conf.hitCanvasPixelRatio || 1;\n        if (!width || !height) {\n            Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n            return;\n        }\n        const extraPaddingX = Math.abs(Math.round(rect.x) - x) > 0.5 ? 1 : 0;\n        const extraPaddingY = Math.abs(Math.round(rect.y) - y) > 0.5 ? 1 : 0;\n        width += offset * 2 + extraPaddingX;\n        height += offset * 2 + extraPaddingY;\n        x -= offset;\n        y -= offset;\n        const cachedSceneCanvas = new SceneCanvas({\n            pixelRatio: pixelRatio,\n            width: width,\n            height: height,\n        }), cachedFilterCanvas = new SceneCanvas({\n            pixelRatio: pixelRatio,\n            width: 0,\n            height: 0,\n            willReadFrequently: true,\n        }), cachedHitCanvas = new HitCanvas({\n            pixelRatio: hitCanvasPixelRatio,\n            width: width,\n            height: height,\n        }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n        const bufferCanvas = new SceneCanvas({\n            width: cachedSceneCanvas.width / cachedSceneCanvas.pixelRatio + Math.abs(x),\n            height: cachedSceneCanvas.height / cachedSceneCanvas.pixelRatio + Math.abs(y),\n            pixelRatio: cachedSceneCanvas.pixelRatio,\n        }), bufferContext = bufferCanvas.getContext();\n        cachedHitCanvas.isCache = true;\n        cachedSceneCanvas.isCache = true;\n        this._cache.delete(CANVAS);\n        this._filterUpToDate = false;\n        if (conf.imageSmoothingEnabled === false) {\n            cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n            cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n        }\n        sceneContext.save();\n        hitContext.save();\n        bufferContext.save();\n        sceneContext.translate(-x, -y);\n        hitContext.translate(-x, -y);\n        bufferContext.translate(-x, -y);\n        bufferCanvas.x = x;\n        bufferCanvas.y = y;\n        this._isUnderCache = true;\n        this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n        this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n        this.drawScene(cachedSceneCanvas, this, bufferCanvas);\n        this.drawHit(cachedHitCanvas, this);\n        this._isUnderCache = false;\n        sceneContext.restore();\n        hitContext.restore();\n        if (drawBorder) {\n            sceneContext.save();\n            sceneContext.beginPath();\n            sceneContext.rect(0, 0, width, height);\n            sceneContext.closePath();\n            sceneContext.setAttr('strokeStyle', 'red');\n            sceneContext.setAttr('lineWidth', 5);\n            sceneContext.stroke();\n            sceneContext.restore();\n        }\n        Util.releaseCanvas(bufferCanvas._canvas);\n        this._cache.set(CANVAS, {\n            scene: cachedSceneCanvas,\n            filter: cachedFilterCanvas,\n            hit: cachedHitCanvas,\n            x: x,\n            y: y,\n        });\n        this._requestDraw();\n        return this;\n    }\n    isCached() {\n        return this._cache.has(CANVAS);\n    }\n    getClientRect(config) {\n        throw new Error('abstract \"getClientRect\" method call');\n    }\n    _transformedRect(rect, top) {\n        const points = [\n            { x: rect.x, y: rect.y },\n            { x: rect.x + rect.width, y: rect.y },\n            { x: rect.x + rect.width, y: rect.y + rect.height },\n            { x: rect.x, y: rect.y + rect.height },\n        ];\n        let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n        const trans = this.getAbsoluteTransform(top);\n        points.forEach(function (point) {\n            const transformed = trans.point(point);\n            if (minX === undefined) {\n                minX = maxX = transformed.x;\n                minY = maxY = transformed.y;\n            }\n            minX = Math.min(minX, transformed.x);\n            minY = Math.min(minY, transformed.y);\n            maxX = Math.max(maxX, transformed.x);\n            maxY = Math.max(maxY, transformed.y);\n        });\n        return {\n            x: minX,\n            y: minY,\n            width: maxX - minX,\n            height: maxY - minY,\n        };\n    }\n    _drawCachedSceneCanvas(context) {\n        context.save();\n        context._applyOpacity(this);\n        context._applyGlobalCompositeOperation(this);\n        const canvasCache = this._getCanvasCache();\n        context.translate(canvasCache.x, canvasCache.y);\n        const cacheCanvas = this._getCachedSceneCanvas();\n        const ratio = cacheCanvas.pixelRatio;\n        context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n        context.restore();\n    }\n    _drawCachedHitCanvas(context) {\n        const canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n        context.save();\n        context.translate(canvasCache.x, canvasCache.y);\n        context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n        context.restore();\n    }\n    _getCachedSceneCanvas() {\n        let filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n        if (!filters || filters.length === 0) {\n            return sceneCanvas;\n        }\n        if (this._filterUpToDate) {\n            return filterCanvas;\n        }\n        let useNativeOnly = true;\n        for (let i = 0; i < filters.length; i++) {\n            const fallbackRequired = typeof filters[i] === 'string' && !isCSSFiltersSupported();\n            if (fallbackRequired) {\n            }\n            if (typeof filters[i] !== 'string' || !isCSSFiltersSupported()) {\n                useNativeOnly = false;\n                break;\n            }\n        }\n        const ratio = sceneCanvas.pixelRatio;\n        filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n        if (useNativeOnly) {\n            const finalFilter = filters.join(' ');\n            filterContext.save();\n            filterContext.setAttr('filter', finalFilter);\n            filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n            filterContext.restore();\n            this._filterUpToDate = true;\n            return filterCanvas;\n        }\n        try {\n            len = filters.length;\n            filterContext.clear();\n            filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n            imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n            for (n = 0; n < len; n++) {\n                filter = filters[n];\n                if (typeof filter === 'string') {\n                    filter = parseCSSFilters(filter);\n                }\n                filter.call(this, imageData);\n                filterContext.putImageData(imageData, 0, 0);\n            }\n        }\n        catch (e) {\n            Util.error('Unable to apply filter. ' +\n                e.message +\n                ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n        }\n        this._filterUpToDate = true;\n        return filterCanvas;\n    }\n    on(...args) {\n        const evtStr = args[0];\n        const selectorOrHandler = args[1];\n        const handler = args[2];\n        if (this._cache) {\n            this._cache.delete(ALL_LISTENERS);\n        }\n        if (args.length === 3) {\n            return this._delegate.apply(this, args);\n        }\n        const events = evtStr.split(SPACE);\n        for (let n = 0; n < events.length; n++) {\n            const event = events[n];\n            const parts = event.split('.');\n            const baseEvent = parts[0];\n            const name = parts[1] || '';\n            if (!this.eventListeners[baseEvent]) {\n                this.eventListeners[baseEvent] = [];\n            }\n            this.eventListeners[baseEvent].push({ name, handler: selectorOrHandler });\n        }\n        return this;\n    }\n    off(evtStr, callback) {\n        let events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n        this._cache && this._cache.delete(ALL_LISTENERS);\n        if (!evtStr) {\n            for (t in this.eventListeners) {\n                this._off(t);\n            }\n        }\n        for (n = 0; n < len; n++) {\n            event = events[n];\n            parts = event.split('.');\n            baseEvent = parts[0];\n            name = parts[1];\n            if (baseEvent) {\n                if (this.eventListeners[baseEvent]) {\n                    this._off(baseEvent, name, callback);\n                }\n            }\n            else {\n                for (t in this.eventListeners) {\n                    this._off(t, name, callback);\n                }\n            }\n        }\n        return this;\n    }\n    dispatchEvent(evt) {\n        const e = {\n            target: this,\n            type: evt.type,\n            evt: evt,\n        };\n        this.fire(evt.type, e);\n        return this;\n    }\n    addEventListener(type, handler) {\n        this.on(type, function (evt) {\n            handler.call(this, evt.evt);\n        });\n        return this;\n    }\n    removeEventListener(type) {\n        this.off(type);\n        return this;\n    }\n    _delegate(event, selector, handler) {\n        const stopNode = this;\n        this.on(event, function (evt) {\n            const targets = evt.target.findAncestors(selector, true, stopNode);\n            for (let i = 0; i < targets.length; i++) {\n                evt = Util.cloneObject(evt);\n                evt.currentTarget = targets[i];\n                handler.call(targets[i], evt);\n            }\n        });\n        return this;\n    }\n    remove() {\n        if (this.isDragging()) {\n            this.stopDrag();\n        }\n        DD._dragElements.delete(this._id);\n        DD._dragElements.forEach((elem, key) => {\n            if (this.isAncestorOf(elem.node)) {\n                DD._dragElements.delete(key);\n            }\n        });\n        this._remove();\n        return this;\n    }\n    _clearCaches() {\n        this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n        this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n        this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n        this._clearSelfAndDescendantCache(STAGE);\n        this._clearSelfAndDescendantCache(VISIBLE);\n        this._clearSelfAndDescendantCache(LISTENING);\n    }\n    _remove() {\n        this._clearCaches();\n        const parent = this.getParent();\n        if (parent && parent.children) {\n            parent.children.splice(this.index, 1);\n            parent._setChildrenIndices();\n            this.parent = null;\n        }\n    }\n    destroy() {\n        this.remove();\n        this.clearCache();\n        return this;\n    }\n    getAttr(attr) {\n        const method = 'get' + Util._capitalize(attr);\n        if (Util._isFunction(this[method])) {\n            return this[method]();\n        }\n        return this.attrs[attr];\n    }\n    getAncestors() {\n        let parent = this.getParent(), ancestors = [];\n        while (parent) {\n            ancestors.push(parent);\n            parent = parent.getParent();\n        }\n        return ancestors;\n    }\n    getAttrs() {\n        return this.attrs || {};\n    }\n    setAttrs(config) {\n        this._batchTransformChanges(() => {\n            let key, method;\n            if (!config) {\n                return this;\n            }\n            for (key in config) {\n                if (key === CHILDREN) {\n                    continue;\n                }\n                method = SET + Util._capitalize(key);\n                if (Util._isFunction(this[method])) {\n                    this[method](config[key]);\n                }\n                else {\n                    this._setAttr(key, config[key]);\n                }\n            }\n        });\n        return this;\n    }\n    isListening() {\n        return this._getCache(LISTENING, this._isListening);\n    }\n    _isListening(relativeTo) {\n        const listening = this.listening();\n        if (!listening) {\n            return false;\n        }\n        const parent = this.getParent();\n        if (parent && parent !== relativeTo && this !== relativeTo) {\n            return parent._isListening(relativeTo);\n        }\n        else {\n            return true;\n        }\n    }\n    isVisible() {\n        return this._getCache(VISIBLE, this._isVisible);\n    }\n    _isVisible(relativeTo) {\n        const visible = this.visible();\n        if (!visible) {\n            return false;\n        }\n        const parent = this.getParent();\n        if (parent && parent !== relativeTo && this !== relativeTo) {\n            return parent._isVisible(relativeTo);\n        }\n        else {\n            return true;\n        }\n    }\n    shouldDrawHit(top, skipDragCheck = false) {\n        if (top) {\n            return this._isVisible(top) && this._isListening(top);\n        }\n        const layer = this.getLayer();\n        let layerUnderDrag = false;\n        DD._dragElements.forEach((elem) => {\n            if (elem.dragStatus !== 'dragging') {\n                return;\n            }\n            else if (elem.node.nodeType === 'Stage') {\n                layerUnderDrag = true;\n            }\n            else if (elem.node.getLayer() === layer) {\n                layerUnderDrag = true;\n            }\n        });\n        const dragSkip = !skipDragCheck &&\n            !Konva.hitOnDragEnabled &&\n            (layerUnderDrag || Konva.isTransforming());\n        return this.isListening() && this.isVisible() && !dragSkip;\n    }\n    show() {\n        this.visible(true);\n        return this;\n    }\n    hide() {\n        this.visible(false);\n        return this;\n    }\n    getZIndex() {\n        return this.index || 0;\n    }\n    getAbsoluteZIndex() {\n        let depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n        function addChildren(children) {\n            nodes = [];\n            len = children.length;\n            for (n = 0; n < len; n++) {\n                child = children[n];\n                index++;\n                if (child.nodeType !== SHAPE) {\n                    nodes = nodes.concat(child.getChildren().slice());\n                }\n                if (child._id === that._id) {\n                    n = len;\n                }\n            }\n            if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n                addChildren(nodes);\n            }\n        }\n        const stage = this.getStage();\n        if (that.nodeType !== UPPER_STAGE && stage) {\n            addChildren(stage.getChildren());\n        }\n        return index;\n    }\n    getDepth() {\n        let depth = 0, parent = this.parent;\n        while (parent) {\n            depth++;\n            parent = parent.parent;\n        }\n        return depth;\n    }\n    _batchTransformChanges(func) {\n        this._batchingTransformChange = true;\n        func();\n        this._batchingTransformChange = false;\n        if (this._needClearTransformCache) {\n            this._clearCache(TRANSFORM);\n            this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n        }\n        this._needClearTransformCache = false;\n    }\n    setPosition(pos) {\n        this._batchTransformChanges(() => {\n            this.x(pos.x);\n            this.y(pos.y);\n        });\n        return this;\n    }\n    getPosition() {\n        return {\n            x: this.x(),\n            y: this.y(),\n        };\n    }\n    getRelativePointerPosition() {\n        const stage = this.getStage();\n        if (!stage) {\n            return null;\n        }\n        const pos = stage.getPointerPosition();\n        if (!pos) {\n            return null;\n        }\n        const transform = this.getAbsoluteTransform().copy();\n        transform.invert();\n        return transform.point(pos);\n    }\n    getAbsolutePosition(top) {\n        let haveCachedParent = false;\n        let parent = this.parent;\n        while (parent) {\n            if (parent.isCached()) {\n                haveCachedParent = true;\n                break;\n            }\n            parent = parent.parent;\n        }\n        if (haveCachedParent && !top) {\n            top = true;\n        }\n        const absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Transform(), offset = this.offset();\n        absoluteTransform.m = absoluteMatrix.slice();\n        absoluteTransform.translate(offset.x, offset.y);\n        return absoluteTransform.getTranslation();\n    }\n    setAbsolutePosition(pos) {\n        const { x, y, ...origTrans } = this._clearTransform();\n        this.attrs.x = x;\n        this.attrs.y = y;\n        this._clearCache(TRANSFORM);\n        const it = this._getAbsoluteTransform().copy();\n        it.invert();\n        it.translate(pos.x, pos.y);\n        pos = {\n            x: this.attrs.x + it.getTranslation().x,\n            y: this.attrs.y + it.getTranslation().y,\n        };\n        this._setTransform(origTrans);\n        this.setPosition({ x: pos.x, y: pos.y });\n        this._clearCache(TRANSFORM);\n        this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n        return this;\n    }\n    _setTransform(trans) {\n        let key;\n        for (key in trans) {\n            this.attrs[key] = trans[key];\n        }\n    }\n    _clearTransform() {\n        const trans = {\n            x: this.x(),\n            y: this.y(),\n            rotation: this.rotation(),\n            scaleX: this.scaleX(),\n            scaleY: this.scaleY(),\n            offsetX: this.offsetX(),\n            offsetY: this.offsetY(),\n            skewX: this.skewX(),\n            skewY: this.skewY(),\n        };\n        this.attrs.x = 0;\n        this.attrs.y = 0;\n        this.attrs.rotation = 0;\n        this.attrs.scaleX = 1;\n        this.attrs.scaleY = 1;\n        this.attrs.offsetX = 0;\n        this.attrs.offsetY = 0;\n        this.attrs.skewX = 0;\n        this.attrs.skewY = 0;\n        return trans;\n    }\n    move(change) {\n        let changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n        if (changeX !== undefined) {\n            x += changeX;\n        }\n        if (changeY !== undefined) {\n            y += changeY;\n        }\n        this.setPosition({ x: x, y: y });\n        return this;\n    }\n    _eachAncestorReverse(func, top) {\n        let family = [], parent = this.getParent(), len, n;\n        if (top && top._id === this._id) {\n            return;\n        }\n        family.unshift(this);\n        while (parent && (!top || parent._id !== top._id)) {\n            family.unshift(parent);\n            parent = parent.parent;\n        }\n        len = family.length;\n        for (n = 0; n < len; n++) {\n            func(family[n]);\n        }\n    }\n    rotate(theta) {\n        this.rotation(this.rotation() + theta);\n        return this;\n    }\n    moveToTop() {\n        if (!this.parent) {\n            Util.warn('Node has no parent. moveToTop function is ignored.');\n            return false;\n        }\n        const index = this.index, len = this.parent.getChildren().length;\n        if (index < len - 1) {\n            this.parent.children.splice(index, 1);\n            this.parent.children.push(this);\n            this.parent._setChildrenIndices();\n            return true;\n        }\n        return false;\n    }\n    moveUp() {\n        if (!this.parent) {\n            Util.warn('Node has no parent. moveUp function is ignored.');\n            return false;\n        }\n        const index = this.index, len = this.parent.getChildren().length;\n        if (index < len - 1) {\n            this.parent.children.splice(index, 1);\n            this.parent.children.splice(index + 1, 0, this);\n            this.parent._setChildrenIndices();\n            return true;\n        }\n        return false;\n    }\n    moveDown() {\n        if (!this.parent) {\n            Util.warn('Node has no parent. moveDown function is ignored.');\n            return false;\n        }\n        const index = this.index;\n        if (index > 0) {\n            this.parent.children.splice(index, 1);\n            this.parent.children.splice(index - 1, 0, this);\n            this.parent._setChildrenIndices();\n            return true;\n        }\n        return false;\n    }\n    moveToBottom() {\n        if (!this.parent) {\n            Util.warn('Node has no parent. moveToBottom function is ignored.');\n            return false;\n        }\n        const index = this.index;\n        if (index > 0) {\n            this.parent.children.splice(index, 1);\n            this.parent.children.unshift(this);\n            this.parent._setChildrenIndices();\n            return true;\n        }\n        return false;\n    }\n    setZIndex(zIndex) {\n        if (!this.parent) {\n            Util.warn('Node has no parent. zIndex parameter is ignored.');\n            return this;\n        }\n        if (zIndex < 0 || zIndex >= this.parent.children.length) {\n            Util.warn('Unexpected value ' +\n                zIndex +\n                ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n                (this.parent.children.length - 1) +\n                '.');\n        }\n        const index = this.index;\n        this.parent.children.splice(index, 1);\n        this.parent.children.splice(zIndex, 0, this);\n        this.parent._setChildrenIndices();\n        return this;\n    }\n    getAbsoluteOpacity() {\n        return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n    }\n    _getAbsoluteOpacity() {\n        let absOpacity = this.opacity();\n        const parent = this.getParent();\n        if (parent && !parent._isUnderCache) {\n            absOpacity *= parent.getAbsoluteOpacity();\n        }\n        return absOpacity;\n    }\n    moveTo(newContainer) {\n        if (this.getParent() !== newContainer) {\n            this._remove();\n            newContainer.add(this);\n        }\n        return this;\n    }\n    toObject() {\n        let attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n        const obj = {\n            attrs: {},\n            className: this.getClassName(),\n        };\n        for (key in attrs) {\n            val = attrs[key];\n            nonPlainObject =\n                Util.isObject(val) && !Util._isPlainObject(val) && !Util._isArray(val);\n            if (nonPlainObject) {\n                continue;\n            }\n            getter = typeof this[key] === 'function' && this[key];\n            delete attrs[key];\n            defaultValue = getter ? getter.call(this) : null;\n            attrs[key] = val;\n            if (defaultValue !== val) {\n                obj.attrs[key] = val;\n            }\n        }\n        return Util._prepareToStringify(obj);\n    }\n    toJSON() {\n        return JSON.stringify(this.toObject());\n    }\n    getParent() {\n        return this.parent;\n    }\n    findAncestors(selector, includeSelf, stopNode) {\n        const res = [];\n        if (includeSelf && this._isMatch(selector)) {\n            res.push(this);\n        }\n        let ancestor = this.parent;\n        while (ancestor) {\n            if (ancestor === stopNode) {\n                return res;\n            }\n            if (ancestor._isMatch(selector)) {\n                res.push(ancestor);\n            }\n            ancestor = ancestor.parent;\n        }\n        return res;\n    }\n    isAncestorOf(node) {\n        return false;\n    }\n    findAncestor(selector, includeSelf, stopNode) {\n        return this.findAncestors(selector, includeSelf, stopNode)[0];\n    }\n    _isMatch(selector) {\n        if (!selector) {\n            return false;\n        }\n        if (typeof selector === 'function') {\n            return selector(this);\n        }\n        let selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n        for (n = 0; n < len; n++) {\n            sel = selectorArr[n];\n            if (!Util.isValidSelector(sel)) {\n                Util.warn('Selector \"' +\n                    sel +\n                    '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n                Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n                Util.warn('Konva is awesome, right?');\n            }\n            if (sel.charAt(0) === '#') {\n                if (this.id() === sel.slice(1)) {\n                    return true;\n                }\n            }\n            else if (sel.charAt(0) === '.') {\n                if (this.hasName(sel.slice(1))) {\n                    return true;\n                }\n            }\n            else if (this.className === sel || this.nodeType === sel) {\n                return true;\n            }\n        }\n        return false;\n    }\n    getLayer() {\n        const parent = this.getParent();\n        return parent ? parent.getLayer() : null;\n    }\n    getStage() {\n        return this._getCache(STAGE, this._getStage);\n    }\n    _getStage() {\n        const parent = this.getParent();\n        if (parent) {\n            return parent.getStage();\n        }\n        else {\n            return null;\n        }\n    }\n    fire(eventType, evt = {}, bubble) {\n        evt.target = evt.target || this;\n        if (bubble) {\n            this._fireAndBubble(eventType, evt);\n        }\n        else {\n            this._fire(eventType, evt);\n        }\n        return this;\n    }\n    getAbsoluteTransform(top) {\n        if (top) {\n            return this._getAbsoluteTransform(top);\n        }\n        else {\n            return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n        }\n    }\n    _getAbsoluteTransform(top) {\n        let at;\n        if (top) {\n            at = new Transform();\n            this._eachAncestorReverse(function (node) {\n                const transformsEnabled = node.transformsEnabled();\n                if (transformsEnabled === 'all') {\n                    at.multiply(node.getTransform());\n                }\n                else if (transformsEnabled === 'position') {\n                    at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n                }\n            }, top);\n            return at;\n        }\n        else {\n            at = this._cache.get(ABSOLUTE_TRANSFORM) || new Transform();\n            if (this.parent) {\n                this.parent.getAbsoluteTransform().copyInto(at);\n            }\n            else {\n                at.reset();\n            }\n            const transformsEnabled = this.transformsEnabled();\n            if (transformsEnabled === 'all') {\n                at.multiply(this.getTransform());\n            }\n            else if (transformsEnabled === 'position') {\n                const x = this.attrs.x || 0;\n                const y = this.attrs.y || 0;\n                const offsetX = this.attrs.offsetX || 0;\n                const offsetY = this.attrs.offsetY || 0;\n                at.translate(x - offsetX, y - offsetY);\n            }\n            at.dirty = false;\n            return at;\n        }\n    }\n    getAbsoluteScale(top) {\n        let parent = this;\n        while (parent) {\n            if (parent._isUnderCache) {\n                top = parent;\n            }\n            parent = parent.getParent();\n        }\n        const transform = this.getAbsoluteTransform(top);\n        const attrs = transform.decompose();\n        return {\n            x: attrs.scaleX,\n            y: attrs.scaleY,\n        };\n    }\n    getAbsoluteRotation() {\n        return this.getAbsoluteTransform().decompose().rotation;\n    }\n    getTransform() {\n        return this._getCache(TRANSFORM, this._getTransform);\n    }\n    _getTransform() {\n        var _a, _b;\n        const m = this._cache.get(TRANSFORM) || new Transform();\n        m.reset();\n        const x = this.x(), y = this.y(), rotation = Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n        if (x !== 0 || y !== 0) {\n            m.translate(x, y);\n        }\n        if (rotation !== 0) {\n            m.rotate(rotation);\n        }\n        if (skewX !== 0 || skewY !== 0) {\n            m.skew(skewX, skewY);\n        }\n        if (scaleX !== 1 || scaleY !== 1) {\n            m.scale(scaleX, scaleY);\n        }\n        if (offsetX !== 0 || offsetY !== 0) {\n            m.translate(-1 * offsetX, -1 * offsetY);\n        }\n        m.dirty = false;\n        return m;\n    }\n    clone(obj) {\n        let attrs = Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n        for (key in obj) {\n            attrs[key] = obj[key];\n        }\n        const node = new this.constructor(attrs);\n        for (key in this.eventListeners) {\n            allListeners = this.eventListeners[key];\n            len = allListeners.length;\n            for (n = 0; n < len; n++) {\n                listener = allListeners[n];\n                if (listener.name.indexOf(KONVA) < 0) {\n                    if (!node.eventListeners[key]) {\n                        node.eventListeners[key] = [];\n                    }\n                    node.eventListeners[key].push(listener);\n                }\n            }\n        }\n        return node;\n    }\n    _toKonvaCanvas(config) {\n        config = config || {};\n        const box = this.getClientRect();\n        const stage = this.getStage(), x = config.x !== undefined ? config.x : Math.floor(box.x), y = config.y !== undefined ? config.y : Math.floor(box.y), pixelRatio = config.pixelRatio || 1, canvas = new SceneCanvas({\n            width: config.width || Math.ceil(box.width) || (stage ? stage.width() : 0),\n            height: config.height ||\n                Math.ceil(box.height) ||\n                (stage ? stage.height() : 0),\n            pixelRatio: pixelRatio,\n        }), context = canvas.getContext();\n        const bufferCanvas = new SceneCanvas({\n            width: canvas.width / canvas.pixelRatio + Math.abs(x),\n            height: canvas.height / canvas.pixelRatio + Math.abs(y),\n            pixelRatio: canvas.pixelRatio,\n        });\n        if (config.imageSmoothingEnabled === false) {\n            context._context.imageSmoothingEnabled = false;\n        }\n        context.save();\n        if (x || y) {\n            context.translate(-1 * x, -1 * y);\n        }\n        this.drawScene(canvas, undefined, bufferCanvas);\n        context.restore();\n        return canvas;\n    }\n    toCanvas(config) {\n        return this._toKonvaCanvas(config)._canvas;\n    }\n    toDataURL(config) {\n        config = config || {};\n        const mimeType = config.mimeType || null, quality = config.quality || null;\n        const url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n        if (config.callback) {\n            config.callback(url);\n        }\n        return url;\n    }\n    toImage(config) {\n        return new Promise((resolve, reject) => {\n            try {\n                const callback = config === null || config === void 0 ? void 0 : config.callback;\n                if (callback)\n                    delete config.callback;\n                Util._urlToImage(this.toDataURL(config), function (img) {\n                    resolve(img);\n                    callback === null || callback === void 0 ? void 0 : callback(img);\n                });\n            }\n            catch (err) {\n                reject(err);\n            }\n        });\n    }\n    toBlob(config) {\n        return new Promise((resolve, reject) => {\n            try {\n                const callback = config === null || config === void 0 ? void 0 : config.callback;\n                if (callback)\n                    delete config.callback;\n                this.toCanvas(config).toBlob((blob) => {\n                    resolve(blob);\n                    callback === null || callback === void 0 ? void 0 : callback(blob);\n                }, config === null || config === void 0 ? void 0 : config.mimeType, config === null || config === void 0 ? void 0 : config.quality);\n            }\n            catch (err) {\n                reject(err);\n            }\n        });\n    }\n    setSize(size) {\n        this.width(size.width);\n        this.height(size.height);\n        return this;\n    }\n    getSize() {\n        return {\n            width: this.width(),\n            height: this.height(),\n        };\n    }\n    getClassName() {\n        return this.className || this.nodeType;\n    }\n    getType() {\n        return this.nodeType;\n    }\n    getDragDistance() {\n        if (this.attrs.dragDistance !== undefined) {\n            return this.attrs.dragDistance;\n        }\n        else if (this.parent) {\n            return this.parent.getDragDistance();\n        }\n        else {\n            return Konva.dragDistance;\n        }\n    }\n    _off(type, name, callback) {\n        let evtListeners = this.eventListeners[type], i, evtName, handler;\n        for (i = 0; i < evtListeners.length; i++) {\n            evtName = evtListeners[i].name;\n            handler = evtListeners[i].handler;\n            if ((evtName !== 'konva' || name === 'konva') &&\n                (!name || evtName === name) &&\n                (!callback || callback === handler)) {\n                evtListeners.splice(i, 1);\n                if (evtListeners.length === 0) {\n                    delete this.eventListeners[type];\n                    break;\n                }\n                i--;\n            }\n        }\n    }\n    _fireChangeEvent(attr, oldVal, newVal) {\n        this._fire(attr + CHANGE, {\n            oldVal: oldVal,\n            newVal: newVal,\n        });\n    }\n    addName(name) {\n        if (!this.hasName(name)) {\n            const oldName = this.name();\n            const newName = oldName ? oldName + ' ' + name : name;\n            this.name(newName);\n        }\n        return this;\n    }\n    hasName(name) {\n        if (!name) {\n            return false;\n        }\n        const fullName = this.name();\n        if (!fullName) {\n            return false;\n        }\n        const names = (fullName || '').split(/\\s/g);\n        return names.indexOf(name) !== -1;\n    }\n    removeName(name) {\n        const names = (this.name() || '').split(/\\s/g);\n        const index = names.indexOf(name);\n        if (index !== -1) {\n            names.splice(index, 1);\n            this.name(names.join(' '));\n        }\n        return this;\n    }\n    setAttr(attr, val) {\n        const func = this[SET + Util._capitalize(attr)];\n        if (Util._isFunction(func)) {\n            func.call(this, val);\n        }\n        else {\n            this._setAttr(attr, val);\n        }\n        return this;\n    }\n    _requestDraw() {\n        if (Konva.autoDrawEnabled) {\n            const drawNode = this.getLayer() || this.getStage();\n            drawNode === null || drawNode === void 0 ? void 0 : drawNode.batchDraw();\n        }\n    }\n    _setAttr(key, val) {\n        const oldVal = this.attrs[key];\n        if (oldVal === val && !Util.isObject(val)) {\n            return;\n        }\n        if (val === undefined || val === null) {\n            delete this.attrs[key];\n        }\n        else {\n            this.attrs[key] = val;\n        }\n        if (this._shouldFireChangeEvents) {\n            this._fireChangeEvent(key, oldVal, val);\n        }\n        this._requestDraw();\n    }\n    _setComponentAttr(key, component, val) {\n        let oldVal;\n        if (val !== undefined) {\n            oldVal = this.attrs[key];\n            if (!oldVal) {\n                this.attrs[key] = this.getAttr(key);\n            }\n            this.attrs[key][component] = val;\n            this._fireChangeEvent(key, oldVal, val);\n        }\n    }\n    _fireAndBubble(eventType, evt, compareShape) {\n        if (evt && this.nodeType === SHAPE) {\n            evt.target = this;\n        }\n        const nonBubbling = [\n            MOUSEENTER,\n            MOUSELEAVE,\n            POINTERENTER,\n            POINTERLEAVE,\n            TOUCHENTER,\n            TOUCHLEAVE,\n        ];\n        const shouldStop = nonBubbling.indexOf(eventType) !== -1 &&\n            ((compareShape &&\n                (this === compareShape ||\n                    (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n                (this.nodeType === 'Stage' && !compareShape));\n        if (!shouldStop) {\n            this._fire(eventType, evt);\n            const stopBubble = nonBubbling.indexOf(eventType) !== -1 &&\n                compareShape &&\n                compareShape.isAncestorOf &&\n                compareShape.isAncestorOf(this) &&\n                !compareShape.isAncestorOf(this.parent);\n            if (((evt && !evt.cancelBubble) || !evt) &&\n                this.parent &&\n                this.parent.isListening() &&\n                !stopBubble) {\n                if (compareShape && compareShape.parent) {\n                    this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n                }\n                else {\n                    this._fireAndBubble.call(this.parent, eventType, evt);\n                }\n            }\n        }\n    }\n    _getProtoListeners(eventType) {\n        var _a, _b;\n        const { nodeType } = this;\n        const allListeners = Node.protoListenerMap.get(nodeType) || {};\n        let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n        if (events === undefined) {\n            events = [];\n            let obj = Object.getPrototypeOf(this);\n            while (obj) {\n                const hierarchyEvents = (_b = (_a = obj.eventListeners) === null || _a === void 0 ? void 0 : _a[eventType]) !== null && _b !== void 0 ? _b : [];\n                events.push(...hierarchyEvents);\n                obj = Object.getPrototypeOf(obj);\n            }\n            allListeners[eventType] = events;\n            Node.protoListenerMap.set(nodeType, allListeners);\n        }\n        return events;\n    }\n    _fire(eventType, evt) {\n        evt = evt || {};\n        evt.currentTarget = this;\n        evt.type = eventType;\n        const topListeners = this._getProtoListeners(eventType);\n        if (topListeners) {\n            const list = topListeners.slice();\n            for (let i = 0; i < list.length; i++) {\n                list[i].handler.call(this, evt);\n            }\n        }\n        const selfListeners = this.eventListeners[eventType];\n        if (selfListeners) {\n            const list = selfListeners.slice();\n            const origLen = list.length;\n            for (let i = 0; i < list.length; i++) {\n                list[i].handler.call(this, evt);\n            }\n            const liveListeners = this.eventListeners[eventType];\n            if (liveListeners) {\n                for (let i = origLen; i < liveListeners.length; i++) {\n                    liveListeners[i].handler.call(this, evt);\n                }\n            }\n        }\n    }\n    draw() {\n        this.drawScene();\n        this.drawHit();\n        return this;\n    }\n    _createDragElement(evt) {\n        const pointerId = evt ? evt.pointerId : undefined;\n        const stage = this.getStage();\n        const ap = this.getAbsolutePosition();\n        if (!stage) {\n            return;\n        }\n        const pos = stage._getPointerById(pointerId) ||\n            stage._changedPointerPositions[0] ||\n            ap;\n        DD._dragElements.set(this._id, {\n            node: this,\n            startPointerPos: pos,\n            offset: {\n                x: pos.x - ap.x,\n                y: pos.y - ap.y,\n            },\n            dragStatus: 'ready',\n            pointerId,\n            startEvent: evt,\n        });\n    }\n    startDrag(evt, bubbleEvent = true) {\n        if (!DD._dragElements.has(this._id)) {\n            this._createDragElement(evt);\n        }\n        const elem = DD._dragElements.get(this._id);\n        elem.dragStatus = 'dragging';\n        this.fire('dragstart', {\n            type: 'dragstart',\n            target: this,\n            evt: (elem.startEvent && elem.startEvent.evt) || (evt && evt.evt),\n        }, bubbleEvent);\n    }\n    _setDragPosition(evt, elem) {\n        const pos = this.getStage()._getPointerById(elem.pointerId);\n        if (!pos) {\n            return;\n        }\n        let newNodePos = {\n            x: pos.x - elem.offset.x,\n            y: pos.y - elem.offset.y,\n        };\n        const dbf = this.dragBoundFunc();\n        if (dbf !== undefined) {\n            const bounded = dbf.call(this, newNodePos, evt);\n            if (!bounded) {\n                Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n            }\n            else {\n                newNodePos = bounded;\n            }\n        }\n        if (!this._lastPos ||\n            this._lastPos.x !== newNodePos.x ||\n            this._lastPos.y !== newNodePos.y) {\n            this.setAbsolutePosition(newNodePos);\n            this._requestDraw();\n        }\n        this._lastPos = newNodePos;\n    }\n    stopDrag(evt) {\n        const elem = DD._dragElements.get(this._id);\n        if (elem) {\n            elem.dragStatus = 'stopped';\n        }\n        DD._endDragBefore(evt);\n        DD._endDragAfter(evt);\n    }\n    setDraggable(draggable) {\n        this._setAttr('draggable', draggable);\n        this._dragChange();\n    }\n    isDragging() {\n        const elem = DD._dragElements.get(this._id);\n        return elem ? elem.dragStatus === 'dragging' : false;\n    }\n    _listenDrag() {\n        this._dragCleanup();\n        this.on('mousedown.konva touchstart.konva', function (evt) {\n            const shouldCheckButton = evt.evt['button'] !== undefined;\n            const canDrag = !shouldCheckButton || Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n            if (!canDrag) {\n                return;\n            }\n            if (this.isDragging()) {\n                return;\n            }\n            let hasDraggingChild = false;\n            DD._dragElements.forEach((elem) => {\n                if (this.isAncestorOf(elem.node)) {\n                    hasDraggingChild = true;\n                }\n            });\n            if (!hasDraggingChild) {\n                this._createDragElement(evt);\n            }\n        });\n    }\n    _dragChange() {\n        if (this.attrs.draggable) {\n            this._listenDrag();\n        }\n        else {\n            this._dragCleanup();\n            const stage = this.getStage();\n            if (!stage) {\n                return;\n            }\n            const dragElement = DD._dragElements.get(this._id);\n            const isDragging = dragElement && dragElement.dragStatus === 'dragging';\n            const isReady = dragElement && dragElement.dragStatus === 'ready';\n            if (isDragging) {\n                this.stopDrag();\n            }\n            else if (isReady) {\n                DD._dragElements.delete(this._id);\n            }\n        }\n    }\n    _dragCleanup() {\n        this.off('mousedown.konva');\n        this.off('touchstart.konva');\n    }\n    isClientRectOnScreen(margin = { x: 0, y: 0 }) {\n        const stage = this.getStage();\n        if (!stage) {\n            return false;\n        }\n        const screenRect = {\n            x: -margin.x,\n            y: -margin.y,\n            width: stage.width() + 2 * margin.x,\n            height: stage.height() + 2 * margin.y,\n        };\n        return Util.haveIntersection(screenRect, this.getClientRect());\n    }\n    static create(data, container) {\n        if (Util._isString(data)) {\n            data = JSON.parse(data);\n        }\n        return this._createNode(data, container);\n    }\n    static _createNode(obj, container) {\n        let className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n        if (container) {\n            obj.attrs.container = container;\n        }\n        if (!Konva[className]) {\n            Util.warn('Can not find a node with class name \"' +\n                className +\n                '\". Fallback to \"Shape\".');\n            className = 'Shape';\n        }\n        const Class = Konva[className];\n        no = new Class(obj.attrs);\n        if (children) {\n            len = children.length;\n            for (n = 0; n < len; n++) {\n                no.add(Node._createNode(children[n]));\n            }\n        }\n        return no;\n    }\n}\nNode.protoListenerMap = new Map();\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on(TRANSFORM_CHANGE_STR, function () {\n    if (this._batchingTransformChange) {\n        this._needClearTransformCache = true;\n        return;\n    }\n    this._clearCache(TRANSFORM);\n    this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on('visibleChange.konva', function () {\n    this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on('listeningChange.konva', function () {\n    this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on('opacityChange.konva', function () {\n    this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, getNumberValidator());\naddGetterSetter(Node, 'y', 0, getNumberValidator());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', getStringValidator());\naddGetterSetter(Node, 'opacity', 1, getNumberValidator());\naddGetterSetter(Node, 'name', '', getStringValidator());\naddGetterSetter(Node, 'id', '', getStringValidator());\naddGetterSetter(Node, 'rotation', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, getNumberValidator());\naddGetterSetter(Node, 'scaleY', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, getNumberValidator());\naddGetterSetter(Node, 'skewY', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, getNumberValidator());\naddGetterSetter(Node, 'offsetY', 0, getNumberValidator());\naddGetterSetter(Node, 'dragDistance', undefined, getNumberValidator());\naddGetterSetter(Node, 'width', 0, getNumberValidator());\naddGetterSetter(Node, 'height', 0, getNumberValidator());\naddGetterSetter(Node, 'listening', true, getBooleanValidator());\naddGetterSetter(Node, 'preventDefault', true, getBooleanValidator());\naddGetterSetter(Node, 'filters', undefined, function (val) {\n    this._filterUpToDate = false;\n    return val;\n});\naddGetterSetter(Node, 'visible', true, getBooleanValidator());\naddGetterSetter(Node, 'transformsEnabled', 'all', getStringValidator());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, getBooleanValidator());\nFactory.backCompat(Node, {\n    rotateDeg: 'rotate',\n    setRotationDeg: 'setRotation',\n    getRotationDeg: 'getRotation',\n});\n", "import { Factory } from \"./Factory.js\";\nimport { Node } from \"./Node.js\";\nimport { getNumberValidator } from \"./Validators.js\";\nexport class Container extends Node {\n    constructor() {\n        super(...arguments);\n        this.children = [];\n    }\n    getChildren(filterFunc) {\n        const children = this.children || [];\n        if (filterFunc) {\n            return children.filter(filterFunc);\n        }\n        return children;\n    }\n    hasChildren() {\n        return this.getChildren().length > 0;\n    }\n    removeChildren() {\n        this.getChildren().forEach((child) => {\n            child.parent = null;\n            child.index = 0;\n            child.remove();\n        });\n        this.children = [];\n        this._requestDraw();\n        return this;\n    }\n    destroyChildren() {\n        this.getChildren().forEach((child) => {\n            child.parent = null;\n            child.index = 0;\n            child.destroy();\n        });\n        this.children = [];\n        this._requestDraw();\n        return this;\n    }\n    add(...children) {\n        if (children.length === 0) {\n            return this;\n        }\n        if (children.length > 1) {\n            for (let i = 0; i < children.length; i++) {\n                this.add(children[i]);\n            }\n            return this;\n        }\n        const child = children[0];\n        if (child.getParent()) {\n            child.moveTo(this);\n            return this;\n        }\n        this._validateAdd(child);\n        child.index = this.getChildren().length;\n        child.parent = this;\n        child._clearCaches();\n        this.getChildren().push(child);\n        this._fire('add', {\n            child: child,\n        });\n        this._requestDraw();\n        return this;\n    }\n    destroy() {\n        if (this.hasChildren()) {\n            this.destroyChildren();\n        }\n        super.destroy();\n        return this;\n    }\n    find(selector) {\n        return this._generalFind(selector, false);\n    }\n    findOne(selector) {\n        const result = this._generalFind(selector, true);\n        return result.length > 0 ? result[0] : undefined;\n    }\n    _generalFind(selector, findOne) {\n        const retArr = [];\n        this._descendants((node) => {\n            const valid = node._isMatch(selector);\n            if (valid) {\n                retArr.push(node);\n            }\n            if (valid && findOne) {\n                return true;\n            }\n            return false;\n        });\n        return retArr;\n    }\n    _descendants(fn) {\n        let shouldStop = false;\n        const children = this.getChildren();\n        for (const child of children) {\n            shouldStop = fn(child);\n            if (shouldStop) {\n                return true;\n            }\n            if (!child.hasChildren()) {\n                continue;\n            }\n            shouldStop = child._descendants(fn);\n            if (shouldStop) {\n                return true;\n            }\n        }\n        return false;\n    }\n    toObject() {\n        const obj = Node.prototype.toObject.call(this);\n        obj.children = [];\n        this.getChildren().forEach((child) => {\n            obj.children.push(child.toObject());\n        });\n        return obj;\n    }\n    isAncestorOf(node) {\n        let parent = node.getParent();\n        while (parent) {\n            if (parent._id === this._id) {\n                return true;\n            }\n            parent = parent.getParent();\n        }\n        return false;\n    }\n    clone(obj) {\n        const node = Node.prototype.clone.call(this, obj);\n        this.getChildren().forEach(function (no) {\n            node.add(no.clone());\n        });\n        return node;\n    }\n    getAllIntersections(pos) {\n        const arr = [];\n        this.find('Shape').forEach((shape) => {\n            if (shape.isVisible() && shape.intersects(pos)) {\n                arr.push(shape);\n            }\n        });\n        return arr;\n    }\n    _clearSelfAndDescendantCache(attr) {\n        var _a;\n        super._clearSelfAndDescendantCache(attr);\n        if (this.isCached()) {\n            return;\n        }\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n            node._clearSelfAndDescendantCache(attr);\n        });\n    }\n    _setChildrenIndices() {\n        var _a;\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n            child.index = n;\n        });\n        this._requestDraw();\n    }\n    drawScene(can, top, bufferCanvas) {\n        const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n        const caching = canvas && canvas.isCache;\n        if (!this.isVisible() && !caching) {\n            return this;\n        }\n        if (cachedSceneCanvas) {\n            context.save();\n            const m = this.getAbsoluteTransform(top).getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            this._drawCachedSceneCanvas(context);\n            context.restore();\n        }\n        else {\n            this._drawChildren('drawScene', canvas, top, bufferCanvas);\n        }\n        return this;\n    }\n    drawHit(can, top) {\n        if (!this.shouldDrawHit(top)) {\n            return this;\n        }\n        const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n        if (cachedHitCanvas) {\n            context.save();\n            const m = this.getAbsoluteTransform(top).getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            this._drawCachedHitCanvas(context);\n            context.restore();\n        }\n        else {\n            this._drawChildren('drawHit', canvas, top);\n        }\n        return this;\n    }\n    _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n        var _a;\n        const context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n            clipFunc;\n        const selfCache = top === this;\n        if (hasClip) {\n            context.save();\n            const transform = this.getAbsoluteTransform(top);\n            let m = transform.getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            context.beginPath();\n            let clipArgs;\n            if (clipFunc) {\n                clipArgs = clipFunc.call(this, context, this);\n            }\n            else {\n                const clipX = this.clipX();\n                const clipY = this.clipY();\n                context.rect(clipX || 0, clipY || 0, clipWidth, clipHeight);\n            }\n            context.clip.apply(context, clipArgs);\n            m = transform.copy().invert().getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n        }\n        const hasComposition = !selfCache &&\n            this.globalCompositeOperation() !== 'source-over' &&\n            drawMethod === 'drawScene';\n        if (hasComposition) {\n            context.save();\n            context._applyGlobalCompositeOperation(this);\n        }\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n            child[drawMethod](canvas, top, bufferCanvas);\n        });\n        if (hasComposition) {\n            context.restore();\n        }\n        if (hasClip) {\n            context.restore();\n        }\n    }\n    getClientRect(config = {}) {\n        var _a;\n        const skipTransform = config.skipTransform;\n        const relativeTo = config.relativeTo;\n        let minX, minY, maxX, maxY;\n        let selfRect = {\n            x: Infinity,\n            y: Infinity,\n            width: 0,\n            height: 0,\n        };\n        const that = this;\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n            if (!child.visible()) {\n                return;\n            }\n            const rect = child.getClientRect({\n                relativeTo: that,\n                skipShadow: config.skipShadow,\n                skipStroke: config.skipStroke,\n            });\n            if (rect.width === 0 && rect.height === 0) {\n                return;\n            }\n            if (minX === undefined) {\n                minX = rect.x;\n                minY = rect.y;\n                maxX = rect.x + rect.width;\n                maxY = rect.y + rect.height;\n            }\n            else {\n                minX = Math.min(minX, rect.x);\n                minY = Math.min(minY, rect.y);\n                maxX = Math.max(maxX, rect.x + rect.width);\n                maxY = Math.max(maxY, rect.y + rect.height);\n            }\n        });\n        const shapes = this.find('Shape');\n        let hasVisible = false;\n        for (let i = 0; i < shapes.length; i++) {\n            const shape = shapes[i];\n            if (shape._isVisible(this)) {\n                hasVisible = true;\n                break;\n            }\n        }\n        if (hasVisible && minX !== undefined) {\n            selfRect = {\n                x: minX,\n                y: minY,\n                width: maxX - minX,\n                height: maxY - minY,\n            };\n        }\n        else {\n            selfRect = {\n                x: 0,\n                y: 0,\n                width: 0,\n                height: 0,\n            };\n        }\n        if (!skipTransform) {\n            return this._transformedRect(selfRect, relativeTo);\n        }\n        return selfRect;\n    }\n}\nFactory.addComponentsGetterSetter(Container, 'clip', [\n    'x',\n    'y',\n    'width',\n    'height',\n]);\nFactory.addGetterSetter(Container, 'clipX', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipY', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipWidth', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipHeight', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipFunc');\n", "import { Konva } from \"./Global.js\";\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Konva._global['PointerEvent'] !== undefined;\nexport function getCapturedShape(pointerId) {\n    return Captures.get(pointerId);\n}\nexport function createEvent(evt) {\n    return {\n        evt,\n        pointerId: evt.pointerId,\n    };\n}\nexport function hasPointerCapture(pointerId, shape) {\n    return Captures.get(pointerId) === shape;\n}\nexport function setPointerCapture(pointerId, shape) {\n    releaseCapture(pointerId);\n    const stage = shape.getStage();\n    if (!stage)\n        return;\n    Captures.set(pointerId, shape);\n    if (SUPPORT_POINTER_EVENTS) {\n        shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n    }\n}\nexport function releaseCapture(pointerId, target) {\n    const shape = Captures.get(pointerId);\n    if (!shape)\n        return;\n    const stage = shape.getStage();\n    if (stage && stage.content) {\n    }\n    Captures.delete(pointerId);\n    if (SUPPORT_POINTER_EVENTS) {\n        shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n    }\n}\n", "import { Util } from \"./Util.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Container } from \"./Container.js\";\nimport { Konva } from \"./Global.js\";\nimport { SceneCanvas, HitCanvas } from \"./Canvas.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { _registerNode } from \"./Global.js\";\nimport * as PointerEvents from \"./PointerEvents.js\";\nconst STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', POINTEROUT = 'pointerout', POINTERLEAVE = 'pointerleave', POINTEROVER = 'pointerover', POINTERENTER = 'pointerenter', CONTEXTMENU = 'contextmenu', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TOUCHMOVE = 'touchmove', TOUCHCANCEL = 'touchcancel', WHEEL = 'wheel', MAX_LAYERS_NUMBER = 5, EVENTS = [\n    [MOUSEENTER, '_pointerenter'],\n    [MOUSEDOWN, '_pointerdown'],\n    [MOUSEMOVE, '_pointermove'],\n    [MOUSEUP, '_pointerup'],\n    [MOUSELEAVE, '_pointerleave'],\n    [TOUCHSTART, '_pointerdown'],\n    [TOUCHMOVE, '_pointermove'],\n    [TOUCHEND, '_pointerup'],\n    [TOUCHCANCEL, '_pointercancel'],\n    [MOUSEOVER, '_pointerover'],\n    [WHEEL, '_wheel'],\n    [CONTEXTMENU, '_contextmenu'],\n    [POINTERDOWN, '_pointerdown'],\n    [POINTERMOVE, '_pointermove'],\n    [POINTERUP, '_pointerup'],\n    [POINTERCANCEL, '_pointercancel'],\n    [POINTERLEAVE, '_pointerleave'],\n    [LOSTPOINTERCAPTURE, '_lostpointercapture'],\n];\nconst EVENTS_MAP = {\n    mouse: {\n        [POINTEROUT]: MOUSEOUT,\n        [POINTERLEAVE]: MOUSELEAVE,\n        [POINTEROVER]: MOUSEOVER,\n        [POINTERENTER]: MOUSEENTER,\n        [POINTERMOVE]: MOUSEMOVE,\n        [POINTERDOWN]: MOUSEDOWN,\n        [POINTERUP]: MOUSEUP,\n        [POINTERCANCEL]: 'mousecancel',\n        pointerclick: 'click',\n        pointerdblclick: 'dblclick',\n    },\n    touch: {\n        [POINTEROUT]: 'touchout',\n        [POINTERLEAVE]: 'touchleave',\n        [POINTEROVER]: 'touchover',\n        [POINTERENTER]: 'touchenter',\n        [POINTERMOVE]: TOUCHMOVE,\n        [POINTERDOWN]: TOUCHSTART,\n        [POINTERUP]: TOUCHEND,\n        [POINTERCANCEL]: TOUCHCANCEL,\n        pointerclick: 'tap',\n        pointerdblclick: 'dbltap',\n    },\n    pointer: {\n        [POINTEROUT]: POINTEROUT,\n        [POINTERLEAVE]: POINTERLEAVE,\n        [POINTEROVER]: POINTEROVER,\n        [POINTERENTER]: POINTERENTER,\n        [POINTERMOVE]: POINTERMOVE,\n        [POINTERDOWN]: POINTERDOWN,\n        [POINTERUP]: POINTERUP,\n        [POINTERCANCEL]: POINTERCANCEL,\n        pointerclick: 'pointerclick',\n        pointerdblclick: 'pointerdblclick',\n    },\n};\nconst getEventType = (type) => {\n    if (type.indexOf('pointer') >= 0) {\n        return 'pointer';\n    }\n    if (type.indexOf('touch') >= 0) {\n        return 'touch';\n    }\n    return 'mouse';\n};\nconst getEventsMap = (eventType) => {\n    const type = getEventType(eventType);\n    if (type === 'pointer') {\n        return Konva.pointerEventsEnabled && EVENTS_MAP.pointer;\n    }\n    if (type === 'touch') {\n        return EVENTS_MAP.touch;\n    }\n    if (type === 'mouse') {\n        return EVENTS_MAP.mouse;\n    }\n};\nfunction checkNoClip(attrs = {}) {\n    if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n        Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n    }\n    return attrs;\n}\nconst NO_POINTERS_MESSAGE = `Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);`;\nexport const stages = [];\nexport class Stage extends Container {\n    constructor(config) {\n        super(checkNoClip(config));\n        this._pointerPositions = [];\n        this._changedPointerPositions = [];\n        this._buildDOM();\n        this._bindContentEvents();\n        stages.push(this);\n        this.on('widthChange.konva heightChange.konva', this._resizeDOM);\n        this.on('visibleChange.konva', this._checkVisibility);\n        this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', () => {\n            checkNoClip(this.attrs);\n        });\n        this._checkVisibility();\n    }\n    _validateAdd(child) {\n        const isLayer = child.getType() === 'Layer';\n        const isFastLayer = child.getType() === 'FastLayer';\n        const valid = isLayer || isFastLayer;\n        if (!valid) {\n            Util.throw('You may only add layers to the stage.');\n        }\n    }\n    _checkVisibility() {\n        if (!this.content) {\n            return;\n        }\n        const style = this.visible() ? '' : 'none';\n        this.content.style.display = style;\n    }\n    setContainer(container) {\n        if (typeof container === STRING) {\n            let id;\n            if (container.charAt(0) === '.') {\n                const className = container.slice(1);\n                container = document.getElementsByClassName(className)[0];\n            }\n            else {\n                if (container.charAt(0) !== '#') {\n                    id = container;\n                }\n                else {\n                    id = container.slice(1);\n                }\n                container = document.getElementById(id);\n            }\n            if (!container) {\n                throw 'Can not find container in document with id ' + id;\n            }\n        }\n        this._setAttr('container', container);\n        if (this.content) {\n            if (this.content.parentElement) {\n                this.content.parentElement.removeChild(this.content);\n            }\n            container.appendChild(this.content);\n        }\n        return this;\n    }\n    shouldDrawHit() {\n        return true;\n    }\n    clear() {\n        const layers = this.children, len = layers.length;\n        for (let n = 0; n < len; n++) {\n            layers[n].clear();\n        }\n        return this;\n    }\n    clone(obj) {\n        if (!obj) {\n            obj = {};\n        }\n        obj.container =\n            typeof document !== 'undefined' && document.createElement('div');\n        return Container.prototype.clone.call(this, obj);\n    }\n    destroy() {\n        super.destroy();\n        const content = this.content;\n        if (content && Util._isInDocument(content)) {\n            this.container().removeChild(content);\n        }\n        const index = stages.indexOf(this);\n        if (index > -1) {\n            stages.splice(index, 1);\n        }\n        Util.releaseCanvas(this.bufferCanvas._canvas, this.bufferHitCanvas._canvas);\n        return this;\n    }\n    getPointerPosition() {\n        const pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n        if (!pos) {\n            Util.warn(NO_POINTERS_MESSAGE);\n            return null;\n        }\n        return {\n            x: pos.x,\n            y: pos.y,\n        };\n    }\n    _getPointerById(id) {\n        return this._pointerPositions.find((p) => p.id === id);\n    }\n    getPointersPositions() {\n        return this._pointerPositions;\n    }\n    getStage() {\n        return this;\n    }\n    getContent() {\n        return this.content;\n    }\n    _toKonvaCanvas(config) {\n        config = { ...config };\n        config.x = config.x || 0;\n        config.y = config.y || 0;\n        config.width = config.width || this.width();\n        config.height = config.height || this.height();\n        const canvas = new SceneCanvas({\n            width: config.width,\n            height: config.height,\n            pixelRatio: config.pixelRatio || 1,\n        });\n        const _context = canvas.getContext()._context;\n        const layers = this.children;\n        if (config.x || config.y) {\n            _context.translate(-1 * config.x, -1 * config.y);\n        }\n        layers.forEach(function (layer) {\n            if (!layer.isVisible()) {\n                return;\n            }\n            const layerCanvas = layer._toKonvaCanvas(config);\n            _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n        });\n        return canvas;\n    }\n    getIntersection(pos) {\n        if (!pos) {\n            return null;\n        }\n        const layers = this.children, len = layers.length, end = len - 1;\n        for (let n = end; n >= 0; n--) {\n            const shape = layers[n].getIntersection(pos);\n            if (shape) {\n                return shape;\n            }\n        }\n        return null;\n    }\n    _resizeDOM() {\n        const width = this.width();\n        const height = this.height();\n        if (this.content) {\n            this.content.style.width = width + PX;\n            this.content.style.height = height + PX;\n        }\n        this.bufferCanvas.setSize(width, height);\n        this.bufferHitCanvas.setSize(width, height);\n        this.children.forEach((layer) => {\n            layer.setSize({ width, height });\n            layer.draw();\n        });\n    }\n    add(layer, ...rest) {\n        if (arguments.length > 1) {\n            for (let i = 0; i < arguments.length; i++) {\n                this.add(arguments[i]);\n            }\n            return this;\n        }\n        super.add(layer);\n        const length = this.children.length;\n        if (length > MAX_LAYERS_NUMBER) {\n            Util.warn('The stage has ' +\n                length +\n                ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n        }\n        layer.setSize({ width: this.width(), height: this.height() });\n        layer.draw();\n        if (Konva.isBrowser) {\n            this.content.appendChild(layer.canvas._canvas);\n        }\n        return this;\n    }\n    getParent() {\n        return null;\n    }\n    getLayer() {\n        return null;\n    }\n    hasPointerCapture(pointerId) {\n        return PointerEvents.hasPointerCapture(pointerId, this);\n    }\n    setPointerCapture(pointerId) {\n        PointerEvents.setPointerCapture(pointerId, this);\n    }\n    releaseCapture(pointerId) {\n        PointerEvents.releaseCapture(pointerId, this);\n    }\n    getLayers() {\n        return this.children;\n    }\n    _bindContentEvents() {\n        if (!Konva.isBrowser) {\n            return;\n        }\n        EVENTS.forEach(([event, methodName]) => {\n            this.content.addEventListener(event, (evt) => {\n                this[methodName](evt);\n            }, { passive: false });\n        });\n    }\n    _pointerenter(evt) {\n        this.setPointersPositions(evt);\n        const events = getEventsMap(evt.type);\n        if (events) {\n            this._fire(events.pointerenter, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n            });\n        }\n    }\n    _pointerover(evt) {\n        this.setPointersPositions(evt);\n        const events = getEventsMap(evt.type);\n        if (events) {\n            this._fire(events.pointerover, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n            });\n        }\n    }\n    _getTargetShape(evenType) {\n        let shape = this[evenType + 'targetShape'];\n        if (shape && !shape.getStage()) {\n            shape = null;\n        }\n        return shape;\n    }\n    _pointerleave(evt) {\n        const events = getEventsMap(evt.type);\n        const eventType = getEventType(evt.type);\n        if (!events) {\n            return;\n        }\n        this.setPointersPositions(evt);\n        const targetShape = this._getTargetShape(eventType);\n        const eventsEnabled = !(Konva.isDragging() || Konva.isTransforming()) || Konva.hitOnDragEnabled;\n        if (targetShape && eventsEnabled) {\n            targetShape._fireAndBubble(events.pointerout, { evt: evt });\n            targetShape._fireAndBubble(events.pointerleave, { evt: evt });\n            this._fire(events.pointerleave, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n            });\n            this[eventType + 'targetShape'] = null;\n        }\n        else if (eventsEnabled) {\n            this._fire(events.pointerleave, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n            });\n            this._fire(events.pointerout, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n            });\n        }\n        this.pointerPos = null;\n        this._pointerPositions = [];\n    }\n    _pointerdown(evt) {\n        const events = getEventsMap(evt.type);\n        const eventType = getEventType(evt.type);\n        if (!events) {\n            return;\n        }\n        this.setPointersPositions(evt);\n        let triggeredOnShape = false;\n        this._changedPointerPositions.forEach((pos) => {\n            const shape = this.getIntersection(pos);\n            DD.justDragged = false;\n            Konva['_' + eventType + 'ListenClick'] = true;\n            if (!shape || !shape.isListening()) {\n                this[eventType + 'ClickStartShape'] = undefined;\n                return;\n            }\n            if (Konva.capturePointerEventsEnabled) {\n                shape.setPointerCapture(pos.id);\n            }\n            this[eventType + 'ClickStartShape'] = shape;\n            shape._fireAndBubble(events.pointerdown, {\n                evt: evt,\n                pointerId: pos.id,\n            });\n            triggeredOnShape = true;\n            const isTouch = evt.type.indexOf('touch') >= 0;\n            if (shape.preventDefault() && evt.cancelable && isTouch) {\n                evt.preventDefault();\n            }\n        });\n        if (!triggeredOnShape) {\n            this._fire(events.pointerdown, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n                pointerId: this._pointerPositions[0].id,\n            });\n        }\n    }\n    _pointermove(evt) {\n        const events = getEventsMap(evt.type);\n        const eventType = getEventType(evt.type);\n        if (!events) {\n            return;\n        }\n        const isTouchPointer = evt.type.indexOf('touch') >= 0 ||\n            evt.pointerType === 'touch';\n        if (Konva.isDragging() &&\n            DD.node.preventDefault() &&\n            evt.cancelable &&\n            isTouchPointer) {\n            evt.preventDefault();\n        }\n        this.setPointersPositions(evt);\n        const eventsEnabled = !(Konva.isDragging() || Konva.isTransforming()) || Konva.hitOnDragEnabled;\n        if (!eventsEnabled) {\n            return;\n        }\n        const processedShapesIds = {};\n        let triggeredOnShape = false;\n        const targetShape = this._getTargetShape(eventType);\n        this._changedPointerPositions.forEach((pos) => {\n            const shape = (PointerEvents.getCapturedShape(pos.id) ||\n                this.getIntersection(pos));\n            const pointerId = pos.id;\n            const event = { evt: evt, pointerId };\n            const differentTarget = targetShape !== shape;\n            if (differentTarget && targetShape) {\n                targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n                targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n            }\n            if (shape) {\n                if (processedShapesIds[shape._id]) {\n                    return;\n                }\n                processedShapesIds[shape._id] = true;\n            }\n            if (shape && shape.isListening()) {\n                triggeredOnShape = true;\n                if (differentTarget) {\n                    shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n                    shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n                    this[eventType + 'targetShape'] = shape;\n                }\n                shape._fireAndBubble(events.pointermove, { ...event });\n            }\n            else {\n                if (targetShape) {\n                    this._fire(events.pointerover, {\n                        evt: evt,\n                        target: this,\n                        currentTarget: this,\n                        pointerId,\n                    });\n                    this[eventType + 'targetShape'] = null;\n                }\n            }\n        });\n        if (!triggeredOnShape) {\n            this._fire(events.pointermove, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n                pointerId: this._changedPointerPositions[0].id,\n            });\n        }\n    }\n    _pointerup(evt) {\n        const events = getEventsMap(evt.type);\n        const eventType = getEventType(evt.type);\n        if (!events) {\n            return;\n        }\n        this.setPointersPositions(evt);\n        const clickStartShape = this[eventType + 'ClickStartShape'];\n        const clickEndShape = this[eventType + 'ClickEndShape'];\n        const processedShapesIds = {};\n        let skipPointerUpTrigger = false;\n        this._changedPointerPositions.forEach((pos) => {\n            const shape = (PointerEvents.getCapturedShape(pos.id) ||\n                this.getIntersection(pos));\n            if (shape) {\n                shape.releaseCapture(pos.id);\n                if (processedShapesIds[shape._id]) {\n                    return;\n                }\n                processedShapesIds[shape._id] = true;\n            }\n            const pointerId = pos.id;\n            const event = { evt: evt, pointerId };\n            let fireDblClick = false;\n            if (Konva['_' + eventType + 'InDblClickWindow']) {\n                fireDblClick = true;\n                clearTimeout(this[eventType + 'DblTimeout']);\n            }\n            else if (!DD.justDragged) {\n                Konva['_' + eventType + 'InDblClickWindow'] = true;\n                clearTimeout(this[eventType + 'DblTimeout']);\n            }\n            this[eventType + 'DblTimeout'] = setTimeout(function () {\n                Konva['_' + eventType + 'InDblClickWindow'] = false;\n            }, Konva.dblClickWindow);\n            if (shape && shape.isListening()) {\n                skipPointerUpTrigger = true;\n                this[eventType + 'ClickEndShape'] = shape;\n                shape._fireAndBubble(events.pointerup, { ...event });\n                if (Konva['_' + eventType + 'ListenClick'] &&\n                    clickStartShape &&\n                    clickStartShape === shape) {\n                    shape._fireAndBubble(events.pointerclick, { ...event });\n                    if (fireDblClick && clickEndShape && clickEndShape === shape) {\n                        shape._fireAndBubble(events.pointerdblclick, { ...event });\n                    }\n                }\n            }\n            else {\n                this[eventType + 'ClickEndShape'] = null;\n                if (!skipPointerUpTrigger) {\n                    this._fire(events.pointerup, {\n                        evt: evt,\n                        target: this,\n                        currentTarget: this,\n                        pointerId: this._changedPointerPositions[0].id,\n                    });\n                    skipPointerUpTrigger = true;\n                }\n                if (Konva['_' + eventType + 'ListenClick']) {\n                    this._fire(events.pointerclick, {\n                        evt: evt,\n                        target: this,\n                        currentTarget: this,\n                        pointerId,\n                    });\n                }\n                if (fireDblClick) {\n                    this._fire(events.pointerdblclick, {\n                        evt: evt,\n                        target: this,\n                        currentTarget: this,\n                        pointerId,\n                    });\n                }\n            }\n        });\n        if (!skipPointerUpTrigger) {\n            this._fire(events.pointerup, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n                pointerId: this._changedPointerPositions[0].id,\n            });\n        }\n        Konva['_' + eventType + 'ListenClick'] = false;\n        if (evt.cancelable && eventType !== 'touch' && eventType !== 'pointer') {\n            evt.preventDefault();\n        }\n    }\n    _contextmenu(evt) {\n        this.setPointersPositions(evt);\n        const shape = this.getIntersection(this.getPointerPosition());\n        if (shape && shape.isListening()) {\n            shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n        }\n        else {\n            this._fire(CONTEXTMENU, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n            });\n        }\n    }\n    _wheel(evt) {\n        this.setPointersPositions(evt);\n        const shape = this.getIntersection(this.getPointerPosition());\n        if (shape && shape.isListening()) {\n            shape._fireAndBubble(WHEEL, { evt: evt });\n        }\n        else {\n            this._fire(WHEEL, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n            });\n        }\n    }\n    _pointercancel(evt) {\n        this.setPointersPositions(evt);\n        const shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n            this.getIntersection(this.getPointerPosition());\n        if (shape) {\n            shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n        }\n        PointerEvents.releaseCapture(evt.pointerId);\n    }\n    _lostpointercapture(evt) {\n        PointerEvents.releaseCapture(evt.pointerId);\n    }\n    setPointersPositions(evt) {\n        const contentPosition = this._getContentPosition();\n        let x = null, y = null;\n        evt = evt ? evt : window.event;\n        if (evt.touches !== undefined) {\n            this._pointerPositions = [];\n            this._changedPointerPositions = [];\n            Array.prototype.forEach.call(evt.touches, (touch) => {\n                this._pointerPositions.push({\n                    id: touch.identifier,\n                    x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n                    y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n                });\n            });\n            Array.prototype.forEach.call(evt.changedTouches || evt.touches, (touch) => {\n                this._changedPointerPositions.push({\n                    id: touch.identifier,\n                    x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n                    y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n                });\n            });\n        }\n        else {\n            x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n            y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n            this.pointerPos = {\n                x: x,\n                y: y,\n            };\n            this._pointerPositions = [{ x, y, id: Util._getFirstPointerId(evt) }];\n            this._changedPointerPositions = [\n                { x, y, id: Util._getFirstPointerId(evt) },\n            ];\n        }\n    }\n    _setPointerPosition(evt) {\n        Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n        this.setPointersPositions(evt);\n    }\n    _getContentPosition() {\n        if (!this.content || !this.content.getBoundingClientRect) {\n            return {\n                top: 0,\n                left: 0,\n                scaleX: 1,\n                scaleY: 1,\n            };\n        }\n        const rect = this.content.getBoundingClientRect();\n        return {\n            top: rect.top,\n            left: rect.left,\n            scaleX: rect.width / this.content.clientWidth || 1,\n            scaleY: rect.height / this.content.clientHeight || 1,\n        };\n    }\n    _buildDOM() {\n        this.bufferCanvas = new SceneCanvas({\n            width: this.width(),\n            height: this.height(),\n        });\n        this.bufferHitCanvas = new HitCanvas({\n            pixelRatio: 1,\n            width: this.width(),\n            height: this.height(),\n        });\n        if (!Konva.isBrowser) {\n            return;\n        }\n        const container = this.container();\n        if (!container) {\n            throw 'Stage has no container. A container is required.';\n        }\n        container.innerHTML = '';\n        this.content = document.createElement('div');\n        this.content.style.position = 'relative';\n        this.content.style.userSelect = 'none';\n        this.content.className = 'konvajs-content';\n        this.content.setAttribute('role', 'presentation');\n        container.appendChild(this.content);\n        this._resizeDOM();\n    }\n    cache() {\n        Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n        return this;\n    }\n    clearCache() {\n        return this;\n    }\n    batchDraw() {\n        this.getChildren().forEach(function (layer) {\n            layer.batchDraw();\n        });\n        return this;\n    }\n}\nStage.prototype.nodeType = STAGE;\n_registerNode(Stage);\nFactory.addGetterSetter(Stage, 'container');\nif (Konva.isBrowser) {\n    document.addEventListener('visibilitychange', () => {\n        stages.forEach((stage) => {\n            stage.batchDraw();\n        });\n    });\n}\n", "import { Konva } from \"./Global.js\";\nimport { Transform, Util } from \"./Util.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Node } from \"./Node.js\";\nimport { getNumberValidator, getNumberOrAutoValidator, getStringValidator, getBooleanValidator, getStringOrGradientValidator, } from \"./Validators.js\";\nimport { _registerNode } from \"./Global.js\";\nimport * as PointerEvents from \"./PointerEvents.js\";\nconst HAS_SHADOW = 'hasShadow';\nconst SHADOW_RGBA = 'shadowRGBA';\nconst patternImage = 'patternImage';\nconst linearGradient = 'linearGradient';\nconst radialGradient = 'radialGradient';\nlet dummyContext;\nfunction getDummyContext() {\n    if (dummyContext) {\n        return dummyContext;\n    }\n    dummyContext = Util.createCanvasElement().getContext('2d');\n    return dummyContext;\n}\nexport const shapes = {};\nfunction _fillFunc(context) {\n    const fillRule = this.attrs.fillRule;\n    if (fillRule) {\n        context.fill(fillRule);\n    }\n    else {\n        context.fill();\n    }\n}\nfunction _strokeFunc(context) {\n    context.stroke();\n}\nfunction _fillFuncHit(context) {\n    const fillRule = this.attrs.fillRule;\n    if (fillRule) {\n        context.fill(fillRule);\n    }\n    else {\n        context.fill();\n    }\n}\nfunction _strokeFuncHit(context) {\n    context.stroke();\n}\nfunction _clearHasShadowCache() {\n    this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n    this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n    this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n    this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n    this._clearCache(radialGradient);\n}\nexport class Shape extends Node {\n    constructor(config) {\n        super(config);\n        let key;\n        let attempts = 0;\n        while (true) {\n            key = Util.getHitColor();\n            if (key && !(key in shapes)) {\n                break;\n            }\n            attempts++;\n            if (attempts >= 10000) {\n                Util.warn('Failed to find a unique color key for a shape. Konva may work incorrectly. Most likely your browser is using canvas farbling. Consider disabling it.');\n                key = Util.getRandomColor();\n                break;\n            }\n        }\n        this.colorKey = key;\n        shapes[key] = this;\n    }\n    getContext() {\n        Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n        return this.getLayer().getContext();\n    }\n    getCanvas() {\n        Util.warn('shape.getCanvas() method is deprecated. Please do not use it.');\n        return this.getLayer().getCanvas();\n    }\n    getSceneFunc() {\n        return this.attrs.sceneFunc || this['_sceneFunc'];\n    }\n    getHitFunc() {\n        return this.attrs.hitFunc || this['_hitFunc'];\n    }\n    hasShadow() {\n        return this._getCache(HAS_SHADOW, this._hasShadow);\n    }\n    _hasShadow() {\n        return (this.shadowEnabled() &&\n            this.shadowOpacity() !== 0 &&\n            !!(this.shadowColor() ||\n                this.shadowBlur() ||\n                this.shadowOffsetX() ||\n                this.shadowOffsetY()));\n    }\n    _getFillPattern() {\n        return this._getCache(patternImage, this.__getFillPattern);\n    }\n    __getFillPattern() {\n        if (this.fillPatternImage()) {\n            const ctx = getDummyContext();\n            const pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n            if (pattern && pattern.setTransform) {\n                const tr = new Transform();\n                tr.translate(this.fillPatternX(), this.fillPatternY());\n                tr.rotate(Konva.getAngle(this.fillPatternRotation()));\n                tr.scale(this.fillPatternScaleX(), this.fillPatternScaleY());\n                tr.translate(-1 * this.fillPatternOffsetX(), -1 * this.fillPatternOffsetY());\n                const m = tr.getMatrix();\n                const matrix = typeof DOMMatrix === 'undefined'\n                    ? {\n                        a: m[0],\n                        b: m[1],\n                        c: m[2],\n                        d: m[3],\n                        e: m[4],\n                        f: m[5],\n                    }\n                    : new DOMMatrix(m);\n                pattern.setTransform(matrix);\n            }\n            return pattern;\n        }\n    }\n    _getLinearGradient() {\n        return this._getCache(linearGradient, this.__getLinearGradient);\n    }\n    __getLinearGradient() {\n        const colorStops = this.fillLinearGradientColorStops();\n        if (colorStops) {\n            const ctx = getDummyContext();\n            const start = this.fillLinearGradientStartPoint();\n            const end = this.fillLinearGradientEndPoint();\n            const grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n            for (let n = 0; n < colorStops.length; n += 2) {\n                grd.addColorStop(colorStops[n], colorStops[n + 1]);\n            }\n            return grd;\n        }\n    }\n    _getRadialGradient() {\n        return this._getCache(radialGradient, this.__getRadialGradient);\n    }\n    __getRadialGradient() {\n        const colorStops = this.fillRadialGradientColorStops();\n        if (colorStops) {\n            const ctx = getDummyContext();\n            const start = this.fillRadialGradientStartPoint();\n            const end = this.fillRadialGradientEndPoint();\n            const grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n            for (let n = 0; n < colorStops.length; n += 2) {\n                grd.addColorStop(colorStops[n], colorStops[n + 1]);\n            }\n            return grd;\n        }\n    }\n    getShadowRGBA() {\n        return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n    }\n    _getShadowRGBA() {\n        if (!this.hasShadow()) {\n            return;\n        }\n        const rgba = Util.colorToRGBA(this.shadowColor());\n        if (rgba) {\n            return ('rgba(' +\n                rgba.r +\n                ',' +\n                rgba.g +\n                ',' +\n                rgba.b +\n                ',' +\n                rgba.a * (this.shadowOpacity() || 1) +\n                ')');\n        }\n    }\n    hasFill() {\n        return this._calculate('hasFill', [\n            'fillEnabled',\n            'fill',\n            'fillPatternImage',\n            'fillLinearGradientColorStops',\n            'fillRadialGradientColorStops',\n        ], () => {\n            return (this.fillEnabled() &&\n                !!(this.fill() ||\n                    this.fillPatternImage() ||\n                    this.fillLinearGradientColorStops() ||\n                    this.fillRadialGradientColorStops()));\n        });\n    }\n    hasStroke() {\n        return this._calculate('hasStroke', [\n            'strokeEnabled',\n            'strokeWidth',\n            'stroke',\n            'strokeLinearGradientColorStops',\n        ], () => {\n            return (this.strokeEnabled() &&\n                this.strokeWidth() &&\n                !!(this.stroke() || this.strokeLinearGradientColorStops()));\n        });\n    }\n    hasHitStroke() {\n        const width = this.hitStrokeWidth();\n        if (width === 'auto') {\n            return this.hasStroke();\n        }\n        return this.strokeEnabled() && !!width;\n    }\n    intersects(point) {\n        const stage = this.getStage();\n        if (!stage) {\n            return false;\n        }\n        const bufferHitCanvas = stage.bufferHitCanvas;\n        bufferHitCanvas.getContext().clear();\n        this.drawHit(bufferHitCanvas, undefined, true);\n        const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n        return p[3] > 0;\n    }\n    destroy() {\n        Node.prototype.destroy.call(this);\n        delete shapes[this.colorKey];\n        delete this.colorKey;\n        return this;\n    }\n    _useBufferCanvas(forceFill) {\n        var _a;\n        const perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n        if (!perfectDrawEnabled) {\n            return false;\n        }\n        const hasFill = forceFill || this.hasFill();\n        const hasStroke = this.hasStroke();\n        const isTransparent = this.getAbsoluteOpacity() !== 1;\n        if (hasFill && hasStroke && isTransparent) {\n            return true;\n        }\n        const hasShadow = this.hasShadow();\n        const strokeForShadow = this.shadowForStrokeEnabled();\n        if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n            return true;\n        }\n        return false;\n    }\n    setStrokeHitEnabled(val) {\n        Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n        if (val) {\n            this.hitStrokeWidth('auto');\n        }\n        else {\n            this.hitStrokeWidth(0);\n        }\n    }\n    getStrokeHitEnabled() {\n        if (this.hitStrokeWidth() === 0) {\n            return false;\n        }\n        else {\n            return true;\n        }\n    }\n    getSelfRect() {\n        const size = this.size();\n        return {\n            x: this._centroid ? -size.width / 2 : 0,\n            y: this._centroid ? -size.height / 2 : 0,\n            width: size.width,\n            height: size.height,\n        };\n    }\n    getClientRect(config = {}) {\n        let hasCachedParent = false;\n        let parent = this.getParent();\n        while (parent) {\n            if (parent.isCached()) {\n                hasCachedParent = true;\n                break;\n            }\n            parent = parent.getParent();\n        }\n        const skipTransform = config.skipTransform;\n        const relativeTo = config.relativeTo || (hasCachedParent && this.getStage()) || undefined;\n        const fillRect = this.getSelfRect();\n        const applyStroke = !config.skipStroke && this.hasStroke();\n        const strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n        const fillAndStrokeWidth = fillRect.width + strokeWidth;\n        const fillAndStrokeHeight = fillRect.height + strokeWidth;\n        const applyShadow = !config.skipShadow && this.hasShadow();\n        const shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n        const shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n        const preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n        const preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n        const blurRadius = (applyShadow && this.shadowBlur()) || 0;\n        const width = preWidth + blurRadius * 2;\n        const height = preHeight + blurRadius * 2;\n        const rect = {\n            width: width,\n            height: height,\n            x: -(strokeWidth / 2 + blurRadius) +\n                Math.min(shadowOffsetX, 0) +\n                fillRect.x,\n            y: -(strokeWidth / 2 + blurRadius) +\n                Math.min(shadowOffsetY, 0) +\n                fillRect.y,\n        };\n        if (!skipTransform) {\n            return this._transformedRect(rect, relativeTo);\n        }\n        return rect;\n    }\n    drawScene(can, top, bufferCanvas) {\n        const layer = this.getLayer();\n        const canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow();\n        let stage;\n        const skipBuffer = false;\n        const cachingSelf = top === this;\n        if (!this.isVisible() && !cachingSelf) {\n            return this;\n        }\n        if (cachedCanvas) {\n            context.save();\n            const m = this.getAbsoluteTransform(top).getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            this._drawCachedSceneCanvas(context);\n            context.restore();\n            return this;\n        }\n        if (!drawFunc) {\n            return this;\n        }\n        context.save();\n        if (this._useBufferCanvas() && !skipBuffer) {\n            stage = this.getStage();\n            const bc = bufferCanvas || stage.bufferCanvas;\n            const bufferContext = bc.getContext();\n            if (bufferCanvas) {\n                bufferContext.save();\n                bufferContext.setTransform(1, 0, 0, 1, 0, 0);\n                bufferContext.clearRect(0, 0, bc.width, bc.height);\n                bufferContext.restore();\n            }\n            else {\n                bufferContext.clear();\n            }\n            bufferContext.save();\n            bufferContext._applyLineJoin(this);\n            bufferContext._applyMiterLimit(this);\n            const o = this.getAbsoluteTransform(top).getMatrix();\n            bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n            drawFunc.call(this, bufferContext, this);\n            bufferContext.restore();\n            const ratio = bc.pixelRatio;\n            if (hasShadow) {\n                context._applyShadow(this);\n            }\n            if (!cachingSelf) {\n                context._applyOpacity(this);\n                context._applyGlobalCompositeOperation(this);\n            }\n            context.drawImage(bc._canvas, bc.x || 0, bc.y || 0, bc.width / ratio, bc.height / ratio);\n        }\n        else {\n            context._applyLineJoin(this);\n            context._applyMiterLimit(this);\n            if (!cachingSelf) {\n                const o = this.getAbsoluteTransform(top).getMatrix();\n                context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n                context._applyOpacity(this);\n                context._applyGlobalCompositeOperation(this);\n            }\n            if (hasShadow) {\n                context._applyShadow(this);\n            }\n            drawFunc.call(this, context, this);\n        }\n        context.restore();\n        return this;\n    }\n    drawHit(can, top, skipDragCheck = false) {\n        if (!this.shouldDrawHit(top, skipDragCheck)) {\n            return this;\n        }\n        const layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n        if (!this.colorKey) {\n            Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n        }\n        if (cachedHitCanvas) {\n            context.save();\n            const m = this.getAbsoluteTransform(top).getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            this._drawCachedHitCanvas(context);\n            context.restore();\n            return this;\n        }\n        if (!drawFunc) {\n            return this;\n        }\n        context.save();\n        context._applyLineJoin(this);\n        context._applyMiterLimit(this);\n        const selfCache = this === top;\n        if (!selfCache) {\n            const o = this.getAbsoluteTransform(top).getMatrix();\n            context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n        }\n        drawFunc.call(this, context, this);\n        context.restore();\n        return this;\n    }\n    drawHitFromCache(alphaThreshold = 0) {\n        const cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight();\n        hitContext.clear();\n        hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n        try {\n            const hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n            const hitData = hitImageData.data;\n            const len = hitData.length;\n            const rgbColorKey = Util._hexToRgb(this.colorKey);\n            for (let i = 0; i < len; i += 4) {\n                const alpha = hitData[i + 3];\n                if (alpha > alphaThreshold) {\n                    hitData[i] = rgbColorKey.r;\n                    hitData[i + 1] = rgbColorKey.g;\n                    hitData[i + 2] = rgbColorKey.b;\n                    hitData[i + 3] = 255;\n                }\n                else {\n                    hitData[i + 3] = 0;\n                }\n            }\n            hitContext.putImageData(hitImageData, 0, 0);\n        }\n        catch (e) {\n            Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n        }\n        return this;\n    }\n    hasPointerCapture(pointerId) {\n        return PointerEvents.hasPointerCapture(pointerId, this);\n    }\n    setPointerCapture(pointerId) {\n        PointerEvents.setPointerCapture(pointerId, this);\n    }\n    releaseCapture(pointerId) {\n        PointerEvents.releaseCapture(pointerId, this);\n    }\n}\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\n_registerNode(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on('shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on('shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on('fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on('fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on('fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory.addGetterSetter(Shape, 'stroke', undefined, getStringOrGradientValidator());\nFactory.addGetterSetter(Shape, 'strokeWidth', 2, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', getNumberOrAutoValidator());\nFactory.addGetterSetter(Shape, 'strokeHitEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'perfectDrawEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'lineJoin');\nFactory.addGetterSetter(Shape, 'lineCap');\nFactory.addGetterSetter(Shape, 'miterLimit');\nFactory.addGetterSetter(Shape, 'sceneFunc');\nFactory.addGetterSetter(Shape, 'hitFunc');\nFactory.addGetterSetter(Shape, 'dash');\nFactory.addGetterSetter(Shape, 'dashOffset', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowColor', undefined, getStringValidator());\nFactory.addGetterSetter(Shape, 'shadowBlur', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowOpacity', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'shadowOffsetX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowOffsetY', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternImage');\nFactory.addGetterSetter(Shape, 'fill', undefined, getStringOrGradientValidator());\nFactory.addGetterSetter(Shape, 'fillPatternX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternY', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'fillPatternScaleX', 1, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternScaleY', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n    'x',\n    'y',\n]);\nFactory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n    'x',\n    'y',\n]);\nFactory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n    'x',\n    'y',\n]);\nFactory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n    'x',\n    'y',\n]);\nFactory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n    'x',\n    'y',\n]);\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n    'x',\n    'y',\n]);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory.addGetterSetter(Shape, 'fillRule', undefined, getStringValidator());\nFactory.backCompat(Shape, {\n    dashArray: 'dash',\n    getDashArray: 'getDash',\n    setDashArray: 'getDash',\n    drawFunc: 'sceneFunc',\n    getDrawFunc: 'getSceneFunc',\n    setDrawFunc: 'setSceneFunc',\n    drawHitFunc: 'hitFunc',\n    getDrawHitFunc: 'getHitFunc',\n    setDrawHitFunc: 'setHitFunc',\n});\n", "import { Util } from \"./Util.js\";\nimport { Container } from \"./Container.js\";\nimport { Node } from \"./Node.js\";\nimport { Factory } from \"./Factory.js\";\nimport { SceneCanvas, HitCanvas } from \"./Canvas.js\";\nimport { getBooleanValidator } from \"./Validators.js\";\nimport { shapes } from \"./Shape.js\";\nimport { _registerNode } from \"./Global.js\";\nconst HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n    { x: 0, y: 0 },\n    { x: -1, y: -1 },\n    { x: 1, y: -1 },\n    { x: 1, y: 1 },\n    { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nexport class Layer extends Container {\n    constructor(config) {\n        super(config);\n        this.canvas = new SceneCanvas();\n        this.hitCanvas = new HitCanvas({\n            pixelRatio: 1,\n        });\n        this._waitingForDraw = false;\n        this.on('visibleChange.konva', this._checkVisibility);\n        this._checkVisibility();\n        this.on('imageSmoothingEnabledChange.konva', this._setSmoothEnabled);\n        this._setSmoothEnabled();\n    }\n    createPNGStream() {\n        const c = this.canvas._canvas;\n        return c.createPNGStream();\n    }\n    getCanvas() {\n        return this.canvas;\n    }\n    getNativeCanvasElement() {\n        return this.canvas._canvas;\n    }\n    getHitCanvas() {\n        return this.hitCanvas;\n    }\n    getContext() {\n        return this.getCanvas().getContext();\n    }\n    clear(bounds) {\n        this.getContext().clear(bounds);\n        this.getHitCanvas().getContext().clear(bounds);\n        return this;\n    }\n    setZIndex(index) {\n        super.setZIndex(index);\n        const stage = this.getStage();\n        if (stage && stage.content) {\n            stage.content.removeChild(this.getNativeCanvasElement());\n            if (index < stage.children.length - 1) {\n                stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[index + 1].getCanvas()._canvas);\n            }\n            else {\n                stage.content.appendChild(this.getNativeCanvasElement());\n            }\n        }\n        return this;\n    }\n    moveToTop() {\n        Node.prototype.moveToTop.call(this);\n        const stage = this.getStage();\n        if (stage && stage.content) {\n            stage.content.removeChild(this.getNativeCanvasElement());\n            stage.content.appendChild(this.getNativeCanvasElement());\n        }\n        return true;\n    }\n    moveUp() {\n        const moved = Node.prototype.moveUp.call(this);\n        if (!moved) {\n            return false;\n        }\n        const stage = this.getStage();\n        if (!stage || !stage.content) {\n            return false;\n        }\n        stage.content.removeChild(this.getNativeCanvasElement());\n        if (this.index < stage.children.length - 1) {\n            stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[this.index + 1].getCanvas()._canvas);\n        }\n        else {\n            stage.content.appendChild(this.getNativeCanvasElement());\n        }\n        return true;\n    }\n    moveDown() {\n        if (Node.prototype.moveDown.call(this)) {\n            const stage = this.getStage();\n            if (stage) {\n                const children = stage.children;\n                if (stage.content) {\n                    stage.content.removeChild(this.getNativeCanvasElement());\n                    stage.content.insertBefore(this.getNativeCanvasElement(), children[this.index + 1].getCanvas()._canvas);\n                }\n            }\n            return true;\n        }\n        return false;\n    }\n    moveToBottom() {\n        if (Node.prototype.moveToBottom.call(this)) {\n            const stage = this.getStage();\n            if (stage) {\n                const children = stage.children;\n                if (stage.content) {\n                    stage.content.removeChild(this.getNativeCanvasElement());\n                    stage.content.insertBefore(this.getNativeCanvasElement(), children[1].getCanvas()._canvas);\n                }\n            }\n            return true;\n        }\n        return false;\n    }\n    getLayer() {\n        return this;\n    }\n    remove() {\n        const _canvas = this.getNativeCanvasElement();\n        Node.prototype.remove.call(this);\n        if (_canvas && _canvas.parentNode && Util._isInDocument(_canvas)) {\n            _canvas.parentNode.removeChild(_canvas);\n        }\n        return this;\n    }\n    getStage() {\n        return this.parent;\n    }\n    setSize({ width, height }) {\n        this.canvas.setSize(width, height);\n        this.hitCanvas.setSize(width, height);\n        this._setSmoothEnabled();\n        return this;\n    }\n    _validateAdd(child) {\n        const type = child.getType();\n        if (type !== 'Group' && type !== 'Shape') {\n            Util.throw('You may only add groups and shapes to a layer.');\n        }\n    }\n    _toKonvaCanvas(config) {\n        config = { ...config };\n        config.width = config.width || this.getWidth();\n        config.height = config.height || this.getHeight();\n        config.x = config.x !== undefined ? config.x : this.x();\n        config.y = config.y !== undefined ? config.y : this.y();\n        return Node.prototype._toKonvaCanvas.call(this, config);\n    }\n    _checkVisibility() {\n        const visible = this.visible();\n        if (visible) {\n            this.canvas._canvas.style.display = 'block';\n        }\n        else {\n            this.canvas._canvas.style.display = 'none';\n        }\n    }\n    _setSmoothEnabled() {\n        this.getContext()._context.imageSmoothingEnabled =\n            this.imageSmoothingEnabled();\n    }\n    getWidth() {\n        if (this.parent) {\n            return this.parent.width();\n        }\n    }\n    setWidth() {\n        Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n    }\n    getHeight() {\n        if (this.parent) {\n            return this.parent.height();\n        }\n    }\n    setHeight() {\n        Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n    }\n    batchDraw() {\n        if (!this._waitingForDraw) {\n            this._waitingForDraw = true;\n            Util.requestAnimFrame(() => {\n                this.draw();\n                this._waitingForDraw = false;\n            });\n        }\n        return this;\n    }\n    getIntersection(pos) {\n        if (!this.isListening() || !this.isVisible()) {\n            return null;\n        }\n        let spiralSearchDistance = 1;\n        let continueSearch = false;\n        while (true) {\n            for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n                const intersectionOffset = INTERSECTION_OFFSETS[i];\n                const obj = this._getIntersection({\n                    x: pos.x + intersectionOffset.x * spiralSearchDistance,\n                    y: pos.y + intersectionOffset.y * spiralSearchDistance,\n                });\n                const shape = obj.shape;\n                if (shape) {\n                    return shape;\n                }\n                continueSearch = !!obj.antialiased;\n                if (!obj.antialiased) {\n                    break;\n                }\n            }\n            if (continueSearch) {\n                spiralSearchDistance += 1;\n            }\n            else {\n                return null;\n            }\n        }\n    }\n    _getIntersection(pos) {\n        const ratio = this.hitCanvas.pixelRatio;\n        const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n        const p3 = p[3];\n        if (p3 === 255) {\n            const colorKey = Util.getHitColorKey(p[0], p[1], p[2]);\n            const shape = shapes[colorKey];\n            if (shape) {\n                return {\n                    shape: shape,\n                };\n            }\n            return {\n                antialiased: true,\n            };\n        }\n        else if (p3 > 0) {\n            return {\n                antialiased: true,\n            };\n        }\n        return {};\n    }\n    drawScene(can, top, bufferCanvas) {\n        const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n        this._fire(BEFORE_DRAW, {\n            node: this,\n        });\n        if (this.clearBeforeDraw()) {\n            canvas.getContext().clear();\n        }\n        Container.prototype.drawScene.call(this, canvas, top, bufferCanvas);\n        this._fire(DRAW, {\n            node: this,\n        });\n        return this;\n    }\n    drawHit(can, top) {\n        const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n        if (layer && layer.clearBeforeDraw()) {\n            layer.getHitCanvas().getContext().clear();\n        }\n        Container.prototype.drawHit.call(this, canvas, top);\n        return this;\n    }\n    enableHitGraph() {\n        this.hitGraphEnabled(true);\n        return this;\n    }\n    disableHitGraph() {\n        this.hitGraphEnabled(false);\n        return this;\n    }\n    setHitGraphEnabled(val) {\n        Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n        this.listening(val);\n    }\n    getHitGraphEnabled(val) {\n        Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n        return this.listening();\n    }\n    toggleHitCanvas() {\n        if (!this.parent || !this.parent['content']) {\n            return;\n        }\n        const parent = this.parent;\n        const added = !!this.hitCanvas._canvas.parentNode;\n        if (added) {\n            parent.content.removeChild(this.hitCanvas._canvas);\n        }\n        else {\n            parent.content.appendChild(this.hitCanvas._canvas);\n        }\n    }\n    destroy() {\n        Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n        return super.destroy();\n    }\n}\nLayer.prototype.nodeType = 'Layer';\n_registerNode(Layer);\nFactory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory.addGetterSetter(Layer, 'hitGraphEnabled', true, getBooleanValidator());\n", "import { Util } from \"./Util.js\";\nimport { Layer } from \"./Layer.js\";\nimport { _registerNode } from \"./Global.js\";\nexport class FastLayer extends Layer {\n    constructor(attrs) {\n        super(attrs);\n        this.listening(false);\n        Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n    }\n}\nFastLayer.prototype.nodeType = 'FastLayer';\n_registerNode(FastLayer);\n", "import { Util } from \"./Util.js\";\nimport { Container } from \"./Container.js\";\nimport { _registerNode } from \"./Global.js\";\nexport class Group extends Container {\n    _validateAdd(child) {\n        const type = child.getType();\n        if (type !== 'Group' && type !== 'Shape') {\n            Util.throw('You may only add groups and shapes to groups.');\n        }\n    }\n}\nGroup.prototype.nodeType = 'Group';\n_registerNode(Group);\n", "import { glob } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nconst now = (function () {\n    if (glob.performance && glob.performance.now) {\n        return function () {\n            return glob.performance.now();\n        };\n    }\n    return function () {\n        return new Date().getTime();\n    };\n})();\nexport class Animation {\n    constructor(func, layers) {\n        this.id = Animation.animIdCounter++;\n        this.frame = {\n            time: 0,\n            timeDiff: 0,\n            lastTime: now(),\n            frameRate: 0,\n        };\n        this.func = func;\n        this.setLayers(layers);\n    }\n    setLayers(layers) {\n        let lays = [];\n        if (layers) {\n            lays = Array.isArray(layers) ? layers : [layers];\n        }\n        this.layers = lays;\n        return this;\n    }\n    getLayers() {\n        return this.layers;\n    }\n    addLayer(layer) {\n        const layers = this.layers;\n        const len = layers.length;\n        for (let n = 0; n < len; n++) {\n            if (layers[n]._id === layer._id) {\n                return false;\n            }\n        }\n        this.layers.push(layer);\n        return true;\n    }\n    isRunning() {\n        const a = Animation;\n        const animations = a.animations;\n        const len = animations.length;\n        for (let n = 0; n < len; n++) {\n            if (animations[n].id === this.id) {\n                return true;\n            }\n        }\n        return false;\n    }\n    start() {\n        this.stop();\n        this.frame.timeDiff = 0;\n        this.frame.lastTime = now();\n        Animation._addAnimation(this);\n        return this;\n    }\n    stop() {\n        Animation._removeAnimation(this);\n        return this;\n    }\n    _updateFrameObject(time) {\n        this.frame.timeDiff = time - this.frame.lastTime;\n        this.frame.lastTime = time;\n        this.frame.time += this.frame.timeDiff;\n        this.frame.frameRate = 1000 / this.frame.timeDiff;\n    }\n    static _addAnimation(anim) {\n        this.animations.push(anim);\n        this._handleAnimation();\n    }\n    static _removeAnimation(anim) {\n        const id = anim.id;\n        const animations = this.animations;\n        const len = animations.length;\n        for (let n = 0; n < len; n++) {\n            if (animations[n].id === id) {\n                this.animations.splice(n, 1);\n                break;\n            }\n        }\n    }\n    static _runFrames() {\n        const layerHash = {};\n        const animations = this.animations;\n        for (let n = 0; n < animations.length; n++) {\n            const anim = animations[n];\n            const layers = anim.layers;\n            const func = anim.func;\n            anim._updateFrameObject(now());\n            const layersLen = layers.length;\n            let needRedraw;\n            if (func) {\n                needRedraw = func.call(anim, anim.frame) !== false;\n            }\n            else {\n                needRedraw = true;\n            }\n            if (!needRedraw) {\n                continue;\n            }\n            for (let i = 0; i < layersLen; i++) {\n                const layer = layers[i];\n                if (layer._id !== undefined) {\n                    layerHash[layer._id] = layer;\n                }\n            }\n        }\n        for (const key in layerHash) {\n            if (!layerHash.hasOwnProperty(key)) {\n                continue;\n            }\n            layerHash[key].batchDraw();\n        }\n    }\n    static _animationLoop() {\n        const Anim = Animation;\n        if (Anim.animations.length) {\n            Anim._runFrames();\n            Util.requestAnimFrame(Anim._animationLoop);\n        }\n        else {\n            Anim.animRunning = false;\n        }\n    }\n    static _handleAnimation() {\n        if (!this.animRunning) {\n            this.animRunning = true;\n            Util.requestAnimFrame(this._animationLoop);\n        }\n    }\n}\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n", "import { Util } from \"./Util.js\";\nimport { Animation } from \"./Animation.js\";\nimport { Node } from \"./Node.js\";\nimport { Konva } from \"./Global.js\";\nconst blacklist = {\n    node: 1,\n    duration: 1,\n    easing: 1,\n    onFinish: 1,\n    yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nlet idCounter = 0;\nclass TweenEngine {\n    constructor(prop, propFunc, func, begin, finish, duration, yoyo) {\n        this.prop = prop;\n        this.propFunc = propFunc;\n        this.begin = begin;\n        this._pos = begin;\n        this.duration = duration;\n        this._change = 0;\n        this.prevPos = 0;\n        this.yoyo = yoyo;\n        this._time = 0;\n        this._position = 0;\n        this._startTime = 0;\n        this._finish = 0;\n        this.func = func;\n        this._change = finish - this.begin;\n        this.pause();\n    }\n    fire(str) {\n        const handler = this[str];\n        if (handler) {\n            handler();\n        }\n    }\n    setTime(t) {\n        if (t > this.duration) {\n            if (this.yoyo) {\n                this._time = this.duration;\n                this.reverse();\n            }\n            else {\n                this.finish();\n            }\n        }\n        else if (t < 0) {\n            if (this.yoyo) {\n                this._time = 0;\n                this.play();\n            }\n            else {\n                this.reset();\n            }\n        }\n        else {\n            this._time = t;\n            this.update();\n        }\n    }\n    getTime() {\n        return this._time;\n    }\n    setPosition(p) {\n        this.prevPos = this._pos;\n        this.propFunc(p);\n        this._pos = p;\n    }\n    getPosition(t) {\n        if (t === undefined) {\n            t = this._time;\n        }\n        return this.func(t, this.begin, this._change, this.duration);\n    }\n    play() {\n        this.state = PLAYING;\n        this._startTime = this.getTimer() - this._time;\n        this.onEnterFrame();\n        this.fire('onPlay');\n    }\n    reverse() {\n        this.state = REVERSING;\n        this._time = this.duration - this._time;\n        this._startTime = this.getTimer() - this._time;\n        this.onEnterFrame();\n        this.fire('onReverse');\n    }\n    seek(t) {\n        this.pause();\n        this._time = t;\n        this.update();\n        this.fire('onSeek');\n    }\n    reset() {\n        this.pause();\n        this._time = 0;\n        this.update();\n        this.fire('onReset');\n    }\n    finish() {\n        this.pause();\n        this._time = this.duration;\n        this.update();\n        this.fire('onFinish');\n    }\n    update() {\n        this.setPosition(this.getPosition(this._time));\n        this.fire('onUpdate');\n    }\n    onEnterFrame() {\n        const t = this.getTimer() - this._startTime;\n        if (this.state === PLAYING) {\n            this.setTime(t);\n        }\n        else if (this.state === REVERSING) {\n            this.setTime(this.duration - t);\n        }\n    }\n    pause() {\n        this.state = PAUSED;\n        this.fire('onPause');\n    }\n    getTimer() {\n        return new Date().getTime();\n    }\n}\nexport class Tween {\n    constructor(config) {\n        const that = this, node = config.node, nodeId = node._id, easing = config.easing || Easings.Linear, yoyo = !!config.yoyo;\n        let duration, key;\n        if (typeof config.duration === 'undefined') {\n            duration = 0.3;\n        }\n        else if (config.duration === 0) {\n            duration = 0.001;\n        }\n        else {\n            duration = config.duration;\n        }\n        this.node = node;\n        this._id = idCounter++;\n        const layers = node.getLayer() ||\n            (node instanceof Konva['Stage'] ? node.getLayers() : null);\n        if (!layers) {\n            Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n        }\n        this.anim = new Animation(function () {\n            that.tween.onEnterFrame();\n        }, layers);\n        this.tween = new TweenEngine(key, function (i) {\n            that._tweenFunc(i);\n        }, easing, 0, 1, duration * 1000, yoyo);\n        this._addListeners();\n        if (!Tween.attrs[nodeId]) {\n            Tween.attrs[nodeId] = {};\n        }\n        if (!Tween.attrs[nodeId][this._id]) {\n            Tween.attrs[nodeId][this._id] = {};\n        }\n        if (!Tween.tweens[nodeId]) {\n            Tween.tweens[nodeId] = {};\n        }\n        for (key in config) {\n            if (blacklist[key] === undefined) {\n                this._addAttr(key, config[key]);\n            }\n        }\n        this.reset();\n        this.onFinish = config.onFinish;\n        this.onReset = config.onReset;\n        this.onUpdate = config.onUpdate;\n    }\n    _addAttr(key, end) {\n        const node = this.node, nodeId = node._id;\n        let diff, len, trueEnd, trueStart, endRGBA;\n        const tweenId = Tween.tweens[nodeId][key];\n        if (tweenId) {\n            delete Tween.attrs[nodeId][tweenId][key];\n        }\n        let start = node.getAttr(key);\n        if (Util._isArray(end)) {\n            diff = [];\n            len = Math.max(end.length, start.length);\n            if (key === 'points' && end.length !== start.length) {\n                if (end.length > start.length) {\n                    trueStart = start;\n                    start = Util._prepareArrayForTween(start, end, node.closed());\n                }\n                else {\n                    trueEnd = end;\n                    end = Util._prepareArrayForTween(end, start, node.closed());\n                }\n            }\n            if (key.indexOf('fill') === 0) {\n                for (let n = 0; n < len; n++) {\n                    if (n % 2 === 0) {\n                        diff.push(end[n] - start[n]);\n                    }\n                    else {\n                        const startRGBA = Util.colorToRGBA(start[n]);\n                        endRGBA = Util.colorToRGBA(end[n]);\n                        start[n] = startRGBA;\n                        diff.push({\n                            r: endRGBA.r - startRGBA.r,\n                            g: endRGBA.g - startRGBA.g,\n                            b: endRGBA.b - startRGBA.b,\n                            a: endRGBA.a - startRGBA.a,\n                        });\n                    }\n                }\n            }\n            else {\n                for (let n = 0; n < len; n++) {\n                    diff.push(end[n] - start[n]);\n                }\n            }\n        }\n        else if (colorAttrs.indexOf(key) !== -1) {\n            start = Util.colorToRGBA(start);\n            endRGBA = Util.colorToRGBA(end);\n            diff = {\n                r: endRGBA.r - start.r,\n                g: endRGBA.g - start.g,\n                b: endRGBA.b - start.b,\n                a: endRGBA.a - start.a,\n            };\n        }\n        else {\n            diff = end - start;\n        }\n        Tween.attrs[nodeId][this._id][key] = {\n            start: start,\n            diff: diff,\n            end: end,\n            trueEnd: trueEnd,\n            trueStart: trueStart,\n        };\n        Tween.tweens[nodeId][key] = this._id;\n    }\n    _tweenFunc(i) {\n        const node = this.node, attrs = Tween.attrs[node._id][this._id];\n        let key, attr, start, diff, newVal, n, len, end;\n        for (key in attrs) {\n            attr = attrs[key];\n            start = attr.start;\n            diff = attr.diff;\n            end = attr.end;\n            if (Util._isArray(start)) {\n                newVal = [];\n                len = Math.max(start.length, end.length);\n                if (key.indexOf('fill') === 0) {\n                    for (n = 0; n < len; n++) {\n                        if (n % 2 === 0) {\n                            newVal.push((start[n] || 0) + diff[n] * i);\n                        }\n                        else {\n                            newVal.push('rgba(' +\n                                Math.round(start[n].r + diff[n].r * i) +\n                                ',' +\n                                Math.round(start[n].g + diff[n].g * i) +\n                                ',' +\n                                Math.round(start[n].b + diff[n].b * i) +\n                                ',' +\n                                (start[n].a + diff[n].a * i) +\n                                ')');\n                        }\n                    }\n                }\n                else {\n                    for (n = 0; n < len; n++) {\n                        newVal.push((start[n] || 0) + diff[n] * i);\n                    }\n                }\n            }\n            else if (colorAttrs.indexOf(key) !== -1) {\n                newVal =\n                    'rgba(' +\n                        Math.round(start.r + diff.r * i) +\n                        ',' +\n                        Math.round(start.g + diff.g * i) +\n                        ',' +\n                        Math.round(start.b + diff.b * i) +\n                        ',' +\n                        (start.a + diff.a * i) +\n                        ')';\n            }\n            else {\n                newVal = start + diff * i;\n            }\n            node.setAttr(key, newVal);\n        }\n    }\n    _addListeners() {\n        this.tween.onPlay = () => {\n            this.anim.start();\n        };\n        this.tween.onReverse = () => {\n            this.anim.start();\n        };\n        this.tween.onPause = () => {\n            this.anim.stop();\n        };\n        this.tween.onFinish = () => {\n            const node = this.node;\n            const attrs = Tween.attrs[node._id][this._id];\n            if (attrs.points && attrs.points.trueEnd) {\n                node.setAttr('points', attrs.points.trueEnd);\n            }\n            if (this.onFinish) {\n                this.onFinish.call(this);\n            }\n        };\n        this.tween.onReset = () => {\n            const node = this.node;\n            const attrs = Tween.attrs[node._id][this._id];\n            if (attrs.points && attrs.points.trueStart) {\n                node.points(attrs.points.trueStart);\n            }\n            if (this.onReset) {\n                this.onReset();\n            }\n        };\n        this.tween.onUpdate = () => {\n            if (this.onUpdate) {\n                this.onUpdate.call(this);\n            }\n        };\n    }\n    play() {\n        this.tween.play();\n        return this;\n    }\n    reverse() {\n        this.tween.reverse();\n        return this;\n    }\n    reset() {\n        this.tween.reset();\n        return this;\n    }\n    seek(t) {\n        this.tween.seek(t * 1000);\n        return this;\n    }\n    pause() {\n        this.tween.pause();\n        return this;\n    }\n    finish() {\n        this.tween.finish();\n        return this;\n    }\n    destroy() {\n        const nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId];\n        this.pause();\n        if (this.anim) {\n            this.anim.stop();\n        }\n        for (const key in attrs) {\n            delete Tween.tweens[nodeId][key];\n        }\n        delete Tween.attrs[nodeId][thisId];\n        if (Tween.tweens[nodeId]) {\n            if (Object.keys(Tween.tweens[nodeId]).length === 0) {\n                delete Tween.tweens[nodeId];\n            }\n            if (Object.keys(Tween.attrs[nodeId]).length === 0) {\n                delete Tween.attrs[nodeId];\n            }\n        }\n    }\n}\nTween.attrs = {};\nTween.tweens = {};\nNode.prototype.to = function (params) {\n    const onFinish = params.onFinish;\n    params.node = this;\n    params.onFinish = function () {\n        this.destroy();\n        if (onFinish) {\n            onFinish();\n        }\n    };\n    const tween = new Tween(params);\n    tween.play();\n};\nexport const Easings = {\n    BackEaseIn(t, b, c, d) {\n        const s = 1.70158;\n        return c * (t /= d) * t * ((s + 1) * t - s) + b;\n    },\n    BackEaseOut(t, b, c, d) {\n        const s = 1.70158;\n        return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n    },\n    BackEaseInOut(t, b, c, d) {\n        let s = 1.70158;\n        if ((t /= d / 2) < 1) {\n            return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n        }\n        return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n    },\n    ElasticEaseIn(t, b, c, d, a, p) {\n        let s = 0;\n        if (t === 0) {\n            return b;\n        }\n        if ((t /= d) === 1) {\n            return b + c;\n        }\n        if (!p) {\n            p = d * 0.3;\n        }\n        if (!a || a < Math.abs(c)) {\n            a = c;\n            s = p / 4;\n        }\n        else {\n            s = (p / (2 * Math.PI)) * Math.asin(c / a);\n        }\n        return (-(a *\n            Math.pow(2, 10 * (t -= 1)) *\n            Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n    },\n    ElasticEaseOut(t, b, c, d, a, p) {\n        let s = 0;\n        if (t === 0) {\n            return b;\n        }\n        if ((t /= d) === 1) {\n            return b + c;\n        }\n        if (!p) {\n            p = d * 0.3;\n        }\n        if (!a || a < Math.abs(c)) {\n            a = c;\n            s = p / 4;\n        }\n        else {\n            s = (p / (2 * Math.PI)) * Math.asin(c / a);\n        }\n        return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n            c +\n            b);\n    },\n    ElasticEaseInOut(t, b, c, d, a, p) {\n        let s = 0;\n        if (t === 0) {\n            return b;\n        }\n        if ((t /= d / 2) === 2) {\n            return b + c;\n        }\n        if (!p) {\n            p = d * (0.3 * 1.5);\n        }\n        if (!a || a < Math.abs(c)) {\n            a = c;\n            s = p / 4;\n        }\n        else {\n            s = (p / (2 * Math.PI)) * Math.asin(c / a);\n        }\n        if (t < 1) {\n            return (-0.5 *\n                (a *\n                    Math.pow(2, 10 * (t -= 1)) *\n                    Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n                b);\n        }\n        return (a *\n            Math.pow(2, -10 * (t -= 1)) *\n            Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n            0.5 +\n            c +\n            b);\n    },\n    BounceEaseOut(t, b, c, d) {\n        if ((t /= d) < 1 / 2.75) {\n            return c * (7.5625 * t * t) + b;\n        }\n        else if (t < 2 / 2.75) {\n            return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n        }\n        else if (t < 2.5 / 2.75) {\n            return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n        }\n        else {\n            return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n        }\n    },\n    BounceEaseIn(t, b, c, d) {\n        return c - Easings.BounceEaseOut(d - t, 0, c, d) + b;\n    },\n    BounceEaseInOut(t, b, c, d) {\n        if (t < d / 2) {\n            return Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n        }\n        else {\n            return Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n        }\n    },\n    EaseIn(t, b, c, d) {\n        return c * (t /= d) * t + b;\n    },\n    EaseOut(t, b, c, d) {\n        return -c * (t /= d) * (t - 2) + b;\n    },\n    EaseInOut(t, b, c, d) {\n        if ((t /= d / 2) < 1) {\n            return (c / 2) * t * t + b;\n        }\n        return (-c / 2) * (--t * (t - 2) - 1) + b;\n    },\n    StrongEaseIn(t, b, c, d) {\n        return c * (t /= d) * t * t * t * t + b;\n    },\n    StrongEaseOut(t, b, c, d) {\n        return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n    },\n    StrongEaseInOut(t, b, c, d) {\n        if ((t /= d / 2) < 1) {\n            return (c / 2) * t * t * t * t * t + b;\n        }\n        return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n    },\n    Linear(t, b, c, d) {\n        return (c * t) / d + b;\n    },\n};\n", "import { Konva as Global } from \"./Global.js\";\nimport { Util, Transform } from \"./Util.js\";\nimport { Node } from \"./Node.js\";\nimport { Container } from \"./Container.js\";\nimport { Stage, stages } from \"./Stage.js\";\nimport { Layer } from \"./Layer.js\";\nimport { FastLayer } from \"./FastLayer.js\";\nimport { Group } from \"./Group.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { Shape, shapes } from \"./Shape.js\";\nimport { Animation } from \"./Animation.js\";\nimport { Tween, Easings } from \"./Tween.js\";\nimport { Context } from \"./Context.js\";\nimport { Canvas } from \"./Canvas.js\";\nexport const Konva = Util._assign(Global, {\n    Util,\n    Transform,\n    Node,\n    Container,\n    Stage,\n    stages,\n    Layer,\n    FastLayer,\n    Group,\n    DD,\n    Shape,\n    shapes,\n    Animation,\n    Tween,\n    Easings,\n    Context,\n    Canvas,\n});\nexport default Konva;\n", "import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator, getBooleanValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Arc extends Shape {\n    _sceneFunc(context) {\n        const angle = Konva.getAngle(this.angle()), clockwise = this.clockwise();\n        context.beginPath();\n        context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n        context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        return this.outerRadius() * 2;\n    }\n    getHeight() {\n        return this.outerRadius() * 2;\n    }\n    setWidth(width) {\n        this.outerRadius(width / 2);\n    }\n    setHeight(height) {\n        this.outerRadius(height / 2);\n    }\n    getSelfRect() {\n        const innerRadius = this.innerRadius();\n        const outerRadius = this.outerRadius();\n        const clockwise = this.clockwise();\n        const angle = Konva.getAngle(clockwise ? 360 - this.angle() : this.angle());\n        const boundLeftRatio = Math.cos(Math.min(angle, Math.PI));\n        const boundRightRatio = 1;\n        const boundTopRatio = Math.sin(Math.min(Math.max(Math.PI, angle), (3 * Math.PI) / 2));\n        const boundBottomRatio = Math.sin(Math.min(angle, Math.PI / 2));\n        const boundLeft = boundLeftRatio * (boundLeftRatio > 0 ? innerRadius : outerRadius);\n        const boundRight = boundRightRatio * (boundRightRatio > 0 ? outerRadius : innerRadius);\n        const boundTop = boundTopRatio * (boundTopRatio > 0 ? innerRadius : outerRadius);\n        const boundBottom = boundBottomRatio * (boundBottomRatio > 0 ? outerRadius : innerRadius);\n        return {\n            x: boundLeft,\n            y: clockwise ? -1 * boundBottom : boundTop,\n            width: boundRight - boundLeft,\n            height: boundBottom - boundTop,\n        };\n    }\n}\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = [\n    'innerRadius',\n    'outerRadius',\n    'angle',\n    'clockwise',\n];\n_registerNode(Arc);\nFactory.addGetterSetter(Arc, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'outerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'angle', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'clockwise', false, getBooleanValidator());\n", "import { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberArrayValidator, getNumberValidator } from \"../Validators.js\";\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n    const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n    return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n    const len = p.length, allPoints = [];\n    for (let n = 2; n < len - 2; n += 2) {\n        const cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n        if (isNaN(cp[0])) {\n            continue;\n        }\n        allPoints.push(cp[0]);\n        allPoints.push(cp[1]);\n        allPoints.push(p[n]);\n        allPoints.push(p[n + 1]);\n        allPoints.push(cp[2]);\n        allPoints.push(cp[3]);\n    }\n    return allPoints;\n}\nfunction getBezierExtremaPoints(points) {\n    const axisPoints = [\n        [points[0], points[2], points[4], points[6]],\n        [points[1], points[3], points[5], points[7]],\n    ];\n    const extremaTs = [];\n    for (const axis of axisPoints) {\n        const a = -3 * axis[0] + 9 * axis[1] - 9 * axis[2] + 3 * axis[3];\n        if (a !== 0) {\n            const b = 6 * axis[0] - 12 * axis[1] + 6 * axis[2];\n            const c = -3 * axis[0] + 3 * axis[1];\n            const discriminant = b * b - 4 * a * c;\n            if (discriminant >= 0) {\n                const d = Math.sqrt(discriminant);\n                extremaTs.push((-b + d) / (2 * a));\n                extremaTs.push((-b - d) / (2 * a));\n            }\n        }\n    }\n    return extremaTs\n        .filter((t) => t > 0 && t < 1)\n        .flatMap((t) => axisPoints.map((axis) => {\n        const mt = 1 - t;\n        return (mt * mt * mt * axis[0] +\n            3 * mt * mt * t * axis[1] +\n            3 * mt * t * t * axis[2] +\n            t * t * t * axis[3]);\n    }));\n}\nexport class Line extends Shape {\n    constructor(config) {\n        super(config);\n        this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n            this._clearCache('tensionPoints');\n        });\n    }\n    _sceneFunc(context) {\n        const points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier();\n        if (!length) {\n            return;\n        }\n        let n = 0;\n        context.beginPath();\n        context.moveTo(points[0], points[1]);\n        if (tension !== 0 && length > 4) {\n            const tp = this.getTensionPoints();\n            const len = tp.length;\n            n = closed ? 0 : 4;\n            if (!closed) {\n                context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n            }\n            while (n < len - 2) {\n                context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n            }\n            if (!closed) {\n                context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n            }\n        }\n        else if (bezier) {\n            n = 2;\n            while (n < length) {\n                context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n            }\n        }\n        else {\n            for (n = 2; n < length; n += 2) {\n                context.lineTo(points[n], points[n + 1]);\n            }\n        }\n        if (closed) {\n            context.closePath();\n            context.fillStrokeShape(this);\n        }\n        else {\n            context.strokeShape(this);\n        }\n    }\n    getTensionPoints() {\n        return this._getCache('tensionPoints', this._getTensionPoints);\n    }\n    _getTensionPoints() {\n        if (this.closed()) {\n            return this._getTensionPointsClosed();\n        }\n        else {\n            return expandPoints(this.points(), this.tension());\n        }\n    }\n    _getTensionPointsClosed() {\n        const p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n            .concat(middle)\n            .concat([\n            lastControlPoints[0],\n            lastControlPoints[1],\n            p[len - 2],\n            p[len - 1],\n            lastControlPoints[2],\n            lastControlPoints[3],\n            firstControlPoints[0],\n            firstControlPoints[1],\n            p[0],\n            p[1],\n        ]);\n        return tp;\n    }\n    getWidth() {\n        return this.getSelfRect().width;\n    }\n    getHeight() {\n        return this.getSelfRect().height;\n    }\n    getSelfRect() {\n        let points = this.points();\n        if (points.length < 4) {\n            return {\n                x: points[0] || 0,\n                y: points[1] || 0,\n                width: 0,\n                height: 0,\n            };\n        }\n        if (this.tension() !== 0) {\n            points = [\n                points[0],\n                points[1],\n                ...this._getTensionPoints(),\n                points[points.length - 2],\n                points[points.length - 1],\n            ];\n        }\n        else if (this.bezier()) {\n            points = [\n                points[0],\n                points[1],\n                ...getBezierExtremaPoints(this.points()),\n                points[points.length - 2],\n                points[points.length - 1],\n            ];\n        }\n        else {\n            points = this.points();\n        }\n        let minX = points[0];\n        let maxX = points[0];\n        let minY = points[1];\n        let maxY = points[1];\n        let x, y;\n        for (let i = 0; i < points.length / 2; i++) {\n            x = points[i * 2];\n            y = points[i * 2 + 1];\n            minX = Math.min(minX, x);\n            maxX = Math.max(maxX, x);\n            minY = Math.min(minY, y);\n            maxY = Math.max(maxY, y);\n        }\n        return {\n            x: minX,\n            y: minY,\n            width: maxX - minX,\n            height: maxY - minY,\n        };\n    }\n}\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n_registerNode(Line);\nFactory.addGetterSetter(Line, 'closed', false);\nFactory.addGetterSetter(Line, 'bezier', false);\nFactory.addGetterSetter(Line, 'tension', 0, getNumberValidator());\nFactory.addGetterSetter(Line, 'points', [], getNumberArrayValidator());\n", "export const tValues = [\n    [],\n    [],\n    [\n        -0.5773502691896257645091487805019574556476,\n        0.5773502691896257645091487805019574556476,\n    ],\n    [\n        0, -0.7745966692414833770358530799564799221665,\n        0.7745966692414833770358530799564799221665,\n    ],\n    [\n        -0.3399810435848562648026657591032446872005,\n        0.3399810435848562648026657591032446872005,\n        -0.8611363115940525752239464888928095050957,\n        0.8611363115940525752239464888928095050957,\n    ],\n    [\n        0, -0.5384693101056830910363144207002088049672,\n        0.5384693101056830910363144207002088049672,\n        -0.9061798459386639927976268782993929651256,\n        0.9061798459386639927976268782993929651256,\n    ],\n    [\n        0.6612093864662645136613995950199053470064,\n        -0.6612093864662645136613995950199053470064,\n        -0.2386191860831969086305017216807119354186,\n        0.2386191860831969086305017216807119354186,\n        -0.9324695142031520278123015544939946091347,\n        0.9324695142031520278123015544939946091347,\n    ],\n    [\n        0, 0.4058451513773971669066064120769614633473,\n        -0.4058451513773971669066064120769614633473,\n        -0.7415311855993944398638647732807884070741,\n        0.7415311855993944398638647732807884070741,\n        -0.9491079123427585245261896840478512624007,\n        0.9491079123427585245261896840478512624007,\n    ],\n    [\n        -0.1834346424956498049394761423601839806667,\n        0.1834346424956498049394761423601839806667,\n        -0.5255324099163289858177390491892463490419,\n        0.5255324099163289858177390491892463490419,\n        -0.7966664774136267395915539364758304368371,\n        0.7966664774136267395915539364758304368371,\n        -0.9602898564975362316835608685694729904282,\n        0.9602898564975362316835608685694729904282,\n    ],\n    [\n        0, -0.8360311073266357942994297880697348765441,\n        0.8360311073266357942994297880697348765441,\n        -0.9681602395076260898355762029036728700494,\n        0.9681602395076260898355762029036728700494,\n        -0.3242534234038089290385380146433366085719,\n        0.3242534234038089290385380146433366085719,\n        -0.6133714327005903973087020393414741847857,\n        0.6133714327005903973087020393414741847857,\n    ],\n    [\n        -0.1488743389816312108848260011297199846175,\n        0.1488743389816312108848260011297199846175,\n        -0.4333953941292471907992659431657841622,\n        0.4333953941292471907992659431657841622,\n        -0.6794095682990244062343273651148735757692,\n        0.6794095682990244062343273651148735757692,\n        -0.8650633666889845107320966884234930485275,\n        0.8650633666889845107320966884234930485275,\n        -0.9739065285171717200779640120844520534282,\n        0.9739065285171717200779640120844520534282,\n    ],\n    [\n        0, -0.2695431559523449723315319854008615246796,\n        0.2695431559523449723315319854008615246796,\n        -0.5190961292068118159257256694586095544802,\n        0.5190961292068118159257256694586095544802,\n        -0.7301520055740493240934162520311534580496,\n        0.7301520055740493240934162520311534580496,\n        -0.8870625997680952990751577693039272666316,\n        0.8870625997680952990751577693039272666316,\n        -0.9782286581460569928039380011228573907714,\n        0.9782286581460569928039380011228573907714,\n    ],\n    [\n        -0.1252334085114689154724413694638531299833,\n        0.1252334085114689154724413694638531299833,\n        -0.3678314989981801937526915366437175612563,\n        0.3678314989981801937526915366437175612563,\n        -0.587317954286617447296702418940534280369,\n        0.587317954286617447296702418940534280369,\n        -0.7699026741943046870368938332128180759849,\n        0.7699026741943046870368938332128180759849,\n        -0.9041172563704748566784658661190961925375,\n        0.9041172563704748566784658661190961925375,\n        -0.9815606342467192506905490901492808229601,\n        0.9815606342467192506905490901492808229601,\n    ],\n    [\n        0, -0.2304583159551347940655281210979888352115,\n        0.2304583159551347940655281210979888352115,\n        -0.4484927510364468528779128521276398678019,\n        0.4484927510364468528779128521276398678019,\n        -0.6423493394403402206439846069955156500716,\n        0.6423493394403402206439846069955156500716,\n        -0.8015780907333099127942064895828598903056,\n        0.8015780907333099127942064895828598903056,\n        -0.9175983992229779652065478365007195123904,\n        0.9175983992229779652065478365007195123904,\n        -0.9841830547185881494728294488071096110649,\n        0.9841830547185881494728294488071096110649,\n    ],\n    [\n        -0.1080549487073436620662446502198347476119,\n        0.1080549487073436620662446502198347476119,\n        -0.3191123689278897604356718241684754668342,\n        0.3191123689278897604356718241684754668342,\n        -0.5152486363581540919652907185511886623088,\n        0.5152486363581540919652907185511886623088,\n        -0.6872929048116854701480198030193341375384,\n        0.6872929048116854701480198030193341375384,\n        -0.8272013150697649931897947426503949610397,\n        0.8272013150697649931897947426503949610397,\n        -0.928434883663573517336391139377874264477,\n        0.928434883663573517336391139377874264477,\n        -0.986283808696812338841597266704052801676,\n        0.986283808696812338841597266704052801676,\n    ],\n    [\n        0, -0.2011940939974345223006283033945962078128,\n        0.2011940939974345223006283033945962078128,\n        -0.3941513470775633698972073709810454683627,\n        0.3941513470775633698972073709810454683627,\n        -0.5709721726085388475372267372539106412383,\n        0.5709721726085388475372267372539106412383,\n        -0.7244177313601700474161860546139380096308,\n        0.7244177313601700474161860546139380096308,\n        -0.8482065834104272162006483207742168513662,\n        0.8482065834104272162006483207742168513662,\n        -0.9372733924007059043077589477102094712439,\n        0.9372733924007059043077589477102094712439,\n        -0.9879925180204854284895657185866125811469,\n        0.9879925180204854284895657185866125811469,\n    ],\n    [\n        -0.0950125098376374401853193354249580631303,\n        0.0950125098376374401853193354249580631303,\n        -0.281603550779258913230460501460496106486,\n        0.281603550779258913230460501460496106486,\n        -0.45801677765722738634241944298357757354,\n        0.45801677765722738634241944298357757354,\n        -0.6178762444026437484466717640487910189918,\n        0.6178762444026437484466717640487910189918,\n        -0.7554044083550030338951011948474422683538,\n        0.7554044083550030338951011948474422683538,\n        -0.8656312023878317438804678977123931323873,\n        0.8656312023878317438804678977123931323873,\n        -0.9445750230732325760779884155346083450911,\n        0.9445750230732325760779884155346083450911,\n        -0.9894009349916499325961541734503326274262,\n        0.9894009349916499325961541734503326274262,\n    ],\n    [\n        0, -0.1784841814958478558506774936540655574754,\n        0.1784841814958478558506774936540655574754,\n        -0.3512317634538763152971855170953460050405,\n        0.3512317634538763152971855170953460050405,\n        -0.5126905370864769678862465686295518745829,\n        0.5126905370864769678862465686295518745829,\n        -0.6576711592166907658503022166430023351478,\n        0.6576711592166907658503022166430023351478,\n        -0.7815140038968014069252300555204760502239,\n        0.7815140038968014069252300555204760502239,\n        -0.8802391537269859021229556944881556926234,\n        0.8802391537269859021229556944881556926234,\n        -0.9506755217687677612227169578958030214433,\n        0.9506755217687677612227169578958030214433,\n        -0.9905754753144173356754340199406652765077,\n        0.9905754753144173356754340199406652765077,\n    ],\n    [\n        -0.0847750130417353012422618529357838117333,\n        0.0847750130417353012422618529357838117333,\n        -0.2518862256915055095889728548779112301628,\n        0.2518862256915055095889728548779112301628,\n        -0.4117511614628426460359317938330516370789,\n        0.4117511614628426460359317938330516370789,\n        -0.5597708310739475346078715485253291369276,\n        0.5597708310739475346078715485253291369276,\n        -0.6916870430603532078748910812888483894522,\n        0.6916870430603532078748910812888483894522,\n        -0.8037049589725231156824174550145907971032,\n        0.8037049589725231156824174550145907971032,\n        -0.8926024664975557392060605911271455154078,\n        0.8926024664975557392060605911271455154078,\n        -0.9558239495713977551811958929297763099728,\n        0.9558239495713977551811958929297763099728,\n        -0.9915651684209309467300160047061507702525,\n        0.9915651684209309467300160047061507702525,\n    ],\n    [\n        0, -0.1603586456402253758680961157407435495048,\n        0.1603586456402253758680961157407435495048,\n        -0.3165640999636298319901173288498449178922,\n        0.3165640999636298319901173288498449178922,\n        -0.4645707413759609457172671481041023679762,\n        0.4645707413759609457172671481041023679762,\n        -0.6005453046616810234696381649462392798683,\n        0.6005453046616810234696381649462392798683,\n        -0.7209661773352293786170958608237816296571,\n        0.7209661773352293786170958608237816296571,\n        -0.8227146565371428249789224867127139017745,\n        0.8227146565371428249789224867127139017745,\n        -0.9031559036148179016426609285323124878093,\n        0.9031559036148179016426609285323124878093,\n        -0.960208152134830030852778840687651526615,\n        0.960208152134830030852778840687651526615,\n        -0.9924068438435844031890176702532604935893,\n        0.9924068438435844031890176702532604935893,\n    ],\n    [\n        -0.0765265211334973337546404093988382110047,\n        0.0765265211334973337546404093988382110047,\n        -0.227785851141645078080496195368574624743,\n        0.227785851141645078080496195368574624743,\n        -0.3737060887154195606725481770249272373957,\n        0.3737060887154195606725481770249272373957,\n        -0.5108670019508270980043640509552509984254,\n        0.5108670019508270980043640509552509984254,\n        -0.6360536807265150254528366962262859367433,\n        0.6360536807265150254528366962262859367433,\n        -0.7463319064601507926143050703556415903107,\n        0.7463319064601507926143050703556415903107,\n        -0.8391169718222188233945290617015206853296,\n        0.8391169718222188233945290617015206853296,\n        -0.9122344282513259058677524412032981130491,\n        0.9122344282513259058677524412032981130491,\n        -0.963971927277913791267666131197277221912,\n        0.963971927277913791267666131197277221912,\n        -0.9931285991850949247861223884713202782226,\n        0.9931285991850949247861223884713202782226,\n    ],\n    [\n        0, -0.1455618541608950909370309823386863301163,\n        0.1455618541608950909370309823386863301163,\n        -0.288021316802401096600792516064600319909,\n        0.288021316802401096600792516064600319909,\n        -0.4243421202074387835736688885437880520964,\n        0.4243421202074387835736688885437880520964,\n        -0.551618835887219807059018796724313286622,\n        0.551618835887219807059018796724313286622,\n        -0.667138804197412319305966669990339162597,\n        0.667138804197412319305966669990339162597,\n        -0.7684399634756779086158778513062280348209,\n        0.7684399634756779086158778513062280348209,\n        -0.8533633645833172836472506385875676702761,\n        0.8533633645833172836472506385875676702761,\n        -0.9200993341504008287901871337149688941591,\n        0.9200993341504008287901871337149688941591,\n        -0.9672268385663062943166222149076951614246,\n        0.9672268385663062943166222149076951614246,\n        -0.9937521706203895002602420359379409291933,\n        0.9937521706203895002602420359379409291933,\n    ],\n    [\n        -0.0697392733197222212138417961186280818222,\n        0.0697392733197222212138417961186280818222,\n        -0.2078604266882212854788465339195457342156,\n        0.2078604266882212854788465339195457342156,\n        -0.3419358208920842251581474204273796195591,\n        0.3419358208920842251581474204273796195591,\n        -0.4693558379867570264063307109664063460953,\n        0.4693558379867570264063307109664063460953,\n        -0.5876404035069115929588769276386473488776,\n        0.5876404035069115929588769276386473488776,\n        -0.6944872631866827800506898357622567712673,\n        0.6944872631866827800506898357622567712673,\n        -0.7878168059792081620042779554083515213881,\n        0.7878168059792081620042779554083515213881,\n        -0.8658125777203001365364256370193787290847,\n        0.8658125777203001365364256370193787290847,\n        -0.9269567721871740005206929392590531966353,\n        0.9269567721871740005206929392590531966353,\n        -0.9700604978354287271239509867652687108059,\n        0.9700604978354287271239509867652687108059,\n        -0.994294585482399292073031421161298980393,\n        0.994294585482399292073031421161298980393,\n    ],\n    [\n        0, -0.1332568242984661109317426822417661370104,\n        0.1332568242984661109317426822417661370104,\n        -0.264135680970344930533869538283309602979,\n        0.264135680970344930533869538283309602979,\n        -0.390301038030290831421488872880605458578,\n        0.390301038030290831421488872880605458578,\n        -0.5095014778460075496897930478668464305448,\n        0.5095014778460075496897930478668464305448,\n        -0.6196098757636461563850973116495956533871,\n        0.6196098757636461563850973116495956533871,\n        -0.7186613631319501944616244837486188483299,\n        0.7186613631319501944616244837486188483299,\n        -0.8048884016188398921511184069967785579414,\n        0.8048884016188398921511184069967785579414,\n        -0.8767523582704416673781568859341456716389,\n        0.8767523582704416673781568859341456716389,\n        -0.9329710868260161023491969890384229782357,\n        0.9329710868260161023491969890384229782357,\n        -0.9725424712181152319560240768207773751816,\n        0.9725424712181152319560240768207773751816,\n        -0.9947693349975521235239257154455743605736,\n        0.9947693349975521235239257154455743605736,\n    ],\n    [\n        -0.0640568928626056260850430826247450385909,\n        0.0640568928626056260850430826247450385909,\n        -0.1911188674736163091586398207570696318404,\n        0.1911188674736163091586398207570696318404,\n        -0.3150426796961633743867932913198102407864,\n        0.3150426796961633743867932913198102407864,\n        -0.4337935076260451384870842319133497124524,\n        0.4337935076260451384870842319133497124524,\n        -0.5454214713888395356583756172183723700107,\n        0.5454214713888395356583756172183723700107,\n        -0.6480936519369755692524957869107476266696,\n        0.6480936519369755692524957869107476266696,\n        -0.7401241915785543642438281030999784255232,\n        0.7401241915785543642438281030999784255232,\n        -0.8200019859739029219539498726697452080761,\n        0.8200019859739029219539498726697452080761,\n        -0.8864155270044010342131543419821967550873,\n        0.8864155270044010342131543419821967550873,\n        -0.9382745520027327585236490017087214496548,\n        0.9382745520027327585236490017087214496548,\n        -0.9747285559713094981983919930081690617411,\n        0.9747285559713094981983919930081690617411,\n        -0.9951872199970213601799974097007368118745,\n        0.9951872199970213601799974097007368118745,\n    ],\n];\nexport const cValues = [\n    [],\n    [],\n    [1.0, 1.0],\n    [\n        0.8888888888888888888888888888888888888888,\n        0.5555555555555555555555555555555555555555,\n        0.5555555555555555555555555555555555555555,\n    ],\n    [\n        0.6521451548625461426269360507780005927646,\n        0.6521451548625461426269360507780005927646,\n        0.3478548451374538573730639492219994072353,\n        0.3478548451374538573730639492219994072353,\n    ],\n    [\n        0.5688888888888888888888888888888888888888,\n        0.4786286704993664680412915148356381929122,\n        0.4786286704993664680412915148356381929122,\n        0.2369268850561890875142640407199173626432,\n        0.2369268850561890875142640407199173626432,\n    ],\n    [\n        0.3607615730481386075698335138377161116615,\n        0.3607615730481386075698335138377161116615,\n        0.4679139345726910473898703439895509948116,\n        0.4679139345726910473898703439895509948116,\n        0.1713244923791703450402961421727328935268,\n        0.1713244923791703450402961421727328935268,\n    ],\n    [\n        0.4179591836734693877551020408163265306122,\n        0.3818300505051189449503697754889751338783,\n        0.3818300505051189449503697754889751338783,\n        0.2797053914892766679014677714237795824869,\n        0.2797053914892766679014677714237795824869,\n        0.1294849661688696932706114326790820183285,\n        0.1294849661688696932706114326790820183285,\n    ],\n    [\n        0.3626837833783619829651504492771956121941,\n        0.3626837833783619829651504492771956121941,\n        0.3137066458778872873379622019866013132603,\n        0.3137066458778872873379622019866013132603,\n        0.2223810344533744705443559944262408844301,\n        0.2223810344533744705443559944262408844301,\n        0.1012285362903762591525313543099621901153,\n        0.1012285362903762591525313543099621901153,\n    ],\n    [\n        0.3302393550012597631645250692869740488788,\n        0.1806481606948574040584720312429128095143,\n        0.1806481606948574040584720312429128095143,\n        0.0812743883615744119718921581105236506756,\n        0.0812743883615744119718921581105236506756,\n        0.3123470770400028400686304065844436655987,\n        0.3123470770400028400686304065844436655987,\n        0.2606106964029354623187428694186328497718,\n        0.2606106964029354623187428694186328497718,\n    ],\n    [\n        0.295524224714752870173892994651338329421,\n        0.295524224714752870173892994651338329421,\n        0.2692667193099963550912269215694693528597,\n        0.2692667193099963550912269215694693528597,\n        0.2190863625159820439955349342281631924587,\n        0.2190863625159820439955349342281631924587,\n        0.1494513491505805931457763396576973324025,\n        0.1494513491505805931457763396576973324025,\n        0.0666713443086881375935688098933317928578,\n        0.0666713443086881375935688098933317928578,\n    ],\n    [\n        0.272925086777900630714483528336342189156,\n        0.2628045445102466621806888698905091953727,\n        0.2628045445102466621806888698905091953727,\n        0.2331937645919904799185237048431751394317,\n        0.2331937645919904799185237048431751394317,\n        0.1862902109277342514260976414316558916912,\n        0.1862902109277342514260976414316558916912,\n        0.1255803694649046246346942992239401001976,\n        0.1255803694649046246346942992239401001976,\n        0.0556685671161736664827537204425485787285,\n        0.0556685671161736664827537204425485787285,\n    ],\n    [\n        0.2491470458134027850005624360429512108304,\n        0.2491470458134027850005624360429512108304,\n        0.2334925365383548087608498989248780562594,\n        0.2334925365383548087608498989248780562594,\n        0.2031674267230659217490644558097983765065,\n        0.2031674267230659217490644558097983765065,\n        0.160078328543346226334652529543359071872,\n        0.160078328543346226334652529543359071872,\n        0.1069393259953184309602547181939962242145,\n        0.1069393259953184309602547181939962242145,\n        0.047175336386511827194615961485017060317,\n        0.047175336386511827194615961485017060317,\n    ],\n    [\n        0.2325515532308739101945895152688359481566,\n        0.2262831802628972384120901860397766184347,\n        0.2262831802628972384120901860397766184347,\n        0.2078160475368885023125232193060527633865,\n        0.2078160475368885023125232193060527633865,\n        0.1781459807619457382800466919960979955128,\n        0.1781459807619457382800466919960979955128,\n        0.1388735102197872384636017768688714676218,\n        0.1388735102197872384636017768688714676218,\n        0.0921214998377284479144217759537971209236,\n        0.0921214998377284479144217759537971209236,\n        0.0404840047653158795200215922009860600419,\n        0.0404840047653158795200215922009860600419,\n    ],\n    [\n        0.2152638534631577901958764433162600352749,\n        0.2152638534631577901958764433162600352749,\n        0.2051984637212956039659240656612180557103,\n        0.2051984637212956039659240656612180557103,\n        0.1855383974779378137417165901251570362489,\n        0.1855383974779378137417165901251570362489,\n        0.1572031671581935345696019386238421566056,\n        0.1572031671581935345696019386238421566056,\n        0.1215185706879031846894148090724766259566,\n        0.1215185706879031846894148090724766259566,\n        0.0801580871597602098056332770628543095836,\n        0.0801580871597602098056332770628543095836,\n        0.0351194603317518630318328761381917806197,\n        0.0351194603317518630318328761381917806197,\n    ],\n    [\n        0.2025782419255612728806201999675193148386,\n        0.1984314853271115764561183264438393248186,\n        0.1984314853271115764561183264438393248186,\n        0.1861610000155622110268005618664228245062,\n        0.1861610000155622110268005618664228245062,\n        0.1662692058169939335532008604812088111309,\n        0.1662692058169939335532008604812088111309,\n        0.1395706779261543144478047945110283225208,\n        0.1395706779261543144478047945110283225208,\n        0.1071592204671719350118695466858693034155,\n        0.1071592204671719350118695466858693034155,\n        0.0703660474881081247092674164506673384667,\n        0.0703660474881081247092674164506673384667,\n        0.0307532419961172683546283935772044177217,\n        0.0307532419961172683546283935772044177217,\n    ],\n    [\n        0.1894506104550684962853967232082831051469,\n        0.1894506104550684962853967232082831051469,\n        0.1826034150449235888667636679692199393835,\n        0.1826034150449235888667636679692199393835,\n        0.1691565193950025381893120790303599622116,\n        0.1691565193950025381893120790303599622116,\n        0.1495959888165767320815017305474785489704,\n        0.1495959888165767320815017305474785489704,\n        0.1246289712555338720524762821920164201448,\n        0.1246289712555338720524762821920164201448,\n        0.0951585116824927848099251076022462263552,\n        0.0951585116824927848099251076022462263552,\n        0.0622535239386478928628438369943776942749,\n        0.0622535239386478928628438369943776942749,\n        0.0271524594117540948517805724560181035122,\n        0.0271524594117540948517805724560181035122,\n    ],\n    [\n        0.1794464703562065254582656442618856214487,\n        0.1765627053669926463252709901131972391509,\n        0.1765627053669926463252709901131972391509,\n        0.1680041021564500445099706637883231550211,\n        0.1680041021564500445099706637883231550211,\n        0.1540457610768102880814315948019586119404,\n        0.1540457610768102880814315948019586119404,\n        0.1351363684685254732863199817023501973721,\n        0.1351363684685254732863199817023501973721,\n        0.1118838471934039710947883856263559267358,\n        0.1118838471934039710947883856263559267358,\n        0.0850361483171791808835353701910620738504,\n        0.0850361483171791808835353701910620738504,\n        0.0554595293739872011294401653582446605128,\n        0.0554595293739872011294401653582446605128,\n        0.0241483028685479319601100262875653246916,\n        0.0241483028685479319601100262875653246916,\n    ],\n    [\n        0.1691423829631435918406564701349866103341,\n        0.1691423829631435918406564701349866103341,\n        0.1642764837458327229860537764659275904123,\n        0.1642764837458327229860537764659275904123,\n        0.1546846751262652449254180038363747721932,\n        0.1546846751262652449254180038363747721932,\n        0.1406429146706506512047313037519472280955,\n        0.1406429146706506512047313037519472280955,\n        0.1225552067114784601845191268002015552281,\n        0.1225552067114784601845191268002015552281,\n        0.1009420441062871655628139849248346070628,\n        0.1009420441062871655628139849248346070628,\n        0.0764257302548890565291296776166365256053,\n        0.0764257302548890565291296776166365256053,\n        0.0497145488949697964533349462026386416808,\n        0.0497145488949697964533349462026386416808,\n        0.0216160135264833103133427102664524693876,\n        0.0216160135264833103133427102664524693876,\n    ],\n    [\n        0.1610544498487836959791636253209167350399,\n        0.1589688433939543476499564394650472016787,\n        0.1589688433939543476499564394650472016787,\n        0.152766042065859666778855400897662998461,\n        0.152766042065859666778855400897662998461,\n        0.1426067021736066117757461094419029724756,\n        0.1426067021736066117757461094419029724756,\n        0.1287539625393362276755157848568771170558,\n        0.1287539625393362276755157848568771170558,\n        0.1115666455473339947160239016817659974813,\n        0.1115666455473339947160239016817659974813,\n        0.0914900216224499994644620941238396526609,\n        0.0914900216224499994644620941238396526609,\n        0.0690445427376412265807082580060130449618,\n        0.0690445427376412265807082580060130449618,\n        0.0448142267656996003328381574019942119517,\n        0.0448142267656996003328381574019942119517,\n        0.0194617882297264770363120414644384357529,\n        0.0194617882297264770363120414644384357529,\n    ],\n    [\n        0.1527533871307258506980843319550975934919,\n        0.1527533871307258506980843319550975934919,\n        0.1491729864726037467878287370019694366926,\n        0.1491729864726037467878287370019694366926,\n        0.1420961093183820513292983250671649330345,\n        0.1420961093183820513292983250671649330345,\n        0.1316886384491766268984944997481631349161,\n        0.1316886384491766268984944997481631349161,\n        0.118194531961518417312377377711382287005,\n        0.118194531961518417312377377711382287005,\n        0.1019301198172404350367501354803498761666,\n        0.1019301198172404350367501354803498761666,\n        0.0832767415767047487247581432220462061001,\n        0.0832767415767047487247581432220462061001,\n        0.0626720483341090635695065351870416063516,\n        0.0626720483341090635695065351870416063516,\n        0.040601429800386941331039952274932109879,\n        0.040601429800386941331039952274932109879,\n        0.0176140071391521183118619623518528163621,\n        0.0176140071391521183118619623518528163621,\n    ],\n    [\n        0.1460811336496904271919851476833711882448,\n        0.1445244039899700590638271665537525436099,\n        0.1445244039899700590638271665537525436099,\n        0.1398873947910731547221334238675831108927,\n        0.1398873947910731547221334238675831108927,\n        0.132268938633337461781052574496775604329,\n        0.132268938633337461781052574496775604329,\n        0.1218314160537285341953671771257335983563,\n        0.1218314160537285341953671771257335983563,\n        0.1087972991671483776634745780701056420336,\n        0.1087972991671483776634745780701056420336,\n        0.0934444234560338615532897411139320884835,\n        0.0934444234560338615532897411139320884835,\n        0.0761001136283793020170516533001831792261,\n        0.0761001136283793020170516533001831792261,\n        0.0571344254268572082836358264724479574912,\n        0.0571344254268572082836358264724479574912,\n        0.0369537897708524937999506682993296661889,\n        0.0369537897708524937999506682993296661889,\n        0.0160172282577743333242246168584710152658,\n        0.0160172282577743333242246168584710152658,\n    ],\n    [\n        0.1392518728556319933754102483418099578739,\n        0.1392518728556319933754102483418099578739,\n        0.1365414983460151713525738312315173965863,\n        0.1365414983460151713525738312315173965863,\n        0.1311735047870623707329649925303074458757,\n        0.1311735047870623707329649925303074458757,\n        0.1232523768105124242855609861548144719594,\n        0.1232523768105124242855609861548144719594,\n        0.1129322960805392183934006074217843191142,\n        0.1129322960805392183934006074217843191142,\n        0.1004141444428809649320788378305362823508,\n        0.1004141444428809649320788378305362823508,\n        0.0859416062170677274144436813727028661891,\n        0.0859416062170677274144436813727028661891,\n        0.0697964684245204880949614189302176573987,\n        0.0697964684245204880949614189302176573987,\n        0.0522933351526832859403120512732112561121,\n        0.0522933351526832859403120512732112561121,\n        0.0337749015848141547933022468659129013491,\n        0.0337749015848141547933022468659129013491,\n        0.0146279952982722006849910980471854451902,\n        0.0146279952982722006849910980471854451902,\n    ],\n    [\n        0.1336545721861061753514571105458443385831,\n        0.132462039404696617371642464703316925805,\n        0.132462039404696617371642464703316925805,\n        0.1289057221880821499785953393997936532597,\n        0.1289057221880821499785953393997936532597,\n        0.1230490843067295304675784006720096548158,\n        0.1230490843067295304675784006720096548158,\n        0.1149966402224113649416435129339613014914,\n        0.1149966402224113649416435129339613014914,\n        0.1048920914645414100740861850147438548584,\n        0.1048920914645414100740861850147438548584,\n        0.0929157660600351474770186173697646486034,\n        0.0929157660600351474770186173697646486034,\n        0.0792814117767189549228925247420432269137,\n        0.0792814117767189549228925247420432269137,\n        0.0642324214085258521271696151589109980391,\n        0.0642324214085258521271696151589109980391,\n        0.0480376717310846685716410716320339965612,\n        0.0480376717310846685716410716320339965612,\n        0.0309880058569794443106942196418845053837,\n        0.0309880058569794443106942196418845053837,\n        0.0134118594871417720813094934586150649766,\n        0.0134118594871417720813094934586150649766,\n    ],\n    [\n        0.1279381953467521569740561652246953718517,\n        0.1279381953467521569740561652246953718517,\n        0.1258374563468282961213753825111836887264,\n        0.1258374563468282961213753825111836887264,\n        0.121670472927803391204463153476262425607,\n        0.121670472927803391204463153476262425607,\n        0.1155056680537256013533444839067835598622,\n        0.1155056680537256013533444839067835598622,\n        0.1074442701159656347825773424466062227946,\n        0.1074442701159656347825773424466062227946,\n        0.0976186521041138882698806644642471544279,\n        0.0976186521041138882698806644642471544279,\n        0.086190161531953275917185202983742667185,\n        0.086190161531953275917185202983742667185,\n        0.0733464814110803057340336152531165181193,\n        0.0733464814110803057340336152531165181193,\n        0.0592985849154367807463677585001085845412,\n        0.0592985849154367807463677585001085845412,\n        0.0442774388174198061686027482113382288593,\n        0.0442774388174198061686027482113382288593,\n        0.0285313886289336631813078159518782864491,\n        0.0285313886289336631813078159518782864491,\n        0.0123412297999871995468056670700372915759,\n        0.0123412297999871995468056670700372915759,\n    ],\n];\nexport const binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nexport const getCubicArcLength = (xs, ys, t) => {\n    let sum;\n    let correctedT;\n    const n = 20;\n    const z = t / 2;\n    sum = 0;\n    for (let i = 0; i < n; i++) {\n        correctedT = z * tValues[n][i] + z;\n        sum += cValues[n][i] * BFunc(xs, ys, correctedT);\n    }\n    return z * sum;\n};\nexport const getQuadraticArcLength = (xs, ys, t) => {\n    if (t === undefined) {\n        t = 1;\n    }\n    const ax = xs[0] - 2 * xs[1] + xs[2];\n    const ay = ys[0] - 2 * ys[1] + ys[2];\n    const bx = 2 * xs[1] - 2 * xs[0];\n    const by = 2 * ys[1] - 2 * ys[0];\n    const A = 4 * (ax * ax + ay * ay);\n    const B = 4 * (ax * bx + ay * by);\n    const C = bx * bx + by * by;\n    if (A === 0) {\n        return (t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2)));\n    }\n    const b = B / (2 * A);\n    const c = C / A;\n    const u = t + b;\n    const k = c - b * b;\n    const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;\n    const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;\n    const term = b + Math.sqrt(b * b + k) !== 0\n        ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))\n        : 0;\n    return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);\n};\nfunction BFunc(xs, ys, t) {\n    const xbase = getDerivative(1, t, xs);\n    const ybase = getDerivative(1, t, ys);\n    const combined = xbase * xbase + ybase * ybase;\n    return Math.sqrt(combined);\n}\nconst getDerivative = (derivative, t, vs) => {\n    const n = vs.length - 1;\n    let _vs;\n    let value;\n    if (n === 0) {\n        return 0;\n    }\n    if (derivative === 0) {\n        value = 0;\n        for (let k = 0; k <= n; k++) {\n            value +=\n                binomialCoefficients[n][k] *\n                    Math.pow(1 - t, n - k) *\n                    Math.pow(t, k) *\n                    vs[k];\n        }\n        return value;\n    }\n    else {\n        _vs = new Array(n);\n        for (let k = 0; k < n; k++) {\n            _vs[k] = n * (vs[k + 1] - vs[k]);\n        }\n        return getDerivative(derivative - 1, t, _vs);\n    }\n};\nexport const t2length = (length, totalLength, func) => {\n    let error = 1;\n    let t = length / totalLength;\n    let step = (length - func(t)) / totalLength;\n    let numIterations = 0;\n    while (error > 0.001) {\n        const increasedTLength = func(t + step);\n        const increasedTError = Math.abs(length - increasedTLength) / totalLength;\n        if (increasedTError < error) {\n            error = increasedTError;\n            t += step;\n        }\n        else {\n            const decreasedTLength = func(t - step);\n            const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;\n            if (decreasedTError < error) {\n                error = decreasedTError;\n                t -= step;\n            }\n            else {\n                step /= 2;\n            }\n        }\n        numIterations++;\n        if (numIterations > 500) {\n            break;\n        }\n    }\n    return t;\n};\n", "import { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getCubicArcLength, getQuadraticArcLength, t2length, } from \"../BezierFunctions.js\";\nexport class Path extends Shape {\n    constructor(config) {\n        super(config);\n        this.dataArray = [];\n        this.pathLength = 0;\n        this._readDataAttribute();\n        this.on('dataChange.konva', function () {\n            this._readDataAttribute();\n        });\n    }\n    _readDataAttribute() {\n        this.dataArray = Path.parsePathData(this.data());\n        this.pathLength = Path.getPathLength(this.dataArray);\n    }\n    _sceneFunc(context) {\n        const ca = this.dataArray;\n        context.beginPath();\n        let isClosed = false;\n        for (let n = 0; n < ca.length; n++) {\n            const c = ca[n].command;\n            const p = ca[n].points;\n            switch (c) {\n                case 'L':\n                    context.lineTo(p[0], p[1]);\n                    break;\n                case 'M':\n                    context.moveTo(p[0], p[1]);\n                    break;\n                case 'C':\n                    context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n                    break;\n                case 'Q':\n                    context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n                    break;\n                case 'A':\n                    const cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n                    const r = rx > ry ? rx : ry;\n                    const scaleX = rx > ry ? 1 : rx / ry;\n                    const scaleY = rx > ry ? ry / rx : 1;\n                    context.translate(cx, cy);\n                    context.rotate(psi);\n                    context.scale(scaleX, scaleY);\n                    context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n                    context.scale(1 / scaleX, 1 / scaleY);\n                    context.rotate(-psi);\n                    context.translate(-cx, -cy);\n                    break;\n                case 'z':\n                    isClosed = true;\n                    context.closePath();\n                    break;\n            }\n        }\n        if (!isClosed && !this.hasFill()) {\n            context.strokeShape(this);\n        }\n        else {\n            context.fillStrokeShape(this);\n        }\n    }\n    getSelfRect() {\n        let points = [];\n        this.dataArray.forEach(function (data) {\n            if (data.command === 'A') {\n                const start = data.points[4];\n                const dTheta = data.points[5];\n                const end = data.points[4] + dTheta;\n                let inc = Math.PI / 180.0;\n                if (Math.abs(start - end) < inc) {\n                    inc = Math.abs(start - end);\n                }\n                if (dTheta < 0) {\n                    for (let t = start - inc; t > end; t -= inc) {\n                        const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n                        points.push(point.x, point.y);\n                    }\n                }\n                else {\n                    for (let t = start + inc; t < end; t += inc) {\n                        const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n                        points.push(point.x, point.y);\n                    }\n                }\n            }\n            else if (data.command === 'C') {\n                for (let t = 0.0; t <= 1; t += 0.01) {\n                    const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n                    points.push(point.x, point.y);\n                }\n            }\n            else {\n                points = points.concat(data.points);\n            }\n        });\n        let minX = points[0];\n        let maxX = points[0];\n        let minY = points[1];\n        let maxY = points[1];\n        let x, y;\n        for (let i = 0; i < points.length / 2; i++) {\n            x = points[i * 2];\n            y = points[i * 2 + 1];\n            if (!isNaN(x)) {\n                minX = Math.min(minX, x);\n                maxX = Math.max(maxX, x);\n            }\n            if (!isNaN(y)) {\n                minY = Math.min(minY, y);\n                maxY = Math.max(maxY, y);\n            }\n        }\n        return {\n            x: minX,\n            y: minY,\n            width: maxX - minX,\n            height: maxY - minY,\n        };\n    }\n    getLength() {\n        return this.pathLength;\n    }\n    getPointAtLength(length) {\n        return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n    }\n    static getLineLength(x1, y1, x2, y2) {\n        return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n    }\n    static getPathLength(dataArray) {\n        let pathLength = 0;\n        for (let i = 0; i < dataArray.length; ++i) {\n            pathLength += dataArray[i].pathLength;\n        }\n        return pathLength;\n    }\n    static getPointAtLengthOfDataArray(length, dataArray) {\n        let points, i = 0, ii = dataArray.length;\n        if (!ii) {\n            return null;\n        }\n        while (i < ii && length > dataArray[i].pathLength) {\n            length -= dataArray[i].pathLength;\n            ++i;\n        }\n        if (i === ii) {\n            points = dataArray[i - 1].points.slice(-2);\n            return {\n                x: points[0],\n                y: points[1],\n            };\n        }\n        if (length < 0.01) {\n            const cmd = dataArray[i].command;\n            if (cmd === 'M') {\n                points = dataArray[i].points.slice(0, 2);\n                return {\n                    x: points[0],\n                    y: points[1],\n                };\n            }\n            else {\n                return {\n                    x: dataArray[i].start.x,\n                    y: dataArray[i].start.y,\n                };\n            }\n        }\n        const cp = dataArray[i];\n        const p = cp.points;\n        switch (cp.command) {\n            case 'L':\n                return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n            case 'C':\n                return Path.getPointOnCubicBezier(t2length(length, Path.getPathLength(dataArray), (i) => {\n                    return getCubicArcLength([cp.start.x, p[0], p[2], p[4]], [cp.start.y, p[1], p[3], p[5]], i);\n                }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n            case 'Q':\n                return Path.getPointOnQuadraticBezier(t2length(length, Path.getPathLength(dataArray), (i) => {\n                    return getQuadraticArcLength([cp.start.x, p[0], p[2]], [cp.start.y, p[1], p[3]], i);\n                }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n            case 'A':\n                const cx = p[0], cy = p[1], rx = p[2], ry = p[3], dTheta = p[5], psi = p[6];\n                let theta = p[4];\n                theta += (dTheta * length) / cp.pathLength;\n                return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n        }\n        return null;\n    }\n    static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n        fromX = fromX !== null && fromX !== void 0 ? fromX : P1x;\n        fromY = fromY !== null && fromY !== void 0 ? fromY : P1y;\n        const len = this.getLineLength(P1x, P1y, P2x, P2y);\n        if (len < 1e-10) {\n            return { x: P1x, y: P1y };\n        }\n        if (P2x === P1x) {\n            return { x: fromX, y: fromY + (P2y > P1y ? dist : -dist) };\n        }\n        const m = (P2y - P1y) / (P2x - P1x);\n        const run = Math.sqrt((dist * dist) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n        const rise = m * run;\n        if (Math.abs(fromY - P1y - m * (fromX - P1x)) < 1e-10) {\n            return { x: fromX + run, y: fromY + rise };\n        }\n        const u = ((fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y)) / (len * len);\n        const ix = P1x + u * (P2x - P1x);\n        const iy = P1y + u * (P2y - P1y);\n        const pRise = this.getLineLength(fromX, fromY, ix, iy);\n        const pRun = Math.sqrt(dist * dist - pRise * pRise);\n        const adjustedRun = Math.sqrt((pRun * pRun) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n        const adjustedRise = m * adjustedRun;\n        return { x: ix + adjustedRun, y: iy + adjustedRise };\n    }\n    static getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n        function CB1(t) {\n            return t * t * t;\n        }\n        function CB2(t) {\n            return 3 * t * t * (1 - t);\n        }\n        function CB3(t) {\n            return 3 * t * (1 - t) * (1 - t);\n        }\n        function CB4(t) {\n            return (1 - t) * (1 - t) * (1 - t);\n        }\n        const x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n        const y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n        return { x, y };\n    }\n    static getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n        function QB1(t) {\n            return t * t;\n        }\n        function QB2(t) {\n            return 2 * t * (1 - t);\n        }\n        function QB3(t) {\n            return (1 - t) * (1 - t);\n        }\n        const x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n        const y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n        return { x, y };\n    }\n    static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n        const cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n        const pt = {\n            x: rx * Math.cos(theta),\n            y: ry * Math.sin(theta),\n        };\n        return {\n            x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n            y: cy + (pt.x * sinPsi + pt.y * cosPsi),\n        };\n    }\n    static parsePathData(data) {\n        if (!data) {\n            return [];\n        }\n        let cs = data;\n        const cc = [\n            'm',\n            'M',\n            'l',\n            'L',\n            'v',\n            'V',\n            'h',\n            'H',\n            'z',\n            'Z',\n            'c',\n            'C',\n            'q',\n            'Q',\n            't',\n            'T',\n            's',\n            'S',\n            'a',\n            'A',\n        ];\n        cs = cs.replace(new RegExp(' ', 'g'), ',');\n        for (let n = 0; n < cc.length; n++) {\n            cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n        }\n        const arr = cs.split('|');\n        const ca = [];\n        const coords = [];\n        let cpx = 0;\n        let cpy = 0;\n        const re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n        let match;\n        for (let n = 1; n < arr.length; n++) {\n            let str = arr[n];\n            let c = str.charAt(0);\n            str = str.slice(1);\n            coords.length = 0;\n            while ((match = re.exec(str))) {\n                coords.push(match[0]);\n            }\n            let p = [];\n            let arcParamIndex = c === 'A' || c === 'a' ? 0 : -1;\n            for (let j = 0, jlen = coords.length; j < jlen; j++) {\n                const token = coords[j];\n                if (token === '00') {\n                    p.push(0, 0);\n                    if (arcParamIndex >= 0) {\n                        arcParamIndex += 2;\n                        if (arcParamIndex >= 7)\n                            arcParamIndex -= 7;\n                    }\n                    continue;\n                }\n                if (arcParamIndex >= 0) {\n                    if (arcParamIndex === 3) {\n                        if (/^[01]{2}\\d+(?:\\.\\d+)?$/.test(token)) {\n                            p.push(parseInt(token[0], 10));\n                            p.push(parseInt(token[1], 10));\n                            p.push(parseFloat(token.slice(2)));\n                            arcParamIndex += 3;\n                            if (arcParamIndex >= 7)\n                                arcParamIndex -= 7;\n                            continue;\n                        }\n                        if (token === '11' || token === '10' || token === '01') {\n                            p.push(parseInt(token[0], 10));\n                            p.push(parseInt(token[1], 10));\n                            arcParamIndex += 2;\n                            if (arcParamIndex >= 7)\n                                arcParamIndex -= 7;\n                            continue;\n                        }\n                        if (token === '0' || token === '1') {\n                            p.push(parseInt(token, 10));\n                            arcParamIndex += 1;\n                            if (arcParamIndex >= 7)\n                                arcParamIndex -= 7;\n                            continue;\n                        }\n                    }\n                    else if (arcParamIndex === 4) {\n                        if (/^[01]\\d+(?:\\.\\d+)?$/.test(token)) {\n                            p.push(parseInt(token[0], 10));\n                            p.push(parseFloat(token.slice(1)));\n                            arcParamIndex += 2;\n                            if (arcParamIndex >= 7)\n                                arcParamIndex -= 7;\n                            continue;\n                        }\n                        if (token === '0' || token === '1') {\n                            p.push(parseInt(token, 10));\n                            arcParamIndex += 1;\n                            if (arcParamIndex >= 7)\n                                arcParamIndex -= 7;\n                            continue;\n                        }\n                    }\n                    const parsedArc = parseFloat(token);\n                    if (!isNaN(parsedArc)) {\n                        p.push(parsedArc);\n                    }\n                    else {\n                        p.push(0);\n                    }\n                    arcParamIndex += 1;\n                    if (arcParamIndex >= 7)\n                        arcParamIndex -= 7;\n                }\n                else {\n                    const parsed = parseFloat(token);\n                    if (!isNaN(parsed)) {\n                        p.push(parsed);\n                    }\n                    else {\n                        p.push(0);\n                    }\n                }\n            }\n            while (p.length > 0) {\n                if (isNaN(p[0])) {\n                    break;\n                }\n                let cmd = '';\n                let points = [];\n                const startX = cpx, startY = cpy;\n                let prevCmd, ctlPtx, ctlPty;\n                let rx, ry, psi, fa, fs, x1, y1;\n                switch (c) {\n                    case 'l':\n                        cpx += p.shift();\n                        cpy += p.shift();\n                        cmd = 'L';\n                        points.push(cpx, cpy);\n                        break;\n                    case 'L':\n                        cpx = p.shift();\n                        cpy = p.shift();\n                        points.push(cpx, cpy);\n                        break;\n                    case 'm':\n                        const dx = p.shift();\n                        const dy = p.shift();\n                        cpx += dx;\n                        cpy += dy;\n                        cmd = 'M';\n                        if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n                            for (let idx = ca.length - 2; idx >= 0; idx--) {\n                                if (ca[idx].command === 'M') {\n                                    cpx = ca[idx].points[0] + dx;\n                                    cpy = ca[idx].points[1] + dy;\n                                    break;\n                                }\n                            }\n                        }\n                        points.push(cpx, cpy);\n                        c = 'l';\n                        break;\n                    case 'M':\n                        cpx = p.shift();\n                        cpy = p.shift();\n                        cmd = 'M';\n                        points.push(cpx, cpy);\n                        c = 'L';\n                        break;\n                    case 'h':\n                        cpx += p.shift();\n                        cmd = 'L';\n                        points.push(cpx, cpy);\n                        break;\n                    case 'H':\n                        cpx = p.shift();\n                        cmd = 'L';\n                        points.push(cpx, cpy);\n                        break;\n                    case 'v':\n                        cpy += p.shift();\n                        cmd = 'L';\n                        points.push(cpx, cpy);\n                        break;\n                    case 'V':\n                        cpy = p.shift();\n                        cmd = 'L';\n                        points.push(cpx, cpy);\n                        break;\n                    case 'C':\n                        points.push(p.shift(), p.shift(), p.shift(), p.shift());\n                        cpx = p.shift();\n                        cpy = p.shift();\n                        points.push(cpx, cpy);\n                        break;\n                    case 'c':\n                        points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n                        cpx += p.shift();\n                        cpy += p.shift();\n                        cmd = 'C';\n                        points.push(cpx, cpy);\n                        break;\n                    case 'S':\n                        ctlPtx = cpx;\n                        ctlPty = cpy;\n                        prevCmd = ca[ca.length - 1];\n                        if (prevCmd.command === 'C') {\n                            ctlPtx = cpx + (cpx - prevCmd.points[2]);\n                            ctlPty = cpy + (cpy - prevCmd.points[3]);\n                        }\n                        points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n                        cpx = p.shift();\n                        cpy = p.shift();\n                        cmd = 'C';\n                        points.push(cpx, cpy);\n                        break;\n                    case 's':\n                        ctlPtx = cpx;\n                        ctlPty = cpy;\n                        prevCmd = ca[ca.length - 1];\n                        if (prevCmd.command === 'C') {\n                            ctlPtx = cpx + (cpx - prevCmd.points[2]);\n                            ctlPty = cpy + (cpy - prevCmd.points[3]);\n                        }\n                        points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n                        cpx += p.shift();\n                        cpy += p.shift();\n                        cmd = 'C';\n                        points.push(cpx, cpy);\n                        break;\n                    case 'Q':\n                        points.push(p.shift(), p.shift());\n                        cpx = p.shift();\n                        cpy = p.shift();\n                        points.push(cpx, cpy);\n                        break;\n                    case 'q':\n                        points.push(cpx + p.shift(), cpy + p.shift());\n                        cpx += p.shift();\n                        cpy += p.shift();\n                        cmd = 'Q';\n                        points.push(cpx, cpy);\n                        break;\n                    case 'T':\n                        ctlPtx = cpx;\n                        ctlPty = cpy;\n                        prevCmd = ca[ca.length - 1];\n                        if (prevCmd.command === 'Q') {\n                            ctlPtx = cpx + (cpx - prevCmd.points[0]);\n                            ctlPty = cpy + (cpy - prevCmd.points[1]);\n                        }\n                        cpx = p.shift();\n                        cpy = p.shift();\n                        cmd = 'Q';\n                        points.push(ctlPtx, ctlPty, cpx, cpy);\n                        break;\n                    case 't':\n                        ctlPtx = cpx;\n                        ctlPty = cpy;\n                        prevCmd = ca[ca.length - 1];\n                        if (prevCmd.command === 'Q') {\n                            ctlPtx = cpx + (cpx - prevCmd.points[0]);\n                            ctlPty = cpy + (cpy - prevCmd.points[1]);\n                        }\n                        cpx += p.shift();\n                        cpy += p.shift();\n                        cmd = 'Q';\n                        points.push(ctlPtx, ctlPty, cpx, cpy);\n                        break;\n                    case 'A':\n                        rx = p.shift();\n                        ry = p.shift();\n                        psi = p.shift();\n                        fa = p.shift();\n                        fs = p.shift();\n                        x1 = cpx;\n                        y1 = cpy;\n                        cpx = p.shift();\n                        cpy = p.shift();\n                        cmd = 'A';\n                        points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n                        break;\n                    case 'a':\n                        rx = p.shift();\n                        ry = p.shift();\n                        psi = p.shift();\n                        fa = p.shift();\n                        fs = p.shift();\n                        x1 = cpx;\n                        y1 = cpy;\n                        cpx += p.shift();\n                        cpy += p.shift();\n                        cmd = 'A';\n                        points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n                        break;\n                }\n                ca.push({\n                    command: cmd || c,\n                    points: points,\n                    start: {\n                        x: startX,\n                        y: startY,\n                    },\n                    pathLength: this.calcLength(startX, startY, cmd || c, points),\n                });\n            }\n            if (c === 'z' || c === 'Z') {\n                ca.push({\n                    command: 'z',\n                    points: [],\n                    start: undefined,\n                    pathLength: 0,\n                });\n            }\n        }\n        return ca;\n    }\n    static calcLength(x, y, cmd, points) {\n        let len, p1, p2, t;\n        const path = Path;\n        switch (cmd) {\n            case 'L':\n                return path.getLineLength(x, y, points[0], points[1]);\n            case 'C':\n                return getCubicArcLength([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n            case 'Q':\n                return getQuadraticArcLength([x, points[0], points[2]], [y, points[1], points[3]], 1);\n            case 'A':\n                len = 0.0;\n                const start = points[4];\n                const dTheta = points[5];\n                const end = points[4] + dTheta;\n                let inc = Math.PI / 180.0;\n                if (Math.abs(start - end) < inc) {\n                    inc = Math.abs(start - end);\n                }\n                p1 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n                if (dTheta < 0) {\n                    for (t = start - inc; t > end; t -= inc) {\n                        p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n                        len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n                        p1 = p2;\n                    }\n                }\n                else {\n                    for (t = start + inc; t < end; t += inc) {\n                        p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n                        len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n                        p1 = p2;\n                    }\n                }\n                p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n                len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n                return len;\n        }\n        return 0;\n    }\n    static convertEndpointToCenterParameterization(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n        const psi = psiDeg * (Math.PI / 180.0);\n        const xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n        const yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n            (Math.cos(psi) * (y1 - y2)) / 2.0;\n        const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n        if (lambda > 1) {\n            rx *= Math.sqrt(lambda);\n            ry *= Math.sqrt(lambda);\n        }\n        let f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n            (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n        if (fa === fs) {\n            f *= -1;\n        }\n        if (isNaN(f)) {\n            f = 0;\n        }\n        const cxp = (f * rx * yp) / ry;\n        const cyp = (f * -ry * xp) / rx;\n        const cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n        const cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n        const vMag = function (v) {\n            return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n        };\n        const vRatio = function (u, v) {\n            return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n        };\n        const vAngle = function (u, v) {\n            return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n        };\n        const theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n        const u = [(xp - cxp) / rx, (yp - cyp) / ry];\n        const v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n        let dTheta = vAngle(u, v);\n        if (vRatio(u, v) <= -1) {\n            dTheta = Math.PI;\n        }\n        if (vRatio(u, v) >= 1) {\n            dTheta = 0;\n        }\n        if (fs === 0 && dTheta > 0) {\n            dTheta = dTheta - 2 * Math.PI;\n        }\n        if (fs === 1 && dTheta < 0) {\n            dTheta = dTheta + 2 * Math.PI;\n        }\n        return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n    }\n}\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n_registerNode(Path);\nFactory.addGetterSetter(Path, 'data');\n", "import { Factory } from \"../Factory.js\";\nimport { Line } from \"./Line.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Path } from \"./Path.js\";\nexport class Arrow extends Line {\n    _sceneFunc(ctx) {\n        super._sceneFunc(ctx);\n        const PI2 = Math.PI * 2;\n        const points = this.points();\n        let tp = points;\n        const fromTension = this.tension() !== 0 && points.length > 4;\n        if (fromTension) {\n            tp = this.getTensionPoints();\n        }\n        const length = this.pointerLength();\n        const n = points.length;\n        let dx, dy;\n        if (fromTension) {\n            const lp = [\n                tp[tp.length - 4],\n                tp[tp.length - 3],\n                tp[tp.length - 2],\n                tp[tp.length - 1],\n                points[n - 2],\n                points[n - 1],\n            ];\n            const lastLength = Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n            const previous = Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);\n            dx = points[n - 2] - previous.x;\n            dy = points[n - 1] - previous.y;\n        }\n        else {\n            dx = points[n - 2] - points[n - 4];\n            dy = points[n - 1] - points[n - 3];\n        }\n        const radians = (Math.atan2(dy, dx) + PI2) % PI2;\n        const width = this.pointerWidth();\n        if (this.pointerAtEnding()) {\n            ctx.save();\n            ctx.beginPath();\n            ctx.translate(points[n - 2], points[n - 1]);\n            ctx.rotate(radians);\n            ctx.moveTo(0, 0);\n            ctx.lineTo(-length, width / 2);\n            ctx.lineTo(-length, -width / 2);\n            ctx.closePath();\n            ctx.restore();\n            this.__fillStroke(ctx);\n        }\n        if (this.pointerAtBeginning()) {\n            ctx.save();\n            ctx.beginPath();\n            ctx.translate(points[0], points[1]);\n            if (fromTension) {\n                dx = (tp[0] + tp[2]) / 2 - points[0];\n                dy = (tp[1] + tp[3]) / 2 - points[1];\n            }\n            else {\n                dx = points[2] - points[0];\n                dy = points[3] - points[1];\n            }\n            ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n            ctx.moveTo(0, 0);\n            ctx.lineTo(-length, width / 2);\n            ctx.lineTo(-length, -width / 2);\n            ctx.closePath();\n            ctx.restore();\n            this.__fillStroke(ctx);\n        }\n    }\n    __fillStroke(ctx) {\n        const isDashEnabled = this.dashEnabled();\n        if (isDashEnabled) {\n            this.attrs.dashEnabled = false;\n            ctx.setLineDash([]);\n        }\n        ctx.fillStrokeShape(this);\n        if (isDashEnabled) {\n            this.attrs.dashEnabled = true;\n        }\n    }\n    getSelfRect() {\n        const lineRect = super.getSelfRect();\n        const offset = this.pointerWidth() / 2;\n        return {\n            x: lineRect.x,\n            y: lineRect.y - offset,\n            width: lineRect.width,\n            height: lineRect.height + offset * 2,\n        };\n    }\n}\nArrow.prototype.className = 'Arrow';\n_registerNode(Arrow);\nFactory.addGetterSetter(Arrow, 'pointerLength', 10, getNumberValidator());\nFactory.addGetterSetter(Arrow, 'pointerWidth', 10, getNumberValidator());\nFactory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n", "import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Circle extends Shape {\n    _sceneFunc(context) {\n        context.beginPath();\n        context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        return this.radius() * 2;\n    }\n    getHeight() {\n        return this.radius() * 2;\n    }\n    setWidth(width) {\n        if (this.radius() !== width / 2) {\n            this.radius(width / 2);\n        }\n    }\n    setHeight(height) {\n        if (this.radius() !== height / 2) {\n            this.radius(height / 2);\n        }\n    }\n}\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n_registerNode(Circle);\nFactory.addGetterSetter(Circle, 'radius', 0, getNumberValidator());\n", "import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Ellipse extends Shape {\n    _sceneFunc(context) {\n        const rx = this.radiusX(), ry = this.radiusY();\n        context.beginPath();\n        context.save();\n        if (rx !== ry) {\n            context.scale(1, ry / rx);\n        }\n        context.arc(0, 0, rx, 0, Math.PI * 2, false);\n        context.restore();\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        return this.radiusX() * 2;\n    }\n    getHeight() {\n        return this.radiusY() * 2;\n    }\n    setWidth(width) {\n        this.radiusX(width / 2);\n    }\n    setHeight(height) {\n        this.radiusY(height / 2);\n    }\n}\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n_registerNode(Ellipse);\nFactory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory.addGetterSetter(Ellipse, 'radiusX', 0, getNumberValidator());\nFactory.addGetterSetter(Ellipse, 'radiusY', 0, getNumberValidator());\n", "import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nexport class Image extends Shape {\n    constructor(attrs) {\n        super(attrs);\n        this._loadListener = () => {\n            this._requestDraw();\n        };\n        this.on('imageChange.konva', (props) => {\n            this._removeImageLoad(props.oldVal);\n            this._setImageLoad();\n        });\n        this._setImageLoad();\n    }\n    _setImageLoad() {\n        const image = this.image();\n        if (image && image.complete) {\n            return;\n        }\n        if (image && image.readyState === 4) {\n            return;\n        }\n        if (image && image['addEventListener']) {\n            image['addEventListener']('load', this._loadListener);\n        }\n    }\n    _removeImageLoad(image) {\n        if (image && image['removeEventListener']) {\n            image['removeEventListener']('load', this._loadListener);\n        }\n    }\n    destroy() {\n        this._removeImageLoad(this.image());\n        super.destroy();\n        return this;\n    }\n    _useBufferCanvas() {\n        const hasCornerRadius = !!this.cornerRadius();\n        const hasShadow = this.hasShadow();\n        if (hasCornerRadius && hasShadow) {\n            return true;\n        }\n        return super._useBufferCanvas(true);\n    }\n    _sceneFunc(context) {\n        const width = this.getWidth();\n        const height = this.getHeight();\n        const cornerRadius = this.cornerRadius();\n        const image = this.attrs.image;\n        let params;\n        if (image) {\n            const cropWidth = this.attrs.cropWidth;\n            const cropHeight = this.attrs.cropHeight;\n            if (cropWidth && cropHeight) {\n                params = [\n                    image,\n                    this.cropX(),\n                    this.cropY(),\n                    cropWidth,\n                    cropHeight,\n                    0,\n                    0,\n                    width,\n                    height,\n                ];\n            }\n            else {\n                params = [image, 0, 0, width, height];\n            }\n        }\n        if (this.hasFill() || this.hasStroke() || cornerRadius) {\n            context.beginPath();\n            cornerRadius\n                ? Util.drawRoundedRectPath(context, width, height, cornerRadius)\n                : context.rect(0, 0, width, height);\n            context.closePath();\n            context.fillStrokeShape(this);\n        }\n        if (image) {\n            if (cornerRadius) {\n                context.clip();\n            }\n            context.drawImage.apply(context, params);\n        }\n    }\n    _hitFunc(context) {\n        const width = this.width(), height = this.height(), cornerRadius = this.cornerRadius();\n        context.beginPath();\n        if (!cornerRadius) {\n            context.rect(0, 0, width, height);\n        }\n        else {\n            Util.drawRoundedRectPath(context, width, height, cornerRadius);\n        }\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        var _a, _b, _c;\n        return (_c = (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width) !== null && _c !== void 0 ? _c : 0;\n    }\n    getHeight() {\n        var _a, _b, _c;\n        return (_c = (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 0;\n    }\n    static fromURL(url, callback, onError = null) {\n        const img = Util.createImageElement();\n        img.onload = function () {\n            const image = new Image({\n                image: img,\n            });\n            callback(image);\n        };\n        img.onerror = onError;\n        img.crossOrigin = 'Anonymous';\n        img.src = url;\n    }\n}\nImage.prototype.className = 'Image';\nImage.prototype._attrsAffectingSize = ['image'];\n_registerNode(Image);\nFactory.addGetterSetter(Image, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\nFactory.addGetterSetter(Image, 'image');\nFactory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory.addGetterSetter(Image, 'cropX', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropY', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropWidth', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropHeight', 0, getNumberValidator());\n", "import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Group } from \"../Group.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst ATTR_CHANGE_LIST = [\n    'fontFamily',\n    'fontSize',\n    'fontStyle',\n    'padding',\n    'lineHeight',\n    'text',\n    'width',\n    'height',\n    'pointerDirection',\n    'pointerWidth',\n    'pointerHeight',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nexport class Label extends Group {\n    constructor(config) {\n        super(config);\n        this.on('add.konva', function (evt) {\n            this._addListeners(evt.child);\n            this._sync();\n        });\n    }\n    getText() {\n        return this.find('Text')[0];\n    }\n    getTag() {\n        return this.find('Tag')[0];\n    }\n    _addListeners(text) {\n        let that = this, n;\n        const func = function () {\n            that._sync();\n        };\n        for (n = 0; n < attrChangeListLen; n++) {\n            text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n        }\n    }\n    getWidth() {\n        return this.getText().width();\n    }\n    getHeight() {\n        return this.getText().height();\n    }\n    _sync() {\n        let text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n        if (text && tag) {\n            width = text.width();\n            height = text.height();\n            pointerDirection = tag.pointerDirection();\n            pointerWidth = tag.pointerWidth();\n            pointerHeight = tag.pointerHeight();\n            x = 0;\n            y = 0;\n            switch (pointerDirection) {\n                case UP:\n                    x = width / 2;\n                    y = -1 * pointerHeight;\n                    break;\n                case RIGHT:\n                    x = width + pointerWidth;\n                    y = height / 2;\n                    break;\n                case DOWN:\n                    x = width / 2;\n                    y = height + pointerHeight;\n                    break;\n                case LEFT:\n                    x = -1 * pointerWidth;\n                    y = height / 2;\n                    break;\n            }\n            tag.setAttrs({\n                x: -1 * x,\n                y: -1 * y,\n                width: width,\n                height: height,\n            });\n            text.setAttrs({\n                x: -1 * x,\n                y: -1 * y,\n            });\n        }\n    }\n}\nLabel.prototype.className = 'Label';\n_registerNode(Label);\nexport class Tag extends Shape {\n    _sceneFunc(context) {\n        const width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n        let topLeft = 0;\n        let topRight = 0;\n        let bottomLeft = 0;\n        let bottomRight = 0;\n        if (typeof cornerRadius === 'number') {\n            topLeft =\n                topRight =\n                    bottomLeft =\n                        bottomRight =\n                            Math.min(cornerRadius, width / 2, height / 2);\n        }\n        else {\n            topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n            topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n            bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n            bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n        }\n        context.beginPath();\n        context.moveTo(topLeft, 0);\n        if (pointerDirection === UP) {\n            context.lineTo((width - pointerWidth) / 2, 0);\n            context.lineTo(width / 2, -1 * pointerHeight);\n            context.lineTo((width + pointerWidth) / 2, 0);\n        }\n        context.lineTo(width - topRight, 0);\n        context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n        if (pointerDirection === RIGHT) {\n            context.lineTo(width, (height - pointerHeight) / 2);\n            context.lineTo(width + pointerWidth, height / 2);\n            context.lineTo(width, (height + pointerHeight) / 2);\n        }\n        context.lineTo(width, height - bottomRight);\n        context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n        if (pointerDirection === DOWN) {\n            context.lineTo((width + pointerWidth) / 2, height);\n            context.lineTo(width / 2, height + pointerHeight);\n            context.lineTo((width - pointerWidth) / 2, height);\n        }\n        context.lineTo(bottomLeft, height);\n        context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n        if (pointerDirection === LEFT) {\n            context.lineTo(0, (height + pointerHeight) / 2);\n            context.lineTo(-1 * pointerWidth, height / 2);\n            context.lineTo(0, (height - pointerHeight) / 2);\n        }\n        context.lineTo(0, topLeft);\n        context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getSelfRect() {\n        let x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n        if (direction === UP) {\n            y -= pointerHeight;\n            height += pointerHeight;\n        }\n        else if (direction === DOWN) {\n            height += pointerHeight;\n        }\n        else if (direction === LEFT) {\n            x -= pointerWidth * 1.5;\n            width += pointerWidth;\n        }\n        else if (direction === RIGHT) {\n            width += pointerWidth * 1.5;\n        }\n        return {\n            x: x,\n            y: y,\n            width: width,\n            height: height,\n        };\n    }\n}\nTag.prototype.className = 'Tag';\n_registerNode(Tag);\nFactory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory.addGetterSetter(Tag, 'pointerWidth', 0, getNumberValidator());\nFactory.addGetterSetter(Tag, 'pointerHeight', 0, getNumberValidator());\nFactory.addGetterSetter(Tag, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n", "import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Util } from \"../Util.js\";\nimport { getNumberOrArrayOfNumbersValidator } from \"../Validators.js\";\nexport class Rect extends Shape {\n    _sceneFunc(context) {\n        const cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n        context.beginPath();\n        if (!cornerRadius) {\n            context.rect(0, 0, width, height);\n        }\n        else {\n            Util.drawRoundedRectPath(context, width, height, cornerRadius);\n        }\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n}\nRect.prototype.className = 'Rect';\n_registerNode(Rect);\nFactory.addGetterSetter(Rect, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n", "import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Util } from \"../Util.js\";\nexport class RegularPolygon extends Shape {\n    _sceneFunc(context) {\n        const points = this._getPoints(), radius = this.radius(), sides = this.sides(), cornerRadius = this.cornerRadius();\n        context.beginPath();\n        if (!cornerRadius) {\n            context.moveTo(points[0].x, points[0].y);\n            for (let n = 1; n < points.length; n++) {\n                context.lineTo(points[n].x, points[n].y);\n            }\n        }\n        else {\n            Util.drawRoundedPolygonPath(context, points, sides, radius, cornerRadius);\n        }\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    _getPoints() {\n        const sides = this.attrs.sides;\n        const radius = this.attrs.radius || 0;\n        const points = [];\n        for (let n = 0; n < sides; n++) {\n            points.push({\n                x: radius * Math.sin((n * 2 * Math.PI) / sides),\n                y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n            });\n        }\n        return points;\n    }\n    getSelfRect() {\n        const points = this._getPoints();\n        let minX = points[0].x;\n        let maxX = points[0].x;\n        let minY = points[0].y;\n        let maxY = points[0].y;\n        points.forEach((point) => {\n            minX = Math.min(minX, point.x);\n            maxX = Math.max(maxX, point.x);\n            minY = Math.min(minY, point.y);\n            maxY = Math.max(maxY, point.y);\n        });\n        return {\n            x: minX,\n            y: minY,\n            width: maxX - minX,\n            height: maxY - minY,\n        };\n    }\n    getWidth() {\n        return this.radius() * 2;\n    }\n    getHeight() {\n        return this.radius() * 2;\n    }\n    setWidth(width) {\n        this.radius(width / 2);\n    }\n    setHeight(height) {\n        this.radius(height / 2);\n    }\n}\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n_registerNode(RegularPolygon);\nFactory.addGetterSetter(RegularPolygon, 'radius', 0, getNumberValidator());\nFactory.addGetterSetter(RegularPolygon, 'sides', 0, getNumberValidator());\nFactory.addGetterSetter(RegularPolygon, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n", "import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst PIx2 = Math.PI * 2;\nexport class Ring extends Shape {\n    _sceneFunc(context) {\n        context.beginPath();\n        context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n        context.moveTo(this.outerRadius(), 0);\n        context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        return this.outerRadius() * 2;\n    }\n    getHeight() {\n        return this.outerRadius() * 2;\n    }\n    setWidth(width) {\n        this.outerRadius(width / 2);\n    }\n    setHeight(height) {\n        this.outerRadius(height / 2);\n    }\n}\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n_registerNode(Ring);\nFactory.addGetterSetter(Ring, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Ring, 'outerRadius', 0, getNumberValidator());\n", "import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Animation } from \"../Animation.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Sprite extends Shape {\n    constructor(config) {\n        super(config);\n        this._updated = true;\n        this.anim = new Animation(() => {\n            const updated = this._updated;\n            this._updated = false;\n            return updated;\n        });\n        this.on('animationChange.konva', function () {\n            this.frameIndex(0);\n        });\n        this.on('frameIndexChange.konva', function () {\n            this._updated = true;\n        });\n        this.on('frameRateChange.konva', function () {\n            if (!this.anim.isRunning()) {\n                return;\n            }\n            clearInterval(this.interval);\n            this._setInterval();\n        });\n    }\n    _sceneFunc(context) {\n        const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n        if (this.hasFill() || this.hasStroke()) {\n            context.beginPath();\n            context.rect(0, 0, width, height);\n            context.closePath();\n            context.fillStrokeShape(this);\n        }\n        if (image) {\n            if (offsets) {\n                const offset = offsets[anim], ix2 = index * 2;\n                context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n            }\n            else {\n                context.drawImage(image, x, y, width, height, 0, 0, width, height);\n            }\n        }\n    }\n    _hitFunc(context) {\n        const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n        context.beginPath();\n        if (offsets) {\n            const offset = offsets[anim];\n            const ix2 = index * 2;\n            context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n        }\n        else {\n            context.rect(0, 0, width, height);\n        }\n        context.closePath();\n        context.fillShape(this);\n    }\n    _useBufferCanvas() {\n        return super._useBufferCanvas(true);\n    }\n    _setInterval() {\n        const that = this;\n        this.interval = setInterval(function () {\n            that._updateIndex();\n        }, 1000 / this.frameRate());\n    }\n    start() {\n        if (this.isRunning()) {\n            return;\n        }\n        const layer = this.getLayer();\n        this.anim.setLayers(layer);\n        this._setInterval();\n        this.anim.start();\n    }\n    stop() {\n        this.anim.stop();\n        clearInterval(this.interval);\n    }\n    isRunning() {\n        return this.anim.isRunning();\n    }\n    _updateIndex() {\n        const index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n        if (index < len - 1) {\n            this.frameIndex(index + 1);\n        }\n        else {\n            this.frameIndex(0);\n        }\n    }\n}\nSprite.prototype.className = 'Sprite';\n_registerNode(Sprite);\nFactory.addGetterSetter(Sprite, 'animation');\nFactory.addGetterSetter(Sprite, 'animations');\nFactory.addGetterSetter(Sprite, 'frameOffsets');\nFactory.addGetterSetter(Sprite, 'image');\nFactory.addGetterSetter(Sprite, 'frameIndex', 0, getNumberValidator());\nFactory.addGetterSetter(Sprite, 'frameRate', 17, getNumberValidator());\nFactory.backCompat(Sprite, {\n    index: 'frameIndex',\n    getIndex: 'getFrameIndex',\n    setIndex: 'setFrameIndex',\n});\n", "import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Star extends Shape {\n    _sceneFunc(context) {\n        const innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n        context.beginPath();\n        context.moveTo(0, 0 - outerRadius);\n        for (let n = 1; n < numPoints * 2; n++) {\n            const radius = n % 2 === 0 ? outerRadius : innerRadius;\n            const x = radius * Math.sin((n * Math.PI) / numPoints);\n            const y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n            context.lineTo(x, y);\n        }\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        return this.outerRadius() * 2;\n    }\n    getHeight() {\n        return this.outerRadius() * 2;\n    }\n    setWidth(width) {\n        this.outerRadius(width / 2);\n    }\n    setHeight(height) {\n        this.outerRadius(height / 2);\n    }\n}\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n_registerNode(Star);\nFactory.addGetterSetter(Star, 'numPoints', 5, getNumberValidator());\nFactory.addGetterSetter(Star, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Star, 'outerRadius', 0, getNumberValidator());\n", "import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator, getStringValidator, getNumberOrAutoValidator, getBooleanValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport function stringToArray(string) {\n    return [...string].reduce((acc, char, index, array) => {\n        if (/\\p{Emoji}/u.test(char)) {\n            const nextChar = array[index + 1];\n            if (nextChar && /\\p{Emoji_Modifier}|\\u200D/u.test(nextChar)) {\n                acc.push(char + nextChar);\n                array[index + 1] = '';\n            }\n            else {\n                acc.push(char);\n            }\n        }\n        else if (/\\p{Regional_Indicator}{2}/u.test(char + (array[index + 1] || ''))) {\n            acc.push(char + array[index + 1]);\n        }\n        else if (index > 0 && /\\p{Mn}|\\p{Me}|\\p{Mc}/u.test(char)) {\n            acc[acc.length - 1] += char;\n        }\n        else if (char) {\n            acc.push(char);\n        }\n        return acc;\n    }, []);\n}\nconst AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '\u2026', ATTR_CHANGE_LIST = [\n    'direction',\n    'fontFamily',\n    'fontSize',\n    'fontStyle',\n    'fontVariant',\n    'padding',\n    'align',\n    'verticalAlign',\n    'lineHeight',\n    'text',\n    'width',\n    'height',\n    'wrap',\n    'ellipsis',\n    'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nlet _shadowOpacityBuggy = null;\nfunction hasShadowOpacityBug() {\n    if (_shadowOpacityBuggy !== null) {\n        return _shadowOpacityBuggy;\n    }\n    _shadowOpacityBuggy = false;\n    try {\n        const c = document.createElement('canvas');\n        c.width = 10;\n        c.height = 10;\n        const ctx = c.getContext(CONTEXT_2D);\n        if (ctx) {\n            ctx.globalAlpha = 0;\n            ctx.shadowColor = 'black';\n            ctx.shadowBlur = 5;\n            ctx.shadowOffsetX = 5;\n            ctx.shadowOffsetY = 5;\n            ctx.fillStyle = 'black';\n            ctx.font = '10px Arial';\n            ctx.fillText('X', 0, 10);\n            const data = ctx.getImageData(0, 0, 10, 10).data;\n            for (let i = 3; i < data.length; i += 4) {\n                if (data[i] > 0) {\n                    _shadowOpacityBuggy = true;\n                    break;\n                }\n            }\n        }\n    }\n    catch (e) {\n    }\n    return _shadowOpacityBuggy;\n}\nfunction normalizeFontFamily(fontFamily) {\n    return fontFamily\n        .split(',')\n        .map((family) => {\n        family = family.trim();\n        const hasSpace = family.indexOf(' ') >= 0;\n        const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n        if (hasSpace && !hasQuotes) {\n            family = `\"${family}\"`;\n        }\n        return family;\n    })\n        .join(', ');\n}\nlet dummyContext;\nfunction getDummyContext() {\n    if (dummyContext) {\n        return dummyContext;\n    }\n    dummyContext = Util.createCanvasElement().getContext(CONTEXT_2D);\n    return dummyContext;\n}\nfunction _fillFunc(context) {\n    context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n    context.setAttr('miterLimit', 2);\n    context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n    config = config || {};\n    if (!config.fillLinearGradientColorStops &&\n        !config.fillRadialGradientColorStops &&\n        !config.fillPatternImage) {\n        config.fill = config.fill || 'black';\n    }\n    return config;\n}\nexport class Text extends Shape {\n    constructor(config) {\n        super(checkDefaultFill(config));\n        this._partialTextX = 0;\n        this._partialTextY = 0;\n        for (let n = 0; n < attrChangeListLen; n++) {\n            this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, this._setTextData);\n        }\n        this._setTextData();\n    }\n    _sceneFunc(context) {\n        var _a, _b;\n        const textArr = this.textArr, textArrLen = textArr.length;\n        if (!this.text()) {\n            return;\n        }\n        let padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), direction = this.direction(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), charRenderFunc = this.charRenderFunc(), fill = this.fill(), textDecoration = this.textDecoration(), underlineOffset = this.underlineOffset(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n        direction = direction === INHERIT ? context.direction : direction;\n        let translateY = lineHeightPx / 2;\n        let baseline = MIDDLE;\n        if (!Konva.legacyTextRendering) {\n            const metrics = this.measureSize('M');\n            baseline = 'alphabetic';\n            const ascent = (_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.actualBoundingBoxAscent;\n            const descent = (_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.actualBoundingBoxDescent;\n            translateY = (ascent - descent) / 2 + lineHeightPx / 2;\n        }\n        if (direction === RTL) {\n            context.setAttr('direction', direction);\n        }\n        context.setAttr('font', this._getContextFont());\n        context.setAttr('textBaseline', baseline);\n        context.setAttr('textAlign', LEFT);\n        if (verticalAlign === MIDDLE) {\n            alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n        }\n        else if (verticalAlign === BOTTOM) {\n            alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n        }\n        context.translate(padding, alignY + padding);\n        for (n = 0; n < textArrLen; n++) {\n            let lineTranslateX = 0;\n            let lineTranslateY = 0;\n            const obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph;\n            context.save();\n            if (align === RIGHT) {\n                lineTranslateX += totalWidth - width - padding * 2;\n            }\n            else if (align === CENTER) {\n                lineTranslateX += (totalWidth - width - padding * 2) / 2;\n            }\n            if (shouldUnderline) {\n                context.save();\n                context.beginPath();\n                const yOffset = underlineOffset !== null && underlineOffset !== void 0 ? underlineOffset : (!Konva.legacyTextRendering\n                    ? Math.round(fontSize / 4)\n                    : Math.round(fontSize / 2));\n                const x = lineTranslateX;\n                const y = translateY + lineTranslateY + yOffset;\n                context.moveTo(x, y);\n                const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n                context.lineTo(x + Math.round(lineWidth), y);\n                context.lineWidth = fontSize / 15;\n                const gradient = this._getLinearGradient();\n                context.strokeStyle = gradient || fill;\n                context.stroke();\n                context.restore();\n            }\n            const lineThroughStartX = lineTranslateX;\n            if (direction !== RTL &&\n                (letterSpacing !== 0 || align === JUSTIFY || charRenderFunc)) {\n                const spacesNumber = text.split(' ').length - 1;\n                const array = stringToArray(text);\n                for (let li = 0; li < array.length; li++) {\n                    const letter = array[li];\n                    if (letter === ' ' && !lastLine && align === JUSTIFY) {\n                        lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n                    }\n                    this._partialTextX = lineTranslateX;\n                    this._partialTextY = translateY + lineTranslateY;\n                    this._partialText = letter;\n                    if (charRenderFunc) {\n                        context.save();\n                        const previousLines = textArr.slice(0, n);\n                        const previousGraphemes = previousLines.reduce((acc, line) => acc + stringToArray(line.text).length, 0);\n                        const charIndex = li + previousGraphemes;\n                        charRenderFunc({\n                            char: letter,\n                            index: charIndex,\n                            x: lineTranslateX,\n                            y: translateY + lineTranslateY,\n                            lineIndex: n,\n                            column: li,\n                            isLastInLine: lastLine,\n                            width: this.measureSize(letter).width,\n                            context,\n                        });\n                    }\n                    context.fillStrokeShape(this);\n                    if (charRenderFunc) {\n                        context.restore();\n                    }\n                    lineTranslateX += this.measureSize(letter).width + letterSpacing;\n                }\n            }\n            else {\n                if (letterSpacing !== 0) {\n                    context.setAttr('letterSpacing', `${letterSpacing}px`);\n                }\n                this._partialTextX = lineTranslateX;\n                this._partialTextY = translateY + lineTranslateY;\n                this._partialText = text;\n                context.fillStrokeShape(this);\n            }\n            if (shouldLineThrough) {\n                context.save();\n                context.beginPath();\n                const yOffset = !Konva.legacyTextRendering\n                    ? -Math.round(fontSize / 4)\n                    : 0;\n                const x = lineThroughStartX;\n                context.moveTo(x, translateY + lineTranslateY + yOffset);\n                const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n                context.lineTo(x + Math.round(lineWidth), translateY + lineTranslateY + yOffset);\n                context.lineWidth = fontSize / 15;\n                const gradient = this._getLinearGradient();\n                context.strokeStyle = gradient || fill;\n                context.stroke();\n                context.restore();\n            }\n            context.restore();\n            if (textArrLen > 1) {\n                translateY += lineHeightPx;\n            }\n        }\n    }\n    _hitFunc(context) {\n        const width = this.getWidth(), height = this.getHeight();\n        context.beginPath();\n        context.rect(0, 0, width, height);\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    setText(text) {\n        const str = Util._isString(text)\n            ? text\n            : text === null || text === undefined\n                ? ''\n                : text + '';\n        this._setAttr(TEXT, str);\n        return this;\n    }\n    getWidth() {\n        const isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n        return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n    }\n    getHeight() {\n        const isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n        return isAuto\n            ? this.fontSize() * this.textArr.length * this.lineHeight() +\n                this.padding() * 2\n            : this.attrs.height;\n    }\n    getTextWidth() {\n        return this.textWidth;\n    }\n    getTextHeight() {\n        Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n        return this.textHeight;\n    }\n    measureSize(text) {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n        let _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n        _context.save();\n        _context.font = this._getContextFont();\n        metrics = _context.measureText(text);\n        _context.restore();\n        const scaleFactor = fontSize / 100;\n        return {\n            actualBoundingBoxAscent: (_a = metrics.actualBoundingBoxAscent) !== null && _a !== void 0 ? _a : 71.58203125 * scaleFactor,\n            actualBoundingBoxDescent: (_b = metrics.actualBoundingBoxDescent) !== null && _b !== void 0 ? _b : 0,\n            actualBoundingBoxLeft: (_c = metrics.actualBoundingBoxLeft) !== null && _c !== void 0 ? _c : -7.421875 * scaleFactor,\n            actualBoundingBoxRight: (_d = metrics.actualBoundingBoxRight) !== null && _d !== void 0 ? _d : 75.732421875 * scaleFactor,\n            alphabeticBaseline: (_e = metrics.alphabeticBaseline) !== null && _e !== void 0 ? _e : 0,\n            emHeightAscent: (_f = metrics.emHeightAscent) !== null && _f !== void 0 ? _f : 100 * scaleFactor,\n            emHeightDescent: (_g = metrics.emHeightDescent) !== null && _g !== void 0 ? _g : -20 * scaleFactor,\n            fontBoundingBoxAscent: (_h = metrics.fontBoundingBoxAscent) !== null && _h !== void 0 ? _h : 91 * scaleFactor,\n            fontBoundingBoxDescent: (_j = metrics.fontBoundingBoxDescent) !== null && _j !== void 0 ? _j : 21 * scaleFactor,\n            hangingBaseline: (_k = metrics.hangingBaseline) !== null && _k !== void 0 ? _k : 72.80000305175781 * scaleFactor,\n            ideographicBaseline: (_l = metrics.ideographicBaseline) !== null && _l !== void 0 ? _l : -21 * scaleFactor,\n            width: metrics.width,\n            height: fontSize,\n        };\n    }\n    _getContextFont() {\n        return (this.fontStyle() +\n            SPACE +\n            this.fontVariant() +\n            SPACE +\n            (this.fontSize() + PX_SPACE) +\n            normalizeFontFamily(this.fontFamily()));\n    }\n    _addTextLine(line) {\n        const align = this.align();\n        if (align === JUSTIFY) {\n            line = line.trim();\n        }\n        const width = this._getTextWidth(line);\n        return this.textArr.push({\n            text: line,\n            width: width,\n            lastInParagraph: false,\n        });\n    }\n    _getTextWidth(text) {\n        const letterSpacing = this.letterSpacing();\n        const length = text.length;\n        return getDummyContext().measureText(text).width + letterSpacing * length;\n    }\n    _setTextData() {\n        let lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n        this.textArr = [];\n        getDummyContext().font = this._getContextFont();\n        const additionalWidth = shouldAddEllipsis\n            ? this._getTextWidth(ELLIPSIS)\n            : 0;\n        for (let i = 0, max = lines.length; i < max; ++i) {\n            let line = lines[i];\n            let lineWidth = this._getTextWidth(line);\n            if (fixedWidth && lineWidth > maxWidth) {\n                while (line.length > 0) {\n                    let low = 0, high = stringToArray(line).length, match = '', matchWidth = 0;\n                    while (low < high) {\n                        const mid = (low + high) >>> 1, lineArray = stringToArray(line), substr = lineArray.slice(0, mid + 1).join(''), substrWidth = this._getTextWidth(substr);\n                        const shouldConsiderEllipsis = shouldAddEllipsis &&\n                            fixedHeight &&\n                            currentHeightPx + lineHeightPx > maxHeightPx;\n                        const effectiveWidth = shouldConsiderEllipsis\n                            ? substrWidth + additionalWidth\n                            : substrWidth;\n                        if (effectiveWidth <= maxWidth) {\n                            low = mid + 1;\n                            match = substr;\n                            matchWidth = substrWidth;\n                        }\n                        else {\n                            high = mid;\n                        }\n                    }\n                    if (match) {\n                        if (wrapAtWord) {\n                            const lineArray = stringToArray(line);\n                            const matchArray = stringToArray(match);\n                            const nextChar = lineArray[matchArray.length];\n                            const nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n                            let wrapIndex;\n                            if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n                                wrapIndex = matchArray.length;\n                            }\n                            else {\n                                const lastSpaceIndex = matchArray.lastIndexOf(SPACE);\n                                const lastDashIndex = matchArray.lastIndexOf(DASH);\n                                wrapIndex = Math.max(lastSpaceIndex, lastDashIndex) + 1;\n                            }\n                            if (wrapIndex > 0) {\n                                low = wrapIndex;\n                                match = lineArray.slice(0, low).join('');\n                                matchWidth = this._getTextWidth(match);\n                            }\n                        }\n                        match = match.trimRight();\n                        this._addTextLine(match);\n                        textWidth = Math.max(textWidth, matchWidth);\n                        currentHeightPx += lineHeightPx;\n                        const shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n                        if (shouldHandleEllipsis) {\n                            this._tryToAddEllipsisToLastLine();\n                            break;\n                        }\n                        const lineArray = stringToArray(line);\n                        line = lineArray.slice(low).join('').trimLeft();\n                        if (line.length > 0) {\n                            lineWidth = this._getTextWidth(line);\n                            if (lineWidth <= maxWidth) {\n                                this._addTextLine(line);\n                                currentHeightPx += lineHeightPx;\n                                textWidth = Math.max(textWidth, lineWidth);\n                                break;\n                            }\n                        }\n                    }\n                    else {\n                        break;\n                    }\n                }\n            }\n            else {\n                this._addTextLine(line);\n                currentHeightPx += lineHeightPx;\n                textWidth = Math.max(textWidth, lineWidth);\n                if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n                    this._tryToAddEllipsisToLastLine();\n                }\n            }\n            if (this.textArr[this.textArr.length - 1]) {\n                this.textArr[this.textArr.length - 1].lastInParagraph = true;\n            }\n            if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n                break;\n            }\n        }\n        this.textHeight = fontSize;\n        this.textWidth = textWidth;\n    }\n    _shouldHandleEllipsis(currentHeightPx) {\n        const fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n        return (!shouldWrap ||\n            (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n    }\n    _tryToAddEllipsisToLastLine() {\n        const width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n        const lastLine = this.textArr[this.textArr.length - 1];\n        if (!lastLine || !shouldAddEllipsis) {\n            return;\n        }\n        if (fixedWidth) {\n            const haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n            if (!haveSpace) {\n                lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n            }\n        }\n        this.textArr.splice(this.textArr.length - 1, 1);\n        this._addTextLine(lastLine.text + ELLIPSIS);\n    }\n    getStrokeScaleEnabled() {\n        return true;\n    }\n    _useBufferCanvas() {\n        const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n            this.textDecoration().indexOf('line-through') !== -1;\n        const hasShadow = this.hasShadow();\n        if (hasLine && hasShadow) {\n            return true;\n        }\n        if (hasShadow && this.getAbsoluteOpacity() !== 1 && hasShadowOpacityBug()) {\n            return true;\n        }\n        return super._useBufferCanvas();\n    }\n}\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n    'text',\n    'fontSize',\n    'padding',\n    'wrap',\n    'lineHeight',\n    'letterSpacing',\n];\n_registerNode(Text);\nFactory.overWriteSetter(Text, 'width', getNumberOrAutoValidator());\nFactory.overWriteSetter(Text, 'height', getNumberOrAutoValidator());\nFactory.addGetterSetter(Text, 'direction', INHERIT);\nFactory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory.addGetterSetter(Text, 'fontSize', 12, getNumberValidator());\nFactory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory.addGetterSetter(Text, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Text, 'align', LEFT);\nFactory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory.addGetterSetter(Text, 'lineHeight', 1, getNumberValidator());\nFactory.addGetterSetter(Text, 'wrap', WORD);\nFactory.addGetterSetter(Text, 'ellipsis', false, getBooleanValidator());\nFactory.addGetterSetter(Text, 'letterSpacing', 0, getNumberValidator());\nFactory.addGetterSetter(Text, 'text', '', getStringValidator());\nFactory.addGetterSetter(Text, 'textDecoration', '');\nFactory.addGetterSetter(Text, 'underlineOffset', undefined, getNumberValidator());\nFactory.addGetterSetter(Text, 'charRenderFunc', undefined);\n", "import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Path } from \"./Path.js\";\nimport { Text, stringToArray } from \"./Text.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n    context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n    context.strokeText(this.partialText, 0, 0);\n}\nexport class TextPath extends Shape {\n    constructor(config) {\n        super(config);\n        this.dummyCanvas = Util.createCanvasElement();\n        this.dataArray = [];\n        this._readDataAttribute();\n        this.on('dataChange.konva', function () {\n            this._readDataAttribute();\n            this._setTextData();\n        });\n        this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva directionChange.konva', this._setTextData);\n        this._setTextData();\n    }\n    _getTextPathLength() {\n        return Path.getPathLength(this.dataArray);\n    }\n    _getPointAtLength(length) {\n        if (!this.attrs.data) {\n            return null;\n        }\n        const totalLength = this.pathLength;\n        if (length > totalLength) {\n            return null;\n        }\n        return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n    }\n    _readDataAttribute() {\n        this.dataArray = Path.parsePathData(this.attrs.data);\n        this.pathLength = this._getTextPathLength();\n    }\n    _sceneFunc(context) {\n        context.setAttr('font', this._getContextFont());\n        context.setAttr('textBaseline', this.textBaseline());\n        context.setAttr('textAlign', 'left');\n        context.save();\n        const textDecoration = this.textDecoration();\n        const fill = this.fill();\n        const fontSize = this.fontSize();\n        const glyphInfo = this.glyphInfo;\n        const hasUnderline = textDecoration.indexOf('underline') !== -1;\n        const hasLineThrough = textDecoration.indexOf('line-through') !== -1;\n        if (hasUnderline) {\n            context.beginPath();\n        }\n        for (let i = 0; i < glyphInfo.length; i++) {\n            context.save();\n            const p0 = glyphInfo[i].p0;\n            context.translate(p0.x, p0.y);\n            context.rotate(glyphInfo[i].rotation);\n            this.partialText = glyphInfo[i].text;\n            context.fillStrokeShape(this);\n            if (hasUnderline) {\n                if (i === 0) {\n                    context.moveTo(0, fontSize / 2 + 1);\n                }\n                context.lineTo(glyphInfo[i].width, fontSize / 2 + 1);\n            }\n            context.restore();\n        }\n        if (hasUnderline) {\n            context.strokeStyle = fill;\n            context.lineWidth = fontSize / 20;\n            context.stroke();\n        }\n        if (hasLineThrough) {\n            context.beginPath();\n            for (let i = 0; i < glyphInfo.length; i++) {\n                context.save();\n                const p0 = glyphInfo[i].p0;\n                context.translate(p0.x, p0.y);\n                context.rotate(glyphInfo[i].rotation);\n                if (i === 0) {\n                    context.moveTo(0, 0);\n                }\n                context.lineTo(glyphInfo[i].width, 0);\n                context.restore();\n            }\n            context.strokeStyle = fill;\n            context.lineWidth = fontSize / 20;\n            context.stroke();\n        }\n        context.restore();\n    }\n    _hitFunc(context) {\n        context.beginPath();\n        const glyphInfo = this.glyphInfo;\n        if (glyphInfo.length >= 1) {\n            const p0 = glyphInfo[0].p0;\n            context.moveTo(p0.x, p0.y);\n        }\n        for (let i = 0; i < glyphInfo.length; i++) {\n            const p1 = glyphInfo[i].p1;\n            context.lineTo(p1.x, p1.y);\n        }\n        context.setAttr('lineWidth', this.fontSize());\n        context.setAttr('strokeStyle', this.colorKey);\n        context.stroke();\n    }\n    getTextWidth() {\n        return this.textWidth;\n    }\n    getTextHeight() {\n        Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n        return this.textHeight;\n    }\n    setText(text) {\n        return Text.prototype.setText.call(this, text);\n    }\n    _getContextFont() {\n        return Text.prototype._getContextFont.call(this);\n    }\n    _getTextSize(text) {\n        const dummyCanvas = this.dummyCanvas;\n        const _context = dummyCanvas.getContext('2d');\n        _context.save();\n        _context.font = this._getContextFont();\n        const metrics = _context.measureText(text);\n        _context.restore();\n        return {\n            width: metrics.width,\n            height: parseInt(`${this.fontSize()}`, 10),\n        };\n    }\n    _setTextData() {\n        const charArr = stringToArray(this.text());\n        if (this.direction() === 'rtl') {\n            charArr.reverse();\n        }\n        const chars = [];\n        let width = 0;\n        for (let i = 0; i < charArr.length; i++) {\n            chars.push({\n                char: charArr[i],\n                width: this._getTextSize(charArr[i]).width,\n            });\n            width += chars[i].width;\n        }\n        const { width: fullTextWidth, height } = this._getTextSize(this.attrs.text);\n        this.textWidth = width;\n        this.textHeight = height;\n        this.glyphInfo = [];\n        if (!this.attrs.data) {\n            return null;\n        }\n        const letterSpacing = this.letterSpacing();\n        const align = this.align();\n        const kerningFunc = this.kerningFunc();\n        const kerningAdjustment = Math.max(0, width - fullTextWidth);\n        const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n        let offset = 0;\n        if (align === 'center') {\n            offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n        }\n        if (align === 'right') {\n            offset = Math.max(0, this.pathLength - textWidth);\n        }\n        let offsetToGlyph = offset;\n        for (let i = 0; i < chars.length; i++) {\n            const charStartPoint = this._getPointAtLength(offsetToGlyph);\n            if (!charStartPoint)\n                return;\n            const char = chars[i].char;\n            let glyphWidth = chars[i].width + letterSpacing;\n            if (char === ' ' && align === 'justify') {\n                const numberOfSpaces = this.text().split(' ').length - 1;\n                glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n            }\n            const charEndLength = offsetToGlyph + glyphWidth;\n            const charEndPoint = this._getPointAtLength(charEndLength > this.pathLength &&\n                charEndLength - this.pathLength <= kerningAdjustment\n                ? this.pathLength\n                : charEndLength);\n            if (!charEndPoint) {\n                return;\n            }\n            const width = Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n            let kern = 0;\n            if (kerningFunc) {\n                try {\n                    kern = kerningFunc(chars[i - 1].char, char) * this.fontSize();\n                }\n                catch (e) {\n                    kern = 0;\n                }\n            }\n            charStartPoint.x += kern;\n            charEndPoint.x += kern;\n            this.textWidth += kern;\n            const midpoint = Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n            const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n            this.glyphInfo.push({\n                transposeX: midpoint.x,\n                transposeY: midpoint.y,\n                text: charArr[i],\n                rotation: rotation,\n                p0: charStartPoint,\n                p1: charEndPoint,\n                width: width,\n            });\n            offsetToGlyph += glyphWidth;\n        }\n    }\n    getSelfRect() {\n        if (!this.glyphInfo.length) {\n            return {\n                x: 0,\n                y: 0,\n                width: 0,\n                height: 0,\n            };\n        }\n        const points = [];\n        this.glyphInfo.forEach(function (info) {\n            points.push(info.p0.x);\n            points.push(info.p0.y);\n            points.push(info.p1.x);\n            points.push(info.p1.y);\n        });\n        let minX = points[0] || 0;\n        let maxX = points[0] || 0;\n        let minY = points[1] || 0;\n        let maxY = points[1] || 0;\n        let x, y;\n        for (let i = 0; i < points.length / 2; i++) {\n            x = points[i * 2];\n            y = points[i * 2 + 1];\n            minX = Math.min(minX, x);\n            maxX = Math.max(maxX, x);\n            minY = Math.min(minY, y);\n            maxY = Math.max(maxY, y);\n        }\n        const fontSize = this.fontSize();\n        return {\n            x: minX - fontSize / 2,\n            y: minY - fontSize / 2,\n            width: maxX - minX + fontSize,\n            height: maxY - minY + fontSize,\n        };\n    }\n    destroy() {\n        Util.releaseCanvas(this.dummyCanvas);\n        return super.destroy();\n    }\n}\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\n_registerNode(TextPath);\nFactory.addGetterSetter(TextPath, 'data');\nFactory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory.addGetterSetter(TextPath, 'fontSize', 12, getNumberValidator());\nFactory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory.addGetterSetter(TextPath, 'align', 'left');\nFactory.addGetterSetter(TextPath, 'letterSpacing', 0, getNumberValidator());\nFactory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory.addGetterSetter(TextPath, 'textDecoration', '');\nFactory.addGetterSetter(TextPath, 'kerningFunc', undefined);\nFactory.addGetterSetter(TextPath, 'direction', 'inherit');\n", "import { Util, Transform } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Rect } from \"./Rect.js\";\nimport { Group } from \"../Group.js\";\nimport { Konva } from \"../Global.js\";\nimport { getBooleanValidator, getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst EVENTS_NAME = 'tr-konva';\nconst ATTR_CHANGE_LIST = [\n    'resizeEnabledChange',\n    'rotateAnchorOffsetChange',\n    'rotateAnchorAngleChange',\n    'rotateEnabledChange',\n    'enabledAnchorsChange',\n    'anchorSizeChange',\n    'borderEnabledChange',\n    'borderStrokeChange',\n    'borderStrokeWidthChange',\n    'borderDashChange',\n    'anchorStrokeChange',\n    'anchorStrokeWidthChange',\n    'anchorFillChange',\n    'anchorCornerRadiusChange',\n    'ignoreStrokeChange',\n    'anchorStyleFuncChange',\n]\n    .map((e) => e + `.${EVENTS_NAME}`)\n    .join(' ');\nconst NODES_RECT = 'nodesRect';\nconst TRANSFORM_CHANGE_STR = [\n    'widthChange',\n    'heightChange',\n    'scaleXChange',\n    'scaleYChange',\n    'skewXChange',\n    'skewYChange',\n    'rotationChange',\n    'offsetXChange',\n    'offsetYChange',\n    'transformsEnabledChange',\n    'strokeWidthChange',\n    'draggableChange',\n];\nconst ANGLES = {\n    'top-left': -45,\n    'top-center': 0,\n    'top-right': 45,\n    'middle-right': -90,\n    'middle-left': 90,\n    'bottom-left': -135,\n    'bottom-center': 180,\n    'bottom-right': 135,\n};\nconst TOUCH_DEVICE = 'ontouchstart' in Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n    if (anchorName === 'rotater') {\n        return rotateCursor;\n    }\n    rad += Util.degToRad(ANGLES[anchorName] || 0);\n    const angle = ((Util.radToDeg(rad) % 360) + 360) % 360;\n    if (Util._inRange(angle, 315 + 22.5, 360) || Util._inRange(angle, 0, 22.5)) {\n        return 'ns-resize';\n    }\n    else if (Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n        return 'nesw-resize';\n    }\n    else if (Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n        return 'ew-resize';\n    }\n    else if (Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n        return 'nwse-resize';\n    }\n    else if (Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n        return 'ns-resize';\n    }\n    else if (Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n        return 'nesw-resize';\n    }\n    else if (Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n        return 'ew-resize';\n    }\n    else if (Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n        return 'nwse-resize';\n    }\n    else {\n        Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n        return 'pointer';\n    }\n}\nconst ANCHORS_NAMES = [\n    'top-left',\n    'top-center',\n    'top-right',\n    'middle-right',\n    'middle-left',\n    'bottom-left',\n    'bottom-center',\n    'bottom-right',\n];\nconst MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n    return {\n        x: shape.x +\n            (shape.width / 2) * Math.cos(shape.rotation) +\n            (shape.height / 2) * Math.sin(-shape.rotation),\n        y: shape.y +\n            (shape.height / 2) * Math.cos(shape.rotation) +\n            (shape.width / 2) * Math.sin(shape.rotation),\n    };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n    const x = point.x +\n        (shape.x - point.x) * Math.cos(angleRad) -\n        (shape.y - point.y) * Math.sin(angleRad);\n    const y = point.y +\n        (shape.x - point.x) * Math.sin(angleRad) +\n        (shape.y - point.y) * Math.cos(angleRad);\n    return {\n        ...shape,\n        rotation: shape.rotation + angleRad,\n        x,\n        y,\n    };\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n    const center = getCenter(shape);\n    return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n    let snapped = newRotationRad;\n    for (let i = 0; i < snaps.length; i++) {\n        const angle = Konva.getAngle(snaps[i]);\n        const absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n        const dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n        if (dif < tol) {\n            snapped = angle;\n        }\n    }\n    return snapped;\n}\nlet activeTransformersCount = 0;\nexport class Transformer extends Group {\n    constructor(config) {\n        super(config);\n        this._movingAnchorName = null;\n        this._transforming = false;\n        this._elementsCreated = false;\n        this._createElements();\n        this._handleMouseMove = this._handleMouseMove.bind(this);\n        this._handleMouseUp = this._handleMouseUp.bind(this);\n        this.update = this.update.bind(this);\n        this.on(ATTR_CHANGE_LIST, this.update);\n        if (this.getNode()) {\n            this.update();\n        }\n    }\n    attachTo(node) {\n        this.setNode(node);\n        return this;\n    }\n    setNode(node) {\n        Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n        return this.setNodes([node]);\n    }\n    getNode() {\n        return this._nodes && this._nodes[0];\n    }\n    _getEventNamespace() {\n        return EVENTS_NAME + this._id;\n    }\n    setNodes(nodes = []) {\n        if (this._nodes && this._nodes.length) {\n            this.detach();\n        }\n        const filteredNodes = nodes.filter((node) => {\n            if (node.isAncestorOf(this)) {\n                Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n                return false;\n            }\n            return true;\n        });\n        this._nodes = nodes = filteredNodes;\n        if (nodes.length === 1 && this.useSingleNodeRotation()) {\n            this.rotation(nodes[0].getAbsoluteRotation());\n        }\n        else {\n            this.rotation(0);\n        }\n        this._nodes.forEach((node) => {\n            const onChange = () => {\n                if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n                    this.rotation(this.nodes()[0].getAbsoluteRotation());\n                }\n                this._resetTransformCache();\n                if (!this._transforming && !this.isDragging()) {\n                    this.update();\n                }\n            };\n            if (node._attrsAffectingSize.length) {\n                const additionalEvents = node._attrsAffectingSize\n                    .map((prop) => prop + 'Change.' + this._getEventNamespace())\n                    .join(' ');\n                node.on(additionalEvents, onChange);\n            }\n            node.on(TRANSFORM_CHANGE_STR.map((e) => e + `.${this._getEventNamespace()}`).join(' '), onChange);\n            node.on(`absoluteTransformChange.${this._getEventNamespace()}`, onChange);\n            this._proxyDrag(node);\n        });\n        this._resetTransformCache();\n        const elementsCreated = !!this.findOne('.top-left');\n        if (elementsCreated) {\n            this.update();\n        }\n        return this;\n    }\n    _proxyDrag(node) {\n        let lastPos;\n        node.on(`dragstart.${this._getEventNamespace()}`, (e) => {\n            lastPos = node.getAbsolutePosition();\n            if (!this.isDragging() && node !== this.findOne('.back')) {\n                this.startDrag(e, false);\n            }\n        });\n        node.on(`dragmove.${this._getEventNamespace()}`, (e) => {\n            if (!lastPos) {\n                return;\n            }\n            const abs = node.getAbsolutePosition();\n            const dx = abs.x - lastPos.x;\n            const dy = abs.y - lastPos.y;\n            this.nodes().forEach((otherNode) => {\n                if (otherNode === node) {\n                    return;\n                }\n                if (otherNode.isDragging()) {\n                    return;\n                }\n                const otherAbs = otherNode.getAbsolutePosition();\n                otherNode.setAbsolutePosition({\n                    x: otherAbs.x + dx,\n                    y: otherAbs.y + dy,\n                });\n                otherNode.startDrag(e);\n            });\n            lastPos = null;\n        });\n    }\n    getNodes() {\n        return this._nodes || [];\n    }\n    getActiveAnchor() {\n        return this._movingAnchorName;\n    }\n    detach() {\n        if (this._nodes) {\n            this._nodes.forEach((node) => {\n                node.off('.' + this._getEventNamespace());\n            });\n        }\n        this._nodes = [];\n        this._resetTransformCache();\n    }\n    _resetTransformCache() {\n        this._clearCache(NODES_RECT);\n        this._clearCache('transform');\n        this._clearSelfAndDescendantCache('absoluteTransform');\n    }\n    _getNodeRect() {\n        return this._getCache(NODES_RECT, this.__getNodeRect);\n    }\n    __getNodeShape(node, rot = this.rotation(), relative) {\n        const rect = node.getClientRect({\n            skipTransform: true,\n            skipShadow: true,\n            skipStroke: this.ignoreStroke(),\n        });\n        const absScale = node.getAbsoluteScale(relative);\n        const absPos = node.getAbsolutePosition(relative);\n        const dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n        const dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n        const rotation = (Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n            (Math.PI * 2);\n        const box = {\n            x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n            y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n            width: rect.width * absScale.x,\n            height: rect.height * absScale.y,\n            rotation: rotation,\n        };\n        return rotateAroundPoint(box, -Konva.getAngle(rot), {\n            x: 0,\n            y: 0,\n        });\n    }\n    __getNodeRect() {\n        const node = this.getNode();\n        if (!node) {\n            return {\n                x: -MAX_SAFE_INTEGER,\n                y: -MAX_SAFE_INTEGER,\n                width: 0,\n                height: 0,\n                rotation: 0,\n            };\n        }\n        const totalPoints = [];\n        this.nodes().map((node) => {\n            const box = node.getClientRect({\n                skipTransform: true,\n                skipShadow: true,\n                skipStroke: this.ignoreStroke(),\n            });\n            const points = [\n                { x: box.x, y: box.y },\n                { x: box.x + box.width, y: box.y },\n                { x: box.x + box.width, y: box.y + box.height },\n                { x: box.x, y: box.y + box.height },\n            ];\n            const trans = node.getAbsoluteTransform();\n            points.forEach(function (point) {\n                const transformed = trans.point(point);\n                totalPoints.push(transformed);\n            });\n        });\n        const tr = new Transform();\n        tr.rotate(-Konva.getAngle(this.rotation()));\n        let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n        totalPoints.forEach(function (point) {\n            const transformed = tr.point(point);\n            if (minX === undefined) {\n                minX = maxX = transformed.x;\n                minY = maxY = transformed.y;\n            }\n            minX = Math.min(minX, transformed.x);\n            minY = Math.min(minY, transformed.y);\n            maxX = Math.max(maxX, transformed.x);\n            maxY = Math.max(maxY, transformed.y);\n        });\n        tr.invert();\n        const p = tr.point({ x: minX, y: minY });\n        return {\n            x: p.x,\n            y: p.y,\n            width: maxX - minX,\n            height: maxY - minY,\n            rotation: Konva.getAngle(this.rotation()),\n        };\n    }\n    getX() {\n        return this._getNodeRect().x;\n    }\n    getY() {\n        return this._getNodeRect().y;\n    }\n    getWidth() {\n        return this._getNodeRect().width;\n    }\n    getHeight() {\n        return this._getNodeRect().height;\n    }\n    _createElements() {\n        this._createBack();\n        ANCHORS_NAMES.forEach((name) => {\n            this._createAnchor(name);\n        });\n        this._createAnchor('rotater');\n        this._elementsCreated = true;\n    }\n    _createAnchor(name) {\n        const anchor = new Rect({\n            stroke: 'rgb(0, 161, 255)',\n            fill: 'white',\n            strokeWidth: 1,\n            name: name + ' _anchor',\n            dragDistance: 0,\n            draggable: true,\n            hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n        });\n        const self = this;\n        anchor.on('mousedown touchstart', function (e) {\n            self._handleMouseDown(e);\n        });\n        anchor.on('dragstart', (e) => {\n            anchor.stopDrag();\n            e.cancelBubble = true;\n        });\n        anchor.on('dragend', (e) => {\n            e.cancelBubble = true;\n        });\n        anchor.on('mouseenter', () => {\n            const rad = Konva.getAngle(this.rotation());\n            const rotateCursor = this.rotateAnchorCursor();\n            const cursor = getCursor(name, rad, rotateCursor);\n            anchor.getStage().content &&\n                (anchor.getStage().content.style.cursor = cursor);\n            this._cursorChange = true;\n        });\n        anchor.on('mouseout', () => {\n            anchor.getStage().content &&\n                (anchor.getStage().content.style.cursor = '');\n            this._cursorChange = false;\n        });\n        this.add(anchor);\n    }\n    _createBack() {\n        const back = new Shape({\n            name: 'back',\n            width: 0,\n            height: 0,\n            sceneFunc(ctx, shape) {\n                const tr = shape.getParent();\n                const padding = tr.padding();\n                const width = shape.width();\n                const height = shape.height();\n                ctx.beginPath();\n                ctx.rect(-padding, -padding, width + padding * 2, height + padding * 2);\n                if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n                    const rotateAnchorAngle = tr.rotateAnchorAngle();\n                    const rotateAnchorOffset = tr.rotateAnchorOffset();\n                    const rad = Util.degToRad(rotateAnchorAngle);\n                    const dirX = Math.sin(rad);\n                    const dirY = -Math.cos(rad);\n                    const cx = width / 2;\n                    const cy = height / 2;\n                    let t = Infinity;\n                    if (dirY < 0) {\n                        t = Math.min(t, -cy / dirY);\n                    }\n                    else if (dirY > 0) {\n                        t = Math.min(t, (height - cy) / dirY);\n                    }\n                    if (dirX < 0) {\n                        t = Math.min(t, -cx / dirX);\n                    }\n                    else if (dirX > 0) {\n                        t = Math.min(t, (width - cx) / dirX);\n                    }\n                    const edgeX = cx + dirX * t;\n                    const edgeY = cy + dirY * t;\n                    const sign = Util._sign(height);\n                    const endX = edgeX + dirX * rotateAnchorOffset * sign;\n                    const endY = edgeY + dirY * rotateAnchorOffset * sign;\n                    ctx.moveTo(edgeX, edgeY);\n                    ctx.lineTo(endX, endY);\n                }\n                ctx.fillStrokeShape(shape);\n            },\n            hitFunc: (ctx, shape) => {\n                if (!this.shouldOverdrawWholeArea()) {\n                    return;\n                }\n                const padding = this.padding();\n                ctx.beginPath();\n                ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n                ctx.fillStrokeShape(shape);\n            },\n        });\n        this.add(back);\n        this._proxyDrag(back);\n        back.on('dragstart', (e) => {\n            e.cancelBubble = true;\n        });\n        back.on('dragmove', (e) => {\n            e.cancelBubble = true;\n        });\n        back.on('dragend', (e) => {\n            e.cancelBubble = true;\n        });\n        this.on('dragmove', (e) => {\n            this.update();\n        });\n    }\n    _handleMouseDown(e) {\n        if (this._transforming) {\n            return;\n        }\n        this._movingAnchorName = e.target.name().split(' ')[0];\n        const attrs = this._getNodeRect();\n        const width = attrs.width;\n        const height = attrs.height;\n        const hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n        this.sin = Math.abs(height / hypotenuse);\n        this.cos = Math.abs(width / hypotenuse);\n        if (typeof window !== 'undefined') {\n            window.addEventListener('mousemove', this._handleMouseMove);\n            window.addEventListener('touchmove', this._handleMouseMove);\n            window.addEventListener('mouseup', this._handleMouseUp, true);\n            window.addEventListener('touchend', this._handleMouseUp, true);\n        }\n        this._transforming = true;\n        const ap = e.target.getAbsolutePosition();\n        const pos = e.target.getStage().getPointerPosition();\n        this._anchorDragOffset = {\n            x: pos.x - ap.x,\n            y: pos.y - ap.y,\n        };\n        activeTransformersCount++;\n        this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n        this._nodes.forEach((target) => {\n            target._fire('transformstart', { evt: e.evt, target });\n        });\n    }\n    _handleMouseMove(e) {\n        let x, y, newHypotenuse;\n        const anchorNode = this.findOne('.' + this._movingAnchorName);\n        const stage = anchorNode.getStage();\n        stage.setPointersPositions(e);\n        const pp = stage.getPointerPosition();\n        let newNodePos = {\n            x: pp.x - this._anchorDragOffset.x,\n            y: pp.y - this._anchorDragOffset.y,\n        };\n        const oldAbs = anchorNode.getAbsolutePosition();\n        if (this.anchorDragBoundFunc()) {\n            newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n        }\n        anchorNode.setAbsolutePosition(newNodePos);\n        const newAbs = anchorNode.getAbsolutePosition();\n        if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n            return;\n        }\n        if (this._movingAnchorName === 'rotater') {\n            const attrs = this._getNodeRect();\n            x = anchorNode.x() - attrs.width / 2;\n            y = -anchorNode.y() + attrs.height / 2;\n            const rotateAnchorAngleRad = Konva.getAngle(this.rotateAnchorAngle());\n            let delta = Math.atan2(-y, x) + Math.PI / 2 - rotateAnchorAngleRad;\n            if (attrs.height < 0) {\n                delta -= Math.PI;\n            }\n            const oldRotation = Konva.getAngle(this.rotation());\n            const newRotation = oldRotation + delta;\n            const tol = Konva.getAngle(this.rotationSnapTolerance());\n            const snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n            const diff = snappedRot - attrs.rotation;\n            const shape = rotateAroundCenter(attrs, diff);\n            this._fitNodesInto(shape, e);\n            return;\n        }\n        const shiftBehavior = this.shiftBehavior();\n        let keepProportion;\n        if (shiftBehavior === 'inverted') {\n            keepProportion = this.keepRatio() && !e.shiftKey;\n        }\n        else if (shiftBehavior === 'none') {\n            keepProportion = this.keepRatio();\n        }\n        else {\n            keepProportion = this.keepRatio() || e.shiftKey;\n        }\n        let centeredScaling = this.centeredScaling() || e.altKey;\n        if (this._movingAnchorName === 'top-left') {\n            if (keepProportion) {\n                const comparePoint = centeredScaling\n                    ? {\n                        x: this.width() / 2,\n                        y: this.height() / 2,\n                    }\n                    : {\n                        x: this.findOne('.bottom-right').x(),\n                        y: this.findOne('.bottom-right').y(),\n                    };\n                newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n                    Math.pow(comparePoint.y - anchorNode.y(), 2));\n                const reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n                const reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n                x = newHypotenuse * this.cos * reverseX;\n                y = newHypotenuse * this.sin * reverseY;\n                this.findOne('.top-left').x(comparePoint.x - x);\n                this.findOne('.top-left').y(comparePoint.y - y);\n            }\n        }\n        else if (this._movingAnchorName === 'top-center') {\n            this.findOne('.top-left').y(anchorNode.y());\n        }\n        else if (this._movingAnchorName === 'top-right') {\n            if (keepProportion) {\n                const comparePoint = centeredScaling\n                    ? {\n                        x: this.width() / 2,\n                        y: this.height() / 2,\n                    }\n                    : {\n                        x: this.findOne('.bottom-left').x(),\n                        y: this.findOne('.bottom-left').y(),\n                    };\n                newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n                    Math.pow(comparePoint.y - anchorNode.y(), 2));\n                const reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n                const reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n                x = newHypotenuse * this.cos * reverseX;\n                y = newHypotenuse * this.sin * reverseY;\n                this.findOne('.top-right').x(comparePoint.x + x);\n                this.findOne('.top-right').y(comparePoint.y - y);\n            }\n            var pos = anchorNode.position();\n            this.findOne('.top-left').y(pos.y);\n            this.findOne('.bottom-right').x(pos.x);\n        }\n        else if (this._movingAnchorName === 'middle-left') {\n            this.findOne('.top-left').x(anchorNode.x());\n        }\n        else if (this._movingAnchorName === 'middle-right') {\n            this.findOne('.bottom-right').x(anchorNode.x());\n        }\n        else if (this._movingAnchorName === 'bottom-left') {\n            if (keepProportion) {\n                const comparePoint = centeredScaling\n                    ? {\n                        x: this.width() / 2,\n                        y: this.height() / 2,\n                    }\n                    : {\n                        x: this.findOne('.top-right').x(),\n                        y: this.findOne('.top-right').y(),\n                    };\n                newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n                    Math.pow(anchorNode.y() - comparePoint.y, 2));\n                const reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n                const reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n                x = newHypotenuse * this.cos * reverseX;\n                y = newHypotenuse * this.sin * reverseY;\n                anchorNode.x(comparePoint.x - x);\n                anchorNode.y(comparePoint.y + y);\n            }\n            pos = anchorNode.position();\n            this.findOne('.top-left').x(pos.x);\n            this.findOne('.bottom-right').y(pos.y);\n        }\n        else if (this._movingAnchorName === 'bottom-center') {\n            this.findOne('.bottom-right').y(anchorNode.y());\n        }\n        else if (this._movingAnchorName === 'bottom-right') {\n            if (keepProportion) {\n                const comparePoint = centeredScaling\n                    ? {\n                        x: this.width() / 2,\n                        y: this.height() / 2,\n                    }\n                    : {\n                        x: this.findOne('.top-left').x(),\n                        y: this.findOne('.top-left').y(),\n                    };\n                newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n                    Math.pow(anchorNode.y() - comparePoint.y, 2));\n                const reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n                const reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n                x = newHypotenuse * this.cos * reverseX;\n                y = newHypotenuse * this.sin * reverseY;\n                this.findOne('.bottom-right').x(comparePoint.x + x);\n                this.findOne('.bottom-right').y(comparePoint.y + y);\n            }\n        }\n        else {\n            console.error(new Error('Wrong position argument of selection resizer: ' +\n                this._movingAnchorName));\n        }\n        centeredScaling = this.centeredScaling() || e.altKey;\n        if (centeredScaling) {\n            const topLeft = this.findOne('.top-left');\n            const bottomRight = this.findOne('.bottom-right');\n            const topOffsetX = topLeft.x();\n            const topOffsetY = topLeft.y();\n            const bottomOffsetX = this.getWidth() - bottomRight.x();\n            const bottomOffsetY = this.getHeight() - bottomRight.y();\n            bottomRight.move({\n                x: -topOffsetX,\n                y: -topOffsetY,\n            });\n            topLeft.move({\n                x: bottomOffsetX,\n                y: bottomOffsetY,\n            });\n        }\n        const absPos = this.findOne('.top-left').getAbsolutePosition();\n        x = absPos.x;\n        y = absPos.y;\n        const width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n        const height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n        this._fitNodesInto({\n            x: x,\n            y: y,\n            width: width,\n            height: height,\n            rotation: Konva.getAngle(this.rotation()),\n        }, e);\n    }\n    _handleMouseUp(e) {\n        this._removeEvents(e);\n    }\n    getAbsoluteTransform() {\n        return this.getTransform();\n    }\n    _removeEvents(e) {\n        var _a;\n        if (this._transforming) {\n            this._transforming = false;\n            if (typeof window !== 'undefined') {\n                window.removeEventListener('mousemove', this._handleMouseMove);\n                window.removeEventListener('touchmove', this._handleMouseMove);\n                window.removeEventListener('mouseup', this._handleMouseUp, true);\n                window.removeEventListener('touchend', this._handleMouseUp, true);\n            }\n            const node = this.getNode();\n            activeTransformersCount--;\n            this._fire('transformend', { evt: e, target: node });\n            (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n            if (node) {\n                this._nodes.forEach((target) => {\n                    var _a;\n                    target._fire('transformend', { evt: e, target });\n                    (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n                });\n            }\n            this._movingAnchorName = null;\n        }\n    }\n    _fitNodesInto(newAttrs, evt) {\n        const oldAttrs = this._getNodeRect();\n        const minSize = 1;\n        if (Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n            this.update();\n            return;\n        }\n        if (Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n            this.update();\n            return;\n        }\n        const t = new Transform();\n        t.rotate(Konva.getAngle(this.rotation()));\n        if (this._movingAnchorName &&\n            newAttrs.width < 0 &&\n            this._movingAnchorName.indexOf('left') >= 0) {\n            const offset = t.point({\n                x: -this.padding() * 2,\n                y: 0,\n            });\n            newAttrs.x += offset.x;\n            newAttrs.y += offset.y;\n            newAttrs.width += this.padding() * 2;\n            this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n        }\n        else if (this._movingAnchorName &&\n            newAttrs.width < 0 &&\n            this._movingAnchorName.indexOf('right') >= 0) {\n            const offset = t.point({\n                x: this.padding() * 2,\n                y: 0,\n            });\n            this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n            newAttrs.width += this.padding() * 2;\n        }\n        if (this._movingAnchorName &&\n            newAttrs.height < 0 &&\n            this._movingAnchorName.indexOf('top') >= 0) {\n            const offset = t.point({\n                x: 0,\n                y: -this.padding() * 2,\n            });\n            newAttrs.x += offset.x;\n            newAttrs.y += offset.y;\n            this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n            newAttrs.height += this.padding() * 2;\n        }\n        else if (this._movingAnchorName &&\n            newAttrs.height < 0 &&\n            this._movingAnchorName.indexOf('bottom') >= 0) {\n            const offset = t.point({\n                x: 0,\n                y: this.padding() * 2,\n            });\n            this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n            newAttrs.height += this.padding() * 2;\n        }\n        if (this.boundBoxFunc()) {\n            const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n            if (bounded) {\n                newAttrs = bounded;\n            }\n            else {\n                Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n            }\n        }\n        const baseSize = 10000000;\n        const oldTr = new Transform();\n        oldTr.translate(oldAttrs.x, oldAttrs.y);\n        oldTr.rotate(oldAttrs.rotation);\n        oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n        const newTr = new Transform();\n        const newScaleX = newAttrs.width / baseSize;\n        const newScaleY = newAttrs.height / baseSize;\n        if (this.flipEnabled() === false) {\n            newTr.translate(newAttrs.x, newAttrs.y);\n            newTr.rotate(newAttrs.rotation);\n            newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n            newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n        }\n        else {\n            newTr.translate(newAttrs.x, newAttrs.y);\n            newTr.rotate(newAttrs.rotation);\n            newTr.scale(newScaleX, newScaleY);\n        }\n        const delta = newTr.multiply(oldTr.invert());\n        this._nodes.forEach((node) => {\n            var _a;\n            if (!node.getStage()) {\n                return;\n            }\n            const parentTransform = node.getParent().getAbsoluteTransform();\n            const localTransform = node.getTransform().copy();\n            localTransform.translate(node.offsetX(), node.offsetY());\n            const newLocalTransform = new Transform();\n            newLocalTransform\n                .multiply(parentTransform.copy().invert())\n                .multiply(delta)\n                .multiply(parentTransform)\n                .multiply(localTransform);\n            const attrs = newLocalTransform.decompose();\n            node.setAttrs(attrs);\n            (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n        });\n        this.rotation(Util._getRotation(newAttrs.rotation));\n        this._nodes.forEach((node) => {\n            this._fire('transform', { evt: evt, target: node });\n            node._fire('transform', { evt: evt, target: node });\n        });\n        this._resetTransformCache();\n        this.update();\n        this.getLayer().batchDraw();\n    }\n    forceUpdate() {\n        this._resetTransformCache();\n        this.update();\n    }\n    _batchChangeChild(selector, attrs) {\n        const anchor = this.findOne(selector);\n        anchor.setAttrs(attrs);\n    }\n    update() {\n        var _a;\n        const attrs = this._getNodeRect();\n        this.rotation(Util._getRotation(attrs.rotation));\n        const width = attrs.width;\n        const height = attrs.height;\n        const enabledAnchors = this.enabledAnchors();\n        const resizeEnabled = this.resizeEnabled();\n        const padding = this.padding();\n        const anchorSize = this.anchorSize();\n        const anchors = this.find('._anchor');\n        anchors.forEach((node) => {\n            node.setAttrs({\n                width: anchorSize,\n                height: anchorSize,\n                offsetX: anchorSize / 2,\n                offsetY: anchorSize / 2,\n                stroke: this.anchorStroke(),\n                strokeWidth: this.anchorStrokeWidth(),\n                fill: this.anchorFill(),\n                cornerRadius: this.anchorCornerRadius(),\n            });\n        });\n        this._batchChangeChild('.top-left', {\n            x: 0,\n            y: 0,\n            offsetX: anchorSize / 2 + padding,\n            offsetY: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n        });\n        this._batchChangeChild('.top-center', {\n            x: width / 2,\n            y: 0,\n            offsetY: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n        });\n        this._batchChangeChild('.top-right', {\n            x: width,\n            y: 0,\n            offsetX: anchorSize / 2 - padding,\n            offsetY: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n        });\n        this._batchChangeChild('.middle-left', {\n            x: 0,\n            y: height / 2,\n            offsetX: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n        });\n        this._batchChangeChild('.middle-right', {\n            x: width,\n            y: height / 2,\n            offsetX: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n        });\n        this._batchChangeChild('.bottom-left', {\n            x: 0,\n            y: height,\n            offsetX: anchorSize / 2 + padding,\n            offsetY: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n        });\n        this._batchChangeChild('.bottom-center', {\n            x: width / 2,\n            y: height,\n            offsetY: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n        });\n        this._batchChangeChild('.bottom-right', {\n            x: width,\n            y: height,\n            offsetX: anchorSize / 2 - padding,\n            offsetY: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n        });\n        const rotateAnchorAngle = this.rotateAnchorAngle();\n        const rotateAnchorOffset = this.rotateAnchorOffset();\n        const rad = Util.degToRad(rotateAnchorAngle);\n        const dirX = Math.sin(rad);\n        const dirY = -Math.cos(rad);\n        const cx = width / 2;\n        const cy = height / 2;\n        let t = Infinity;\n        if (dirY < 0) {\n            t = Math.min(t, -cy / dirY);\n        }\n        else if (dirY > 0) {\n            t = Math.min(t, (height - cy) / dirY);\n        }\n        if (dirX < 0) {\n            t = Math.min(t, -cx / dirX);\n        }\n        else if (dirX > 0) {\n            t = Math.min(t, (width - cx) / dirX);\n        }\n        const edgeX = cx + dirX * t;\n        const edgeY = cy + dirY * t;\n        const sign = Util._sign(height);\n        this._batchChangeChild('.rotater', {\n            x: edgeX + dirX * rotateAnchorOffset * sign,\n            y: edgeY + dirY * rotateAnchorOffset * sign - padding * dirY,\n            visible: this.rotateEnabled(),\n        });\n        this._batchChangeChild('.back', {\n            width: width,\n            height: height,\n            visible: this.borderEnabled(),\n            stroke: this.borderStroke(),\n            strokeWidth: this.borderStrokeWidth(),\n            dash: this.borderDash(),\n            draggable: this.nodes().some((node) => node.draggable()),\n            x: 0,\n            y: 0,\n        });\n        const styleFunc = this.anchorStyleFunc();\n        if (styleFunc) {\n            anchors.forEach((node) => {\n                styleFunc(node);\n            });\n        }\n        (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n    }\n    isTransforming() {\n        return this._transforming;\n    }\n    stopTransform() {\n        if (this._transforming) {\n            this._removeEvents();\n            const anchorNode = this.findOne('.' + this._movingAnchorName);\n            if (anchorNode) {\n                anchorNode.stopDrag();\n            }\n        }\n    }\n    destroy() {\n        if (this.getStage() && this._cursorChange) {\n            this.getStage().content && (this.getStage().content.style.cursor = '');\n        }\n        Group.prototype.destroy.call(this);\n        this.detach();\n        this._removeEvents();\n        return this;\n    }\n    add(...children) {\n        if (this._elementsCreated) {\n            Util.error('You cannot add external nodes to the Transformer. Use tr.nodes([node]) instead.');\n            return this;\n        }\n        return super.add(...children);\n    }\n    toObject() {\n        return Node.prototype.toObject.call(this);\n    }\n    clone(obj) {\n        const node = Node.prototype.clone.call(this, obj);\n        return node;\n    }\n    getClientRect() {\n        if (this.nodes().length > 0) {\n            return super.getClientRect();\n        }\n        else {\n            return { x: 0, y: 0, width: 0, height: 0 };\n        }\n    }\n}\nTransformer.isTransforming = () => {\n    return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n    if (!(val instanceof Array)) {\n        Util.warn('enabledAnchors value should be an array');\n    }\n    if (val instanceof Array) {\n        val.forEach(function (name) {\n            if (ANCHORS_NAMES.indexOf(name) === -1) {\n                Util.warn('Unknown anchor name: ' +\n                    name +\n                    '. Available names are: ' +\n                    ANCHORS_NAMES.join(', '));\n            }\n        });\n    }\n    return val || [];\n}\nTransformer.prototype.className = 'Transformer';\n_registerNode(Transformer);\nFactory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory.addGetterSetter(Transformer, 'flipEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory.addGetterSetter(Transformer, 'anchorSize', 10, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateAnchorAngle', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderDash');\nFactory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory.addGetterSetter(Transformer, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'nodes');\nFactory.addGetterSetter(Transformer, 'node');\nFactory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory.backCompat(Transformer, {\n    lineEnabled: 'borderEnabled',\n    rotateHandlerOffset: 'rotateAnchorOffset',\n    enabledHandlers: 'enabledAnchors',\n});\n", "import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Wedge extends Shape {\n    _sceneFunc(context) {\n        context.beginPath();\n        context.arc(0, 0, this.radius(), 0, Konva.getAngle(this.angle()), this.clockwise());\n        context.lineTo(0, 0);\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        return this.radius() * 2;\n    }\n    getHeight() {\n        return this.radius() * 2;\n    }\n    setWidth(width) {\n        this.radius(width / 2);\n    }\n    setHeight(height) {\n        this.radius(height / 2);\n    }\n}\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n_registerNode(Wedge);\nFactory.addGetterSetter(Wedge, 'radius', 0, getNumberValidator());\nFactory.addGetterSetter(Wedge, 'angle', 0, getNumberValidator());\nFactory.addGetterSetter(Wedge, 'clockwise', false);\nFactory.backCompat(Wedge, {\n    angleDeg: 'angle',\n    getAngleDeg: 'getAngle',\n    setAngleDeg: 'setAngle',\n});\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction BlurStack() {\n    this.r = 0;\n    this.g = 0;\n    this.b = 0;\n    this.a = 0;\n    this.next = null;\n}\nconst mul_table = [\n    512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,\n    512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,\n    273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,\n    496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,\n    282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,\n    364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,\n    507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,\n    374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,\n    287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,\n    454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,\n    368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,\n    305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,\n    257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,\n    437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,\n    377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,\n    329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n    289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,\n];\nconst shg_table = [\n    9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,\n    17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,\n    19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,\n    20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,\n    23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n    23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n    23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n    24, 24, 24, 24, 24, 24, 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n    const pixels = imageData.data, width = imageData.width, height = imageData.height;\n    let p, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n    const div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n    let stackEnd = null, stack = stackStart, stackIn = null, stackOut = null;\n    for (let i = 1; i < div; i++) {\n        stack = stack.next = new BlurStack();\n        if (i === radiusPlus1) {\n            stackEnd = stack;\n        }\n    }\n    stack.next = stackStart;\n    yw = yi = 0;\n    for (let y = 0; y < height; y++) {\n        r_in_sum =\n            g_in_sum =\n                b_in_sum =\n                    a_in_sum =\n                        r_sum =\n                            g_sum =\n                                b_sum =\n                                    a_sum =\n                                        0;\n        r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n        g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n        b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n        a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n        r_sum += sumFactor * pr;\n        g_sum += sumFactor * pg;\n        b_sum += sumFactor * pb;\n        a_sum += sumFactor * pa;\n        stack = stackStart;\n        for (let i = 0; i < radiusPlus1; i++) {\n            stack.r = pr;\n            stack.g = pg;\n            stack.b = pb;\n            stack.a = pa;\n            stack = stack.next;\n        }\n        for (let i = 1; i < radiusPlus1; i++) {\n            p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n            r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n            g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n            b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n            a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n            r_in_sum += pr;\n            g_in_sum += pg;\n            b_in_sum += pb;\n            a_in_sum += pa;\n            stack = stack.next;\n        }\n        stackIn = stackStart;\n        stackOut = stackEnd;\n        for (let x = 0; x < width; x++) {\n            pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n            if (pa !== 0) {\n                pa = 255 / pa;\n                pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n                pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n                pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n            }\n            else {\n                pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n            }\n            r_sum -= r_out_sum;\n            g_sum -= g_out_sum;\n            b_sum -= b_out_sum;\n            a_sum -= a_out_sum;\n            r_out_sum -= stackIn.r;\n            g_out_sum -= stackIn.g;\n            b_out_sum -= stackIn.b;\n            a_out_sum -= stackIn.a;\n            p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n            r_in_sum += stackIn.r = pixels[p];\n            g_in_sum += stackIn.g = pixels[p + 1];\n            b_in_sum += stackIn.b = pixels[p + 2];\n            a_in_sum += stackIn.a = pixels[p + 3];\n            r_sum += r_in_sum;\n            g_sum += g_in_sum;\n            b_sum += b_in_sum;\n            a_sum += a_in_sum;\n            stackIn = stackIn.next;\n            r_out_sum += pr = stackOut.r;\n            g_out_sum += pg = stackOut.g;\n            b_out_sum += pb = stackOut.b;\n            a_out_sum += pa = stackOut.a;\n            r_in_sum -= pr;\n            g_in_sum -= pg;\n            b_in_sum -= pb;\n            a_in_sum -= pa;\n            stackOut = stackOut.next;\n            yi += 4;\n        }\n        yw += width;\n    }\n    for (let x = 0; x < width; x++) {\n        g_in_sum =\n            b_in_sum =\n                a_in_sum =\n                    r_in_sum =\n                        g_sum =\n                            b_sum =\n                                a_sum =\n                                    r_sum =\n                                        0;\n        yi = x << 2;\n        r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n        g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n        b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n        a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n        r_sum += sumFactor * pr;\n        g_sum += sumFactor * pg;\n        b_sum += sumFactor * pb;\n        a_sum += sumFactor * pa;\n        stack = stackStart;\n        for (let i = 0; i < radiusPlus1; i++) {\n            stack.r = pr;\n            stack.g = pg;\n            stack.b = pb;\n            stack.a = pa;\n            stack = stack.next;\n        }\n        let yp = width;\n        for (let i = 1; i <= radius; i++) {\n            yi = (yp + x) << 2;\n            r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n            g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n            b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n            a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n            r_in_sum += pr;\n            g_in_sum += pg;\n            b_in_sum += pb;\n            a_in_sum += pa;\n            stack = stack.next;\n            if (i < heightMinus1) {\n                yp += width;\n            }\n        }\n        yi = x;\n        stackIn = stackStart;\n        stackOut = stackEnd;\n        for (let y = 0; y < height; y++) {\n            p = yi << 2;\n            pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n            if (pa > 0) {\n                pa = 255 / pa;\n                pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n                pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n                pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n            }\n            else {\n                pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n            }\n            r_sum -= r_out_sum;\n            g_sum -= g_out_sum;\n            b_sum -= b_out_sum;\n            a_sum -= a_out_sum;\n            r_out_sum -= stackIn.r;\n            g_out_sum -= stackIn.g;\n            b_out_sum -= stackIn.b;\n            a_out_sum -= stackIn.a;\n            p =\n                (x +\n                    ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n                    2;\n            r_sum += r_in_sum += stackIn.r = pixels[p];\n            g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n            b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n            a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n            stackIn = stackIn.next;\n            r_out_sum += pr = stackOut.r;\n            g_out_sum += pg = stackOut.g;\n            b_out_sum += pb = stackOut.b;\n            a_out_sum += pa = stackOut.a;\n            r_in_sum -= pr;\n            g_in_sum -= pg;\n            b_in_sum -= pb;\n            a_in_sum -= pa;\n            stackOut = stackOut.next;\n            yi += width;\n        }\n    }\n}\nexport const Blur = function Blur(imageData) {\n    const radius = Math.round(this.blurRadius());\n    if (radius > 0) {\n        filterGaussBlurRGBA(imageData, radius);\n    }\n};\nFactory.addGetterSetter(Node, 'blurRadius', 0, getNumberValidator(), Factory.afterSetFilter);\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Brighten = function (imageData) {\n    const brightness = this.brightness() * 255, data = imageData.data, len = data.length;\n    for (let i = 0; i < len; i += 4) {\n        data[i] += brightness;\n        data[i + 1] += brightness;\n        data[i + 2] += brightness;\n    }\n};\nFactory.addGetterSetter(Node, 'brightness', 0, getNumberValidator(), Factory.afterSetFilter);\n", "export const Brightness = function (imageData) {\n    const brightness = this.brightness(), data = imageData.data, len = data.length;\n    for (let i = 0; i < len; i += 4) {\n        data[i] = Math.min(255, data[i] * brightness);\n        data[i + 1] = Math.min(255, data[i + 1] * brightness);\n        data[i + 2] = Math.min(255, data[i + 2] * brightness);\n    }\n};\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Contrast = function (imageData) {\n    const adjust = Math.pow((this.contrast() + 100) / 100, 2);\n    const data = imageData.data, nPixels = data.length;\n    let red = 150, green = 150, blue = 150;\n    for (let i = 0; i < nPixels; i += 4) {\n        red = data[i];\n        green = data[i + 1];\n        blue = data[i + 2];\n        red /= 255;\n        red -= 0.5;\n        red *= adjust;\n        red += 0.5;\n        red *= 255;\n        green /= 255;\n        green -= 0.5;\n        green *= adjust;\n        green += 0.5;\n        green *= 255;\n        blue /= 255;\n        blue -= 0.5;\n        blue *= adjust;\n        blue += 0.5;\n        blue *= 255;\n        red = red < 0 ? 0 : red > 255 ? 255 : red;\n        green = green < 0 ? 0 : green > 255 ? 255 : green;\n        blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n        data[i] = red;\n        data[i + 1] = green;\n        data[i + 2] = blue;\n    }\n};\nFactory.addGetterSetter(Node, 'contrast', 0, getNumberValidator(), Factory.afterSetFilter);\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Emboss = function (imageData) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n    const data = imageData.data;\n    const w = imageData.width;\n    const h = imageData.height;\n    const strength01 = Math.min(1, Math.max(0, (_b = (_a = this.embossStrength) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : 0.5));\n    const whiteLevel01 = Math.min(1, Math.max(0, (_d = (_c = this.embossWhiteLevel) === null || _c === void 0 ? void 0 : _c.call(this)) !== null && _d !== void 0 ? _d : 0.5));\n    const directionMap = {\n        'top-left': 315,\n        top: 270,\n        'top-right': 225,\n        right: 180,\n        'bottom-right': 135,\n        bottom: 90,\n        'bottom-left': 45,\n        left: 0,\n    };\n    const directionDeg = (_g = directionMap[(_f = (_e = this.embossDirection) === null || _e === void 0 ? void 0 : _e.call(this)) !== null && _f !== void 0 ? _f : 'top-left']) !== null && _g !== void 0 ? _g : 315;\n    const blend = !!((_j = (_h = this.embossBlend) === null || _h === void 0 ? void 0 : _h.call(this)) !== null && _j !== void 0 ? _j : false);\n    const strength = strength01 * 10;\n    const bias = whiteLevel01 * 255;\n    const dirRad = (directionDeg * Math.PI) / 180;\n    const cx = Math.cos(dirRad);\n    const cy = Math.sin(dirRad);\n    const SCALE = (128 / 1020) * strength;\n    const src = new Uint8ClampedArray(data);\n    const lum = new Float32Array(w * h);\n    for (let p = 0, i = 0; i < data.length; i += 4, p++) {\n        lum[p] = 0.2126 * src[i] + 0.7152 * src[i + 1] + 0.0722 * src[i + 2];\n    }\n    const Gx = [-1, 0, 1, -2, 0, 2, -1, 0, 1];\n    const Gy = [-1, -2, -1, 0, 0, 0, 1, 2, 1];\n    const OFF = [-w - 1, -w, -w + 1, -1, 0, 1, w - 1, w, w + 1];\n    const clamp8 = (v) => (v < 0 ? 0 : v > 255 ? 255 : v);\n    for (let y = 1; y < h - 1; y++) {\n        for (let x = 1; x < w - 1; x++) {\n            const p = y * w + x;\n            let sx = 0, sy = 0;\n            sx += lum[p + OFF[0]] * Gx[0];\n            sy += lum[p + OFF[0]] * Gy[0];\n            sx += lum[p + OFF[1]] * Gx[1];\n            sy += lum[p + OFF[1]] * Gy[1];\n            sx += lum[p + OFF[2]] * Gx[2];\n            sy += lum[p + OFF[2]] * Gy[2];\n            sx += lum[p + OFF[3]] * Gx[3];\n            sy += lum[p + OFF[3]] * Gy[3];\n            sx += lum[p + OFF[5]] * Gx[5];\n            sy += lum[p + OFF[5]] * Gy[5];\n            sx += lum[p + OFF[6]] * Gx[6];\n            sy += lum[p + OFF[6]] * Gy[6];\n            sx += lum[p + OFF[7]] * Gx[7];\n            sy += lum[p + OFF[7]] * Gy[7];\n            sx += lum[p + OFF[8]] * Gx[8];\n            sy += lum[p + OFF[8]] * Gy[8];\n            const r = cx * sx + cy * sy;\n            const outGray = clamp8(bias + r * SCALE);\n            const o = p * 4;\n            if (blend) {\n                const delta = outGray - bias;\n                data[o] = clamp8(src[o] + delta);\n                data[o + 1] = clamp8(src[o + 1] + delta);\n                data[o + 2] = clamp8(src[o + 2] + delta);\n                data[o + 3] = src[o + 3];\n            }\n            else {\n                data[o] = data[o + 1] = data[o + 2] = outGray;\n                data[o + 3] = src[o + 3];\n            }\n        }\n    }\n    for (let x = 0; x < w; x++) {\n        let oTop = x * 4, oBot = ((h - 1) * w + x) * 4;\n        data[oTop] = src[oTop];\n        data[oTop + 1] = src[oTop + 1];\n        data[oTop + 2] = src[oTop + 2];\n        data[oTop + 3] = src[oTop + 3];\n        data[oBot] = src[oBot];\n        data[oBot + 1] = src[oBot + 1];\n        data[oBot + 2] = src[oBot + 2];\n        data[oBot + 3] = src[oBot + 3];\n    }\n    for (let y = 1; y < h - 1; y++) {\n        let oL = y * w * 4, oR = (y * w + (w - 1)) * 4;\n        data[oL] = src[oL];\n        data[oL + 1] = src[oL + 1];\n        data[oL + 2] = src[oL + 2];\n        data[oL + 3] = src[oL + 3];\n        data[oR] = src[oR];\n        data[oR + 1] = src[oR + 1];\n        data[oR + 2] = src[oR + 2];\n        data[oR + 3] = src[oR + 3];\n    }\n    return imageData;\n};\nFactory.addGetterSetter(Node, 'embossStrength', 0.5, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossWhiteLevel', 0.5, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossDirection', 'top-left', undefined, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossBlend', false, undefined, Factory.afterSetFilter);\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n    const fromRange = fromMax - fromMin, toRange = toMax - toMin;\n    if (fromRange === 0) {\n        return toMin + toRange / 2;\n    }\n    if (toRange === 0) {\n        return toMin;\n    }\n    let toValue = (fromValue - fromMin) / fromRange;\n    toValue = toRange * toValue + toMin;\n    return toValue;\n}\nexport const Enhance = function (imageData) {\n    const data = imageData.data, nSubPixels = data.length;\n    let rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b;\n    const enhanceAmount = this.enhance();\n    if (enhanceAmount === 0) {\n        return;\n    }\n    for (let i = 0; i < nSubPixels; i += 4) {\n        r = data[i + 0];\n        if (r < rMin) {\n            rMin = r;\n        }\n        else if (r > rMax) {\n            rMax = r;\n        }\n        g = data[i + 1];\n        if (g < gMin) {\n            gMin = g;\n        }\n        else if (g > gMax) {\n            gMax = g;\n        }\n        b = data[i + 2];\n        if (b < bMin) {\n            bMin = b;\n        }\n        else if (b > bMax) {\n            bMax = b;\n        }\n    }\n    if (rMax === rMin) {\n        rMax = 255;\n        rMin = 0;\n    }\n    if (gMax === gMin) {\n        gMax = 255;\n        gMin = 0;\n    }\n    if (bMax === bMin) {\n        bMax = 255;\n        bMin = 0;\n    }\n    let rGoalMax, rGoalMin, gGoalMax, gGoalMin, bGoalMax, bGoalMin;\n    if (enhanceAmount > 0) {\n        rGoalMax = rMax + enhanceAmount * (255 - rMax);\n        rGoalMin = rMin - enhanceAmount * (rMin - 0);\n        gGoalMax = gMax + enhanceAmount * (255 - gMax);\n        gGoalMin = gMin - enhanceAmount * (gMin - 0);\n        bGoalMax = bMax + enhanceAmount * (255 - bMax);\n        bGoalMin = bMin - enhanceAmount * (bMin - 0);\n    }\n    else {\n        const rMid = (rMax + rMin) * 0.5;\n        rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n        rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n        const gMid = (gMax + gMin) * 0.5;\n        gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n        gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n        const bMid = (bMax + bMin) * 0.5;\n        bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n        bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n    }\n    for (let i = 0; i < nSubPixels; i += 4) {\n        data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n        data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n        data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n    }\n};\nFactory.addGetterSetter(Node, 'enhance', 0, getNumberValidator(), Factory.afterSetFilter);\n", "export const Grayscale = function (imageData) {\n    const data = imageData.data, len = data.length;\n    for (let i = 0; i < len; i += 4) {\n        const brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n        data[i] = brightness;\n        data[i + 1] = brightness;\n        data[i + 2] = brightness;\n    }\n};\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nFactory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'luminance', 0, getNumberValidator(), Factory.afterSetFilter);\nexport const HSL = function (imageData) {\n    const data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127;\n    const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n    const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n    const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n    const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n    let r, g, b, a;\n    for (let i = 0; i < nPixels; i += 4) {\n        r = data[i + 0];\n        g = data[i + 1];\n        b = data[i + 2];\n        a = data[i + 3];\n        data[i + 0] = rr * r + rg * g + rb * b + l;\n        data[i + 1] = gr * r + gg * g + gb * b + l;\n        data[i + 2] = br * r + bg * g + bb * b + l;\n        data[i + 3] = a;\n    }\n};\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const HSV = function (imageData) {\n    const data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360;\n    const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n    const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n    const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n    const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n    for (let i = 0; i < nPixels; i += 4) {\n        const r = data[i + 0];\n        const g = data[i + 1];\n        const b = data[i + 2];\n        const a = data[i + 3];\n        data[i + 0] = rr * r + rg * g + rb * b;\n        data[i + 1] = gr * r + gg * g + gb * b;\n        data[i + 2] = br * r + bg * g + bb * b;\n        data[i + 3] = a;\n    }\n};\nFactory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'value', 0, getNumberValidator(), Factory.afterSetFilter);\n", "export const Invert = function (imageData) {\n    const data = imageData.data, len = data.length;\n    for (let i = 0; i < len; i += 4) {\n        data[i] = 255 - data[i];\n        data[i + 1] = 255 - data[i + 1];\n        data[i + 2] = 255 - data[i + 2];\n    }\n};\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { Util } from \"../Util.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nconst ToPolar = function (src, dst, opt) {\n    const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n    let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n    let x = xSize - xMid;\n    let y = ySize - yMid;\n    const rad = Math.sqrt(x * x + y * y);\n    rMax = rad > rMax ? rad : rMax;\n    const rSize = ySize, tSize = xSize;\n    const conversion = ((360 / tSize) * Math.PI) / 180;\n    for (let theta = 0; theta < tSize; theta += 1) {\n        const sin = Math.sin(theta * conversion);\n        const cos = Math.cos(theta * conversion);\n        for (let radius = 0; radius < rSize; radius += 1) {\n            x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n            y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n            let i = (y * xSize + x) * 4;\n            const r = srcPixels[i + 0];\n            const g = srcPixels[i + 1];\n            const b = srcPixels[i + 2];\n            const a = srcPixels[i + 3];\n            i = (theta + radius * xSize) * 4;\n            dstPixels[i + 0] = r;\n            dstPixels[i + 1] = g;\n            dstPixels[i + 2] = b;\n            dstPixels[i + 3] = a;\n        }\n    }\n};\nconst FromPolar = function (src, dst, opt) {\n    const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n    let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n    let x = xSize - xMid;\n    let y = ySize - yMid;\n    const rad = Math.sqrt(x * x + y * y);\n    rMax = rad > rMax ? rad : rMax;\n    const rSize = ySize, tSize = xSize, phaseShift = opt.polarRotation || 0;\n    let x1, y1;\n    for (x = 0; x < xSize; x += 1) {\n        for (y = 0; y < ySize; y += 1) {\n            const dx = x - xMid;\n            const dy = y - yMid;\n            const radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n            let theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n            theta = (theta * tSize) / 360;\n            x1 = Math.floor(theta);\n            y1 = Math.floor(radius);\n            let i = (y1 * xSize + x1) * 4;\n            const r = srcPixels[i + 0];\n            const g = srcPixels[i + 1];\n            const b = srcPixels[i + 2];\n            const a = srcPixels[i + 3];\n            i = (y * xSize + x) * 4;\n            dstPixels[i + 0] = r;\n            dstPixels[i + 1] = g;\n            dstPixels[i + 2] = b;\n            dstPixels[i + 3] = a;\n        }\n    }\n};\nexport const Kaleidoscope = function (imageData) {\n    const xSize = imageData.width, ySize = imageData.height;\n    let x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n    let power = Math.round(this.kaleidoscopePower());\n    const angle = Math.round(this.kaleidoscopeAngle());\n    const offset = Math.floor((xSize * (angle % 360)) / 360);\n    if (power < 1) {\n        return;\n    }\n    const tempCanvas = Util.createCanvasElement();\n    tempCanvas.width = xSize;\n    tempCanvas.height = ySize;\n    const scratchData = tempCanvas\n        .getContext('2d')\n        .getImageData(0, 0, xSize, ySize);\n    Util.releaseCanvas(tempCanvas);\n    ToPolar(imageData, scratchData, {\n        polarCenterX: xSize / 2,\n        polarCenterY: ySize / 2,\n    });\n    let minSectionSize = xSize / Math.pow(2, power);\n    while (minSectionSize <= 8) {\n        minSectionSize = minSectionSize * 2;\n        power -= 1;\n    }\n    minSectionSize = Math.ceil(minSectionSize);\n    let sectionSize = minSectionSize;\n    let xStart = 0, xEnd = sectionSize, xDelta = 1;\n    if (offset + minSectionSize > xSize) {\n        xStart = sectionSize;\n        xEnd = 0;\n        xDelta = -1;\n    }\n    for (y = 0; y < ySize; y += 1) {\n        for (x = xStart; x !== xEnd; x += xDelta) {\n            xoff = Math.round(x + offset) % xSize;\n            srcPos = (xSize * y + xoff) * 4;\n            r = scratchData.data[srcPos + 0];\n            g = scratchData.data[srcPos + 1];\n            b = scratchData.data[srcPos + 2];\n            a = scratchData.data[srcPos + 3];\n            dstPos = (xSize * y + x) * 4;\n            scratchData.data[dstPos + 0] = r;\n            scratchData.data[dstPos + 1] = g;\n            scratchData.data[dstPos + 2] = b;\n            scratchData.data[dstPos + 3] = a;\n        }\n    }\n    for (y = 0; y < ySize; y += 1) {\n        sectionSize = Math.floor(minSectionSize);\n        for (i = 0; i < power; i += 1) {\n            for (x = 0; x < sectionSize + 1; x += 1) {\n                srcPos = (xSize * y + x) * 4;\n                r = scratchData.data[srcPos + 0];\n                g = scratchData.data[srcPos + 1];\n                b = scratchData.data[srcPos + 2];\n                a = scratchData.data[srcPos + 3];\n                dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n                scratchData.data[dstPos + 0] = r;\n                scratchData.data[dstPos + 1] = g;\n                scratchData.data[dstPos + 2] = b;\n                scratchData.data[dstPos + 3] = a;\n            }\n            sectionSize *= 2;\n        }\n    }\n    FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nFactory.addGetterSetter(Node, 'kaleidoscopePower', 2, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'kaleidoscopeAngle', 0, getNumberValidator(), Factory.afterSetFilter);\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction pixelAt(idata, x, y) {\n    let idx = (y * idata.width + x) * 4;\n    const d = [];\n    d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n    return d;\n}\nfunction rgbDistance(p1, p2) {\n    return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n        Math.pow(p1[1] - p2[1], 2) +\n        Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n    const m = [0, 0, 0];\n    for (let i = 0; i < pTab.length; i++) {\n        m[0] += pTab[i][0];\n        m[1] += pTab[i][1];\n        m[2] += pTab[i][2];\n    }\n    m[0] /= pTab.length;\n    m[1] /= pTab.length;\n    m[2] /= pTab.length;\n    return m;\n}\nfunction backgroundMask(idata, threshold) {\n    const rgbv_no = pixelAt(idata, 0, 0);\n    const rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n    const rgbv_so = pixelAt(idata, 0, idata.height - 1);\n    const rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n    const thres = threshold || 10;\n    if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n        rgbDistance(rgbv_ne, rgbv_se) < thres &&\n        rgbDistance(rgbv_se, rgbv_so) < thres &&\n        rgbDistance(rgbv_so, rgbv_no) < thres) {\n        const mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n        const mask = [];\n        for (let i = 0; i < idata.width * idata.height; i++) {\n            const d = rgbDistance(mean, [\n                idata.data[i * 4],\n                idata.data[i * 4 + 1],\n                idata.data[i * 4 + 2],\n            ]);\n            mask[i] = d < thres ? 0 : 255;\n        }\n        return mask;\n    }\n}\nfunction applyMask(idata, mask) {\n    for (let i = 0; i < idata.width * idata.height; i++) {\n        idata.data[4 * i + 3] = mask[i];\n    }\n}\nfunction erodeMask(mask, sw, sh) {\n    const weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n    const side = Math.round(Math.sqrt(weights.length));\n    const halfSide = Math.floor(side / 2);\n    const maskResult = [];\n    for (let y = 0; y < sh; y++) {\n        for (let x = 0; x < sw; x++) {\n            const so = y * sw + x;\n            let a = 0;\n            for (let cy = 0; cy < side; cy++) {\n                for (let cx = 0; cx < side; cx++) {\n                    const scy = y + cy - halfSide;\n                    const scx = x + cx - halfSide;\n                    if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n                        const srcOff = scy * sw + scx;\n                        const wt = weights[cy * side + cx];\n                        a += mask[srcOff] * wt;\n                    }\n                }\n            }\n            maskResult[so] = a === 255 * 8 ? 255 : 0;\n        }\n    }\n    return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n    const weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n    const side = Math.round(Math.sqrt(weights.length));\n    const halfSide = Math.floor(side / 2);\n    const maskResult = [];\n    for (let y = 0; y < sh; y++) {\n        for (let x = 0; x < sw; x++) {\n            const so = y * sw + x;\n            let a = 0;\n            for (let cy = 0; cy < side; cy++) {\n                for (let cx = 0; cx < side; cx++) {\n                    const scy = y + cy - halfSide;\n                    const scx = x + cx - halfSide;\n                    if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n                        const srcOff = scy * sw + scx;\n                        const wt = weights[cy * side + cx];\n                        a += mask[srcOff] * wt;\n                    }\n                }\n            }\n            maskResult[so] = a >= 255 * 4 ? 255 : 0;\n        }\n    }\n    return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n    const weights = [\n        1 / 9,\n        1 / 9,\n        1 / 9,\n        1 / 9,\n        1 / 9,\n        1 / 9,\n        1 / 9,\n        1 / 9,\n        1 / 9,\n    ];\n    const side = Math.round(Math.sqrt(weights.length));\n    const halfSide = Math.floor(side / 2);\n    const maskResult = [];\n    for (let y = 0; y < sh; y++) {\n        for (let x = 0; x < sw; x++) {\n            const so = y * sw + x;\n            let a = 0;\n            for (let cy = 0; cy < side; cy++) {\n                for (let cx = 0; cx < side; cx++) {\n                    const scy = y + cy - halfSide;\n                    const scx = x + cx - halfSide;\n                    if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n                        const srcOff = scy * sw + scx;\n                        const wt = weights[cy * side + cx];\n                        a += mask[srcOff] * wt;\n                    }\n                }\n            }\n            maskResult[so] = a;\n        }\n    }\n    return maskResult;\n}\nexport const Mask = function (imageData) {\n    const threshold = this.threshold();\n    let mask = backgroundMask(imageData, threshold);\n    if (mask) {\n        mask = erodeMask(mask, imageData.width, imageData.height);\n        mask = dilateMask(mask, imageData.width, imageData.height);\n        mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n        applyMask(imageData, mask);\n    }\n    return imageData;\n};\nFactory.addGetterSetter(Node, 'threshold', 0, getNumberValidator(), Factory.afterSetFilter);\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Noise = function (imageData) {\n    const amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2;\n    for (let i = 0; i < nPixels; i += 4) {\n        data[i + 0] += half - 2 * half * Math.random();\n        data[i + 1] += half - 2 * half * Math.random();\n        data[i + 2] += half - 2 * half * Math.random();\n    }\n};\nFactory.addGetterSetter(Node, 'noise', 0.2, getNumberValidator(), Factory.afterSetFilter);\n", "import { Factory } from \"../Factory.js\";\nimport { Util } from \"../Util.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Pixelate = function (imageData) {\n    let pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), data = imageData.data;\n    if (pixelSize <= 0) {\n        Util.error('pixelSize value can not be <= 0');\n        return;\n    }\n    for (let xBin = 0; xBin < nBinsX; xBin += 1) {\n        for (let yBin = 0; yBin < nBinsY; yBin += 1) {\n            let red = 0;\n            let green = 0;\n            let blue = 0;\n            let alpha = 0;\n            const xBinStart = xBin * pixelSize;\n            const xBinEnd = xBinStart + pixelSize;\n            const yBinStart = yBin * pixelSize;\n            const yBinEnd = yBinStart + pixelSize;\n            let pixelsInBin = 0;\n            for (let x = xBinStart; x < xBinEnd; x += 1) {\n                if (x >= width) {\n                    continue;\n                }\n                for (let y = yBinStart; y < yBinEnd; y += 1) {\n                    if (y >= height) {\n                        continue;\n                    }\n                    const i = (width * y + x) * 4;\n                    red += data[i + 0];\n                    green += data[i + 1];\n                    blue += data[i + 2];\n                    alpha += data[i + 3];\n                    pixelsInBin += 1;\n                }\n            }\n            red = red / pixelsInBin;\n            green = green / pixelsInBin;\n            blue = blue / pixelsInBin;\n            alpha = alpha / pixelsInBin;\n            for (let x = xBinStart; x < xBinEnd; x += 1) {\n                if (x >= width) {\n                    continue;\n                }\n                for (let y = yBinStart; y < yBinEnd; y += 1) {\n                    if (y >= height) {\n                        continue;\n                    }\n                    const i = (width * y + x) * 4;\n                    data[i + 0] = red;\n                    data[i + 1] = green;\n                    data[i + 2] = blue;\n                    data[i + 3] = alpha;\n                }\n            }\n        }\n    }\n};\nFactory.addGetterSetter(Node, 'pixelSize', 8, getNumberValidator(), Factory.afterSetFilter);\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Posterize = function (imageData) {\n    const levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels;\n    for (let i = 0; i < len; i += 1) {\n        data[i] = Math.floor(data[i] / scale) * scale;\n    }\n};\nFactory.addGetterSetter(Node, 'levels', 0.5, getNumberValidator(), Factory.afterSetFilter);\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { RGBComponent } from \"../Validators.js\";\nexport const RGB = function (imageData) {\n    const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue();\n    for (let i = 0; i < nPixels; i += 4) {\n        const brightness = (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n        data[i] = brightness * red;\n        data[i + 1] = brightness * green;\n        data[i + 2] = brightness * blue;\n        data[i + 3] = data[i + 3];\n    }\n};\nFactory.addGetterSetter(Node, 'red', 0, function (val) {\n    this._filterUpToDate = false;\n    if (val > 255) {\n        return 255;\n    }\n    else if (val < 0) {\n        return 0;\n    }\n    else {\n        return Math.round(val);\n    }\n});\nFactory.addGetterSetter(Node, 'green', 0, function (val) {\n    this._filterUpToDate = false;\n    if (val > 255) {\n        return 255;\n    }\n    else if (val < 0) {\n        return 0;\n    }\n    else {\n        return Math.round(val);\n    }\n});\nFactory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { RGBComponent } from \"../Validators.js\";\nexport const RGBA = function (imageData) {\n    const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha();\n    for (let i = 0; i < nPixels; i += 4) {\n        const ia = 1 - alpha;\n        data[i] = red * alpha + data[i] * ia;\n        data[i + 1] = green * alpha + data[i + 1] * ia;\n        data[i + 2] = blue * alpha + data[i + 2] * ia;\n    }\n};\nFactory.addGetterSetter(Node, 'red', 0, function (val) {\n    this._filterUpToDate = false;\n    if (val > 255) {\n        return 255;\n    }\n    else if (val < 0) {\n        return 0;\n    }\n    else {\n        return Math.round(val);\n    }\n});\nFactory.addGetterSetter(Node, 'green', 0, function (val) {\n    this._filterUpToDate = false;\n    if (val > 255) {\n        return 255;\n    }\n    else if (val < 0) {\n        return 0;\n    }\n    else {\n        return Math.round(val);\n    }\n});\nFactory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'alpha', 1, function (val) {\n    this._filterUpToDate = false;\n    if (val > 1) {\n        return 1;\n    }\n    else if (val < 0) {\n        return 0;\n    }\n    else {\n        return val;\n    }\n});\n", "export const Sepia = function (imageData) {\n    const data = imageData.data, nPixels = data.length;\n    for (let i = 0; i < nPixels; i += 4) {\n        const r = data[i + 0];\n        const g = data[i + 1];\n        const b = data[i + 2];\n        data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n        data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n        data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n    }\n};\n", "export const Solarize = function (imageData) {\n    const threshold = 128;\n    const d = imageData.data;\n    for (let i = 0; i < d.length; i += 4) {\n        const r = d[i], g = d[i + 1], b = d[i + 2];\n        const L = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n        if (L >= threshold) {\n            d[i] = 255 - r;\n            d[i + 1] = 255 - g;\n            d[i + 2] = 255 - b;\n        }\n    }\n    return imageData;\n};\n", "import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Threshold = function (imageData) {\n    const level = this.threshold() * 255, data = imageData.data, len = data.length;\n    for (let i = 0; i < len; i += 1) {\n        data[i] = data[i] < level ? 0 : 255;\n    }\n};\nFactory.addGetterSetter(Node, 'threshold', 0.5, getNumberValidator(), Factory.afterSetFilter);\n", "import { Konva as Core } from \"./_CoreInternals.js\";\nimport { Arc } from \"./shapes/Arc.js\";\nimport { Arrow } from \"./shapes/Arrow.js\";\nimport { Circle } from \"./shapes/Circle.js\";\nimport { Ellipse } from \"./shapes/Ellipse.js\";\nimport { Image } from \"./shapes/Image.js\";\nimport { Label, Tag } from \"./shapes/Label.js\";\nimport { Line } from \"./shapes/Line.js\";\nimport { Path } from \"./shapes/Path.js\";\nimport { Rect } from \"./shapes/Rect.js\";\nimport { RegularPolygon } from \"./shapes/RegularPolygon.js\";\nimport { Ring } from \"./shapes/Ring.js\";\nimport { Sprite } from \"./shapes/Sprite.js\";\nimport { Star } from \"./shapes/Star.js\";\nimport { Text } from \"./shapes/Text.js\";\nimport { TextPath } from \"./shapes/TextPath.js\";\nimport { Transformer } from \"./shapes/Transformer.js\";\nimport { Wedge } from \"./shapes/Wedge.js\";\nimport { Blur } from \"./filters/Blur.js\";\nimport { Brighten } from \"./filters/Brighten.js\";\nimport { Brightness } from \"./filters/Brightness.js\";\nimport { Contrast } from \"./filters/Contrast.js\";\nimport { Emboss } from \"./filters/Emboss.js\";\nimport { Enhance } from \"./filters/Enhance.js\";\nimport { Grayscale } from \"./filters/Grayscale.js\";\nimport { HSL } from \"./filters/HSL.js\";\nimport { HSV } from \"./filters/HSV.js\";\nimport { Invert } from \"./filters/Invert.js\";\nimport { Kaleidoscope } from \"./filters/Kaleidoscope.js\";\nimport { Mask } from \"./filters/Mask.js\";\nimport { Noise } from \"./filters/Noise.js\";\nimport { Pixelate } from \"./filters/Pixelate.js\";\nimport { Posterize } from \"./filters/Posterize.js\";\nimport { RGB } from \"./filters/RGB.js\";\nimport { RGBA } from \"./filters/RGBA.js\";\nimport { Sepia } from \"./filters/Sepia.js\";\nimport { Solarize } from \"./filters/Solarize.js\";\nimport { Threshold } from \"./filters/Threshold.js\";\nexport const Konva = Core.Util._assign(Core, {\n    Arc,\n    Arrow,\n    Circle,\n    Ellipse,\n    Image,\n    Label,\n    Tag,\n    Line,\n    Path,\n    Rect,\n    RegularPolygon,\n    Ring,\n    Sprite,\n    Star,\n    Text,\n    TextPath,\n    Transformer,\n    Wedge,\n    Filters: {\n        Blur,\n        Brightness,\n        Brighten,\n        Contrast,\n        Emboss,\n        Enhance,\n        Grayscale,\n        HSL,\n        HSV,\n        Invert,\n        Kaleidoscope,\n        Mask,\n        Noise,\n        Pixelate,\n        Posterize,\n        RGB,\n        RGBA,\n        Sepia,\n        Solarize,\n        Threshold,\n    },\n});\n", "import { Konva } from \"./_FullInternals.js\";\nexport default Konva;\n", "// Custom TailwindCSS modals for confirm dialogs\n//\n// Example usage:\n//\n//   <%= button_to \"Delete\", my_path, method: :delete, form: {\n//     data: {\n//       turbo_confirm: \"Are you sure?\",\n//       turbo_confirm_description: \"This will delete your record. Enter the record name to confirm.\",\n//       turbo_confirm_text: \"record name\"\n//     }\n//   } %>\n\nfunction insertConfirmModal(message, element, button) {\n  let confirmInput = \"\"\n\n  // button is nil if using link_to with data-turbo-confirm\n  let confirmText = button?.dataset?.turboConfirmText || element.dataset.turboConfirmText\n  let description = button?.dataset?.turboConfirmDescription || element.dataset.turboConfirmDescription || \"\"\n  if (confirmText) {\n    confirmInput = `<input type=\"text\" class=\"mt-4 form-control\" data-behavior=\"confirm-text\" />`\n  }\n  let id = `confirm-modal-${new Date().getTime()}`\n\n  let content = `\n    <div id=\"${id}\" class=\"z-50 bg-black/80 animated fadeIn fixed top-0 left-0 w-full h-full table backdrop-blur-sm\">\n      <div class=\"table-cell align-middle\">\n\n        <div class=\"bg-white mx-auto rounded shadow p-8 max-w-md dark:bg-gray-800\">\n          <h5>${message}</h5>\n          <p class=\"mt-4 text-sm text-gray-700\">${description}</p>\n\n          ${confirmInput}\n\n          <div class=\"flex justify-end items-center flex-wrap gap-2 mt-6\">\n            <button data-behavior=\"cancel\" class=\"btn btn-white\">Cancel</button>\n            <button data-behavior=\"commit\" class=\"btn btn-danger focus:outline-none\">Confirm</button>\n          </div>\n        </div>\n      </div>\n    </div>\n  `\n\n  document.body.insertAdjacentHTML('beforeend', content)\n  let modal = document.getElementById(id)\n\n  // Focus on the first button in the modal after rendering\n  modal.querySelector(\"button\").focus()\n\n  // Disable commit button until the value matches confirmText\n  if (confirmText) {\n    let commitButton = modal.querySelector(\"[data-behavior='commit']\")\n    commitButton.disabled = true\n    modal.querySelector(\"input[data-behavior='confirm-text']\").addEventListener(\"input\", (event) => {\n      commitButton.disabled = (event.target.value != confirmText)\n    })\n  }\n\n  return modal\n}\n\nfunction confirmMethod(message, element, button) {\n  let dialog = insertConfirmModal(message, element, button)\n\n  return new Promise((resolve, reject) => {\n    dialog.querySelector(\"[data-behavior='cancel']\").addEventListener(\"click\", (event) => {\n      dialog.remove()\n      resolve(false)\n    }, { once: true })\n    dialog.querySelector(\"[data-behavior='commit']\").addEventListener(\"click\", (event) => {\n      dialog.remove()\n      resolve(true)\n    }, { once: true })\n  })\n}\n\nTurbo.config.forms.confirm = confirmMethod\n", "addEventListener(\"direct-upload:initialize\", event => {\n  const { target, detail } = event\n  const { id, file } = detail\n  target.insertAdjacentHTML(\"beforebegin\", `\n    <div id=\"direct-upload-${id}\" class=\"direct-upload direct-upload--pending\">\n      <div id=\"direct-upload-progress-${id}\" class=\"direct-upload__progress\" style=\"width: 0%\"></div>\n      <span class=\"direct-upload__filename\">${file.name}</span>\n    </div>\n  `)\n})\n\naddEventListener(\"direct-upload:start\", event => {\n  const { id } = event.detail\n  const element = document.getElementById(`direct-upload-${id}`)\n  element.classList.remove(\"direct-upload--pending\")\n})\n\naddEventListener(\"direct-upload:progress\", event => {\n  const { id, progress } = event.detail\n  const progressElement = document.getElementById(`direct-upload-progress-${id}`)\n  progressElement.style.width = `${progress}%`\n})\n\naddEventListener(\"direct-upload:error\", event => {\n  event.preventDefault()\n  const { id, error } = event.detail\n  const element = document.getElementById(`direct-upload-${id}`)\n  element.classList.add(\"direct-upload--error\")\n  element.setAttribute(\"title\", error)\n})\n\naddEventListener(\"direct-upload:end\", event => {\n  const { id } = event.detail\n  const element = document.getElementById(`direct-upload-${id}`)\n  element.classList.add(\"direct-upload--complete\")\n})\n", "// Lazily loads elements with a data-src attribute.\n// This is useful for speeding up initial page rendering.\n//\n// <img data-src=\"/assets/img.png\" />\n// <iframe data-src=\"https://youtube.com\"></iframe>\n\ndocument.addEventListener(\"turbo:load\", () => {\n  document.querySelectorAll('[data-src]').forEach((element) =>{\n    element.setAttribute('src', element.getAttribute('data-src'))\n  })\n})\n", "(function (root) {/*global exports, Intl*/\n/**\n * This script gives you the zone info key representing your device's time zone setting.\n *\n * @name jsTimezoneDetect\n * @version 1.0.6\n * @author Jon Nylander\n * @license MIT License - https://bitbucket.org/pellepim/jstimezonedetect/src/default/LICENCE.txt\n *\n * For usage and examples, visit:\n * http://pellepim.bitbucket.org/jstz/\n *\n * Copyright (c) Jon Nylander\n */\n\n\n/**\n * Namespace to hold all the code for timezone detection.\n */\nvar jstz = (function () {\n    'use strict';\n    var HEMISPHERE_SOUTH = 's',\n\n        consts = {\n            DAY: 86400000,\n            HOUR: 3600000,\n            MINUTE: 60000,\n            SECOND: 1000,\n            BASELINE_YEAR: 2014,\n            MAX_SCORE: 864000000, // 10 days\n            AMBIGUITIES: {\n                'America/Denver':       ['America/Mazatlan'],\n                'Europe/London':        ['Africa/Casablanca'],\n                'America/Chicago':      ['America/Mexico_City'],\n                'America/Asuncion':     ['America/Campo_Grande', 'America/Santiago'],\n                'America/Montevideo':   ['America/Sao_Paulo', 'America/Santiago'],\n                // Europe/Minsk should not be in this list... but Windows.\n                'Asia/Beirut':          ['Asia/Amman', 'Asia/Jerusalem', 'Europe/Helsinki', 'Asia/Damascus', 'Africa/Cairo', 'Asia/Gaza', 'Europe/Minsk'],\n                'Pacific/Auckland':     ['Pacific/Fiji'],\n                'America/Los_Angeles':  ['America/Santa_Isabel'],\n                'America/New_York':     ['America/Havana'],\n                'America/Halifax':      ['America/Goose_Bay'],\n                'America/Godthab':      ['America/Miquelon'],\n                'Asia/Dubai':           ['Asia/Yerevan'],\n                'Asia/Jakarta':         ['Asia/Krasnoyarsk'],\n                'Asia/Shanghai':        ['Asia/Irkutsk', 'Australia/Perth'],\n                'Australia/Sydney':     ['Australia/Lord_Howe'],\n                'Asia/Tokyo':           ['Asia/Yakutsk'],\n                'Asia/Dhaka':           ['Asia/Omsk'],\n                // In the real world Yerevan is not ambigous for Baku... but Windows.\n                'Asia/Baku':            ['Asia/Yerevan'],\n                'Australia/Brisbane':   ['Asia/Vladivostok'],\n                'Pacific/Noumea':       ['Asia/Vladivostok'],\n                'Pacific/Majuro':       ['Asia/Kamchatka', 'Pacific/Fiji'],\n                'Pacific/Tongatapu':    ['Pacific/Apia'],\n                'Asia/Baghdad':         ['Europe/Minsk', 'Europe/Moscow'],\n                'Asia/Karachi':         ['Asia/Yekaterinburg'],\n                'Africa/Johannesburg':  ['Asia/Gaza', 'Africa/Cairo']\n            }\n        },\n\n        /**\n         * Gets the offset in minutes from UTC for a certain date.\n         * @param {Date} date\n         * @returns {Number}\n         */\n        get_date_offset = function get_date_offset(date) {\n            var offset = -date.getTimezoneOffset();\n            return (offset !== null ? offset : 0);\n        },\n\n        /**\n         * This function does some basic calculations to create information about\n         * the user's timezone. It uses REFERENCE_YEAR as a solid year for which\n         * the script has been tested rather than depend on the year set by the\n         * client device.\n         *\n         * Returns a key that can be used to do lookups in jstz.olson.timezones.\n         * eg: \"720,1,2\".\n         *\n         * @returns {String}\n         */\n        lookup_key = function lookup_key() {\n            var january_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 0, 2)),\n                june_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 5, 2)),\n                diff = january_offset - june_offset;\n\n            if (diff < 0) {\n                return january_offset + \",1\";\n            } else if (diff > 0) {\n                return june_offset + \",1,\" + HEMISPHERE_SOUTH;\n            }\n\n            return january_offset + \",0\";\n        },\n\n\n        /**\n         * Tries to get the time zone key directly from the operating system for those\n         * environments that support the ECMAScript Internationalization API.\n         */\n        get_from_internationalization_api = function get_from_internationalization_api() {\n            var format, timezone;\n            if (typeof Intl === \"undefined\" || typeof Intl.DateTimeFormat === \"undefined\") {\n                return;\n            }\n            format = Intl.DateTimeFormat();\n            if (typeof format === \"undefined\" || typeof format.resolvedOptions === \"undefined\") {\n                return;\n            }\n            timezone = format.resolvedOptions().timeZone;\n            if (timezone && (timezone.indexOf(\"/\") > -1 || timezone === 'UTC') && timezone.indexOf(\"Etc\") != 0) {\n                return timezone;\n            }\n        },\n\n        /**\n         * Starting point for getting all the DST rules for a specific year\n         * for the current timezone (as described by the client system).\n         *\n         * Returns an object with start and end attributes, or false if no\n         * DST rules were found for the year.\n         *\n         * @param year\n         * @returns {Object} || {Boolean}\n         */\n        dst_dates = function dst_dates(year) {\n            var yearstart = new Date(year, 0, 1, 0, 0, 1, 0).getTime();\n            var yearend = new Date(year, 12, 31, 23, 59, 59).getTime();\n            var current = yearstart;\n            var offset = (new Date(current)).getTimezoneOffset();\n            var dst_start = null;\n            var dst_end = null;\n\n            while (current < yearend - 86400000) {\n                var dateToCheck = new Date(current);\n                var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n                if (dateToCheckOffset !== offset) {\n                    if (dateToCheckOffset < offset) {\n                        dst_start = dateToCheck;\n                    }\n                    if (dateToCheckOffset > offset) {\n                        dst_end = dateToCheck;\n                    }\n                    offset = dateToCheckOffset;\n                }\n\n                current += 86400000;\n            }\n\n            if (dst_start && dst_end) {\n                return {\n                    s: find_dst_fold(dst_start).getTime(),\n                    e: find_dst_fold(dst_end).getTime()\n                };\n            }\n\n            return false;\n        },\n\n        /**\n         * Probably completely unnecessary function that recursively finds the\n         * exact (to the second) time when a DST rule was changed.\n         *\n         * @param a_date - The candidate Date.\n         * @param padding - integer specifying the padding to allow around the candidate\n         *                  date for finding the fold.\n         * @param iterator - integer specifying how many milliseconds to iterate while\n         *                   searching for the fold.\n         *\n         * @returns {Date}\n         */\n        find_dst_fold = function find_dst_fold(a_date, padding, iterator) {\n            if (typeof padding === 'undefined') {\n                padding = consts.DAY;\n                iterator = consts.HOUR;\n            }\n\n            var date_start = new Date(a_date.getTime() - padding).getTime();\n            var date_end = a_date.getTime() + padding;\n            var offset = new Date(date_start).getTimezoneOffset();\n\n            var current = date_start;\n\n            var dst_change = null;\n            while (current < date_end - iterator) {\n                var dateToCheck = new Date(current);\n                var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n                if (dateToCheckOffset !== offset) {\n                    dst_change = dateToCheck;\n                    break;\n                }\n                current += iterator;\n            }\n\n            if (padding === consts.DAY) {\n                return find_dst_fold(dst_change, consts.HOUR, consts.MINUTE);\n            }\n\n            if (padding === consts.HOUR) {\n                return find_dst_fold(dst_change, consts.MINUTE, consts.SECOND);\n            }\n\n            return dst_change;\n        },\n\n        windows7_adaptations = function windows7_adaptions(rule_list, preliminary_timezone, score, sample) {\n            if (score !== 'N/A') {\n                return score;\n            }\n            if (preliminary_timezone === 'Asia/Beirut') {\n                if (sample.name === 'Africa/Cairo') {\n                    if (rule_list[6].s === 1398376800000 && rule_list[6].e === 1411678800000) {\n                        return 0;\n                    }\n                }\n                if (sample.name === 'Asia/Jerusalem') {\n                    if (rule_list[6].s === 1395964800000 && rule_list[6].e === 1411858800000) {\n                        return 0;\n                }\n            }\n            } else if (preliminary_timezone === 'America/Santiago') {\n                if (sample.name === 'America/Asuncion') {\n                    if (rule_list[6].s === 1412481600000 && rule_list[6].e === 1397358000000) {\n                        return 0;\n                    }\n                }\n                if (sample.name === 'America/Campo_Grande') {\n                    if (rule_list[6].s === 1413691200000 && rule_list[6].e === 1392519600000) {\n                        return 0;\n                    }\n                }\n            } else if (preliminary_timezone === 'America/Montevideo') {\n                if (sample.name === 'America/Sao_Paulo') {\n                    if (rule_list[6].s === 1413687600000 && rule_list[6].e === 1392516000000) {\n                        return 0;\n                    }\n                }\n            } else if (preliminary_timezone === 'Pacific/Auckland') {\n                if (sample.name === 'Pacific/Fiji') {\n                    if (rule_list[6].s === 1414245600000 && rule_list[6].e === 1396101600000) {\n                        return 0;\n                    }\n                }\n            }\n\n            return score;\n        },\n\n        /**\n         * Takes the DST rules for the current timezone, and proceeds to find matches\n         * in the jstz.olson.dst_rules.zones array.\n         *\n         * Compares samples to the current timezone on a scoring basis.\n         *\n         * Candidates are ruled immediately if either the candidate or the current zone\n         * has a DST rule where the other does not.\n         *\n         * Candidates are ruled out immediately if the current zone has a rule that is\n         * outside the DST scope of the candidate.\n         *\n         * Candidates are included for scoring if the current zones rules fall within the\n         * span of the samples rules.\n         *\n         * Low score is best, the score is calculated by summing up the differences in DST\n         * rules and if the consts.MAX_SCORE is overreached the candidate is ruled out.\n         *\n         * Yah follow? :)\n         *\n         * @param rule_list\n         * @param preliminary_timezone\n         * @returns {*}\n         */\n        best_dst_match = function best_dst_match(rule_list, preliminary_timezone) {\n            var score_sample = function score_sample(sample) {\n                var score = 0;\n\n                for (var j = 0; j < rule_list.length; j++) {\n\n                    // Both sample and current time zone report DST during the year.\n                    if (!!sample.rules[j] && !!rule_list[j]) {\n\n                        // The current time zone's DST rules are inside the sample's. Include.\n                        if (rule_list[j].s >= sample.rules[j].s && rule_list[j].e <= sample.rules[j].e) {\n                            score = 0;\n                            score += Math.abs(rule_list[j].s - sample.rules[j].s);\n                            score += Math.abs(sample.rules[j].e - rule_list[j].e);\n\n                        // The current time zone's DST rules are outside the sample's. Discard.\n                        } else {\n                            score = 'N/A';\n                            break;\n                        }\n\n                        // The max score has been reached. Discard.\n                        if (score > consts.MAX_SCORE) {\n                            score = 'N/A';\n                            break;\n                        }\n                    }\n                }\n\n                score = windows7_adaptations(rule_list, preliminary_timezone, score, sample);\n\n                return score;\n            };\n            var scoreboard = {};\n            var dst_zones = jstz.olson.dst_rules.zones;\n            var dst_zones_length = dst_zones.length;\n            var ambiguities = consts.AMBIGUITIES[preliminary_timezone];\n\n            for (var i = 0; i < dst_zones_length; i++) {\n                var sample = dst_zones[i];\n                var score = score_sample(dst_zones[i]);\n\n                if (score !== 'N/A') {\n                    scoreboard[sample.name] = score;\n                }\n            }\n\n            for (var tz in scoreboard) {\n                if (scoreboard.hasOwnProperty(tz)) {\n                    for (var j = 0; j < ambiguities.length; j++) {\n                        if (ambiguities[j] === tz) {\n                        return tz;\n                        }\n                    }\n                }\n            }\n\n            return preliminary_timezone;\n        },\n\n        /**\n         * Takes the preliminary_timezone as detected by lookup_key().\n         *\n         * Builds up the current timezones DST rules for the years defined\n         * in the jstz.olson.dst_rules.years array.\n         *\n         * If there are no DST occurences for those years, immediately returns\n         * the preliminary timezone. Otherwise proceeds and tries to solve\n         * ambiguities.\n         *\n         * @param preliminary_timezone\n         * @returns {String} timezone_name\n         */\n        get_by_dst = function get_by_dst(preliminary_timezone) {\n            var get_rules = function get_rules() {\n                var rule_list = [];\n                for (var i = 0; i < jstz.olson.dst_rules.years.length; i++) {\n                    var year_rules = dst_dates(jstz.olson.dst_rules.years[i]);\n                    rule_list.push(year_rules);\n                }\n                return rule_list;\n            };\n            var check_has_dst = function check_has_dst(rules) {\n                for (var i = 0; i < rules.length; i++) {\n                    if (rules[i] !== false) {\n                        return true;\n                    }\n                }\n                return false;\n            };\n            var rules = get_rules();\n            var has_dst = check_has_dst(rules);\n\n            if (has_dst) {\n                return best_dst_match(rules, preliminary_timezone);\n            }\n\n            return preliminary_timezone;\n        },\n\n        /**\n         * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary.\n         *\n         * Returns an object with one function \".name()\"\n         *\n         * @returns Object\n         */\n        determine = function determine() {\n            var preliminary_tz = get_from_internationalization_api();\n\n            if (!preliminary_tz) {\n                preliminary_tz = jstz.olson.timezones[lookup_key()];\n\n                if (typeof consts.AMBIGUITIES[preliminary_tz] !== 'undefined') {\n                    preliminary_tz = get_by_dst(preliminary_tz);\n                }\n            }\n\n            return {\n                name: function () {\n                    return preliminary_tz;\n                },\n                stdTimezoneOffset : function () {\n                    // negative to match what (new Date).getTimezoneOffset() will return\n                    return -lookup_key().split(',')[0];\n                },\n                timezoneOffset : function () {\n                    // negative to match what (new Date).getTimezoneOffset() will return\n                    return -get_date_offset(new Date())\n                }\n            };\n        };\n\n    return {\n        determine: determine\n    };\n}());\n\n\njstz.olson = jstz.olson || {};\n\n/**\n * The keys in this dictionary are comma separated as such:\n *\n * First the offset compared to UTC time in minutes.\n *\n * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it\n * does.\n *\n * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere,\n * only interesting for timezones with DST.\n *\n * The mapped arrays is used for constructing the jstz.TimeZone object from within\n * jstz.determine();\n */\njstz.olson.timezones = {\n    '-720,0': 'Etc/GMT+12',\n    '-660,0': 'Pacific/Pago_Pago',\n    '-660,1,s': 'Pacific/Apia', // Why? Because windows... cry!\n    '-600,1': 'America/Adak',\n    '-600,0': 'Pacific/Honolulu',\n    '-570,0': 'Pacific/Marquesas',\n    '-540,0': 'Pacific/Gambier',\n    '-540,1': 'America/Anchorage',\n    '-480,1': 'America/Los_Angeles',\n    '-480,0': 'Pacific/Pitcairn',\n    '-420,0': 'America/Phoenix',\n    '-420,1': 'America/Denver',\n    '-360,0': 'America/Guatemala',\n    '-360,1': 'America/Chicago',\n    '-360,1,s': 'Pacific/Easter',\n    '-300,0': 'America/Bogota',\n    '-300,1': 'America/New_York',\n    '-270,0': 'America/Caracas',\n    '-240,1': 'America/Halifax',\n    '-240,0': 'America/Santo_Domingo',\n    '-240,1,s': 'America/Asuncion',\n    '-210,1': 'America/St_Johns',\n    '-180,1': 'America/Godthab',\n    '-180,0': 'America/Argentina/Buenos_Aires',\n    '-180,1,s': 'America/Montevideo',\n    '-120,0': 'America/Noronha',\n    '-120,1': 'America/Noronha',\n    '-60,1': 'Atlantic/Azores',\n    '-60,0': 'Atlantic/Cape_Verde',\n    '0,0': 'UTC',\n    '0,1': 'Europe/London',\n    '60,1': 'Europe/Berlin',\n    '60,0': 'Africa/Lagos',\n    '60,1,s': 'Africa/Windhoek',\n    '120,1': 'Asia/Beirut',\n    '120,0': 'Africa/Johannesburg',\n    '180,0': 'Asia/Baghdad',\n    '180,1': 'Europe/Moscow',\n    '210,1': 'Asia/Tehran',\n    '240,0': 'Asia/Dubai',\n    '240,1': 'Asia/Baku',\n    '270,0': 'Asia/Kabul',\n    '300,1': 'Asia/Yekaterinburg',\n    '300,0': 'Asia/Karachi',\n    '330,0': 'Asia/Kolkata',\n    '345,0': 'Asia/Kathmandu',\n    '360,0': 'Asia/Dhaka',\n    '360,1': 'Asia/Omsk',\n    '390,0': 'Asia/Rangoon',\n    '420,1': 'Asia/Krasnoyarsk',\n    '420,0': 'Asia/Jakarta',\n    '480,0': 'Asia/Shanghai',\n    '480,1': 'Asia/Irkutsk',\n    '525,0': 'Australia/Eucla',\n    '525,1,s': 'Australia/Eucla',\n    '540,1': 'Asia/Yakutsk',\n    '540,0': 'Asia/Tokyo',\n    '570,0': 'Australia/Darwin',\n    '570,1,s': 'Australia/Adelaide',\n    '600,0': 'Australia/Brisbane',\n    '600,1': 'Asia/Vladivostok',\n    '600,1,s': 'Australia/Sydney',\n    '630,1,s': 'Australia/Lord_Howe',\n    '660,1': 'Asia/Kamchatka',\n    '660,0': 'Pacific/Noumea',\n    '690,0': 'Pacific/Norfolk',\n    '720,1,s': 'Pacific/Auckland',\n    '720,0': 'Pacific/Majuro',\n    '765,1,s': 'Pacific/Chatham',\n    '780,0': 'Pacific/Tongatapu',\n    '780,1,s': 'Pacific/Apia',\n    '840,0': 'Pacific/Kiritimati'\n};\n\n/* Build time: 2015-11-02 13:01:00Z Build by invoking python utilities/dst.py generate */\njstz.olson.dst_rules = {\n    \"years\": [\n        2008,\n        2009,\n        2010,\n        2011,\n        2012,\n        2013,\n        2014\n    ],\n    \"zones\": [\n        {\n            \"name\": \"Africa/Cairo\",\n            \"rules\": [\n                {\n                    \"e\": 1219957200000,\n                    \"s\": 1209074400000\n                },\n                {\n                    \"e\": 1250802000000,\n                    \"s\": 1240524000000\n                },\n                {\n                    \"e\": 1285880400000,\n                    \"s\": 1284069600000\n                },\n                false,\n                false,\n                false,\n                {\n                    \"e\": 1411678800000,\n                    \"s\": 1406844000000\n                }\n            ]\n        },\n        {\n            \"name\": \"Africa/Casablanca\",\n            \"rules\": [\n                {\n                    \"e\": 1220223600000,\n                    \"s\": 1212278400000\n                },\n                {\n                    \"e\": 1250809200000,\n                    \"s\": 1243814400000\n                },\n                {\n                    \"e\": 1281222000000,\n                    \"s\": 1272758400000\n                },\n                {\n                    \"e\": 1312066800000,\n                    \"s\": 1301788800000\n                },\n                {\n                    \"e\": 1348970400000,\n                    \"s\": 1345428000000\n                },\n                {\n                    \"e\": 1382839200000,\n                    \"s\": 1376100000000\n                },\n                {\n                    \"e\": 1414288800000,\n                    \"s\": 1406944800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Asuncion\",\n            \"rules\": [\n                {\n                    \"e\": 1205031600000,\n                    \"s\": 1224388800000\n                },\n                {\n                    \"e\": 1236481200000,\n                    \"s\": 1255838400000\n                },\n                {\n                    \"e\": 1270954800000,\n                    \"s\": 1286078400000\n                },\n                {\n                    \"e\": 1302404400000,\n                    \"s\": 1317528000000\n                },\n                {\n                    \"e\": 1333854000000,\n                    \"s\": 1349582400000\n                },\n                {\n                    \"e\": 1364094000000,\n                    \"s\": 1381032000000\n                },\n                {\n                    \"e\": 1395543600000,\n                    \"s\": 1412481600000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Campo_Grande\",\n            \"rules\": [\n                {\n                    \"e\": 1203217200000,\n                    \"s\": 1224388800000\n                },\n                {\n                    \"e\": 1234666800000,\n                    \"s\": 1255838400000\n                },\n                {\n                    \"e\": 1266721200000,\n                    \"s\": 1287288000000\n                },\n                {\n                    \"e\": 1298170800000,\n                    \"s\": 1318737600000\n                },\n                {\n                    \"e\": 1330225200000,\n                    \"s\": 1350792000000\n                },\n                {\n                    \"e\": 1361070000000,\n                    \"s\": 1382241600000\n                },\n                {\n                    \"e\": 1392519600000,\n                    \"s\": 1413691200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Goose_Bay\",\n            \"rules\": [\n                {\n                    \"e\": 1225594860000,\n                    \"s\": 1205035260000\n                },\n                {\n                    \"e\": 1257044460000,\n                    \"s\": 1236484860000\n                },\n                {\n                    \"e\": 1289098860000,\n                    \"s\": 1268539260000\n                },\n                {\n                    \"e\": 1320555600000,\n                    \"s\": 1299988860000\n                },\n                {\n                    \"e\": 1352005200000,\n                    \"s\": 1331445600000\n                },\n                {\n                    \"e\": 1383454800000,\n                    \"s\": 1362895200000\n                },\n                {\n                    \"e\": 1414904400000,\n                    \"s\": 1394344800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Havana\",\n            \"rules\": [\n                {\n                    \"e\": 1224997200000,\n                    \"s\": 1205643600000\n                },\n                {\n                    \"e\": 1256446800000,\n                    \"s\": 1236488400000\n                },\n                {\n                    \"e\": 1288501200000,\n                    \"s\": 1268542800000\n                },\n                {\n                    \"e\": 1321160400000,\n                    \"s\": 1300597200000\n                },\n                {\n                    \"e\": 1352005200000,\n                    \"s\": 1333256400000\n                },\n                {\n                    \"e\": 1383454800000,\n                    \"s\": 1362891600000\n                },\n                {\n                    \"e\": 1414904400000,\n                    \"s\": 1394341200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Mazatlan\",\n            \"rules\": [\n                {\n                    \"e\": 1225008000000,\n                    \"s\": 1207472400000\n                },\n                {\n                    \"e\": 1256457600000,\n                    \"s\": 1238922000000\n                },\n                {\n                    \"e\": 1288512000000,\n                    \"s\": 1270371600000\n                },\n                {\n                    \"e\": 1319961600000,\n                    \"s\": 1301821200000\n                },\n                {\n                    \"e\": 1351411200000,\n                    \"s\": 1333270800000\n                },\n                {\n                    \"e\": 1382860800000,\n                    \"s\": 1365325200000\n                },\n                {\n                    \"e\": 1414310400000,\n                    \"s\": 1396774800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Mexico_City\",\n            \"rules\": [\n                {\n                    \"e\": 1225004400000,\n                    \"s\": 1207468800000\n                },\n                {\n                    \"e\": 1256454000000,\n                    \"s\": 1238918400000\n                },\n                {\n                    \"e\": 1288508400000,\n                    \"s\": 1270368000000\n                },\n                {\n                    \"e\": 1319958000000,\n                    \"s\": 1301817600000\n                },\n                {\n                    \"e\": 1351407600000,\n                    \"s\": 1333267200000\n                },\n                {\n                    \"e\": 1382857200000,\n                    \"s\": 1365321600000\n                },\n                {\n                    \"e\": 1414306800000,\n                    \"s\": 1396771200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Miquelon\",\n            \"rules\": [\n                {\n                    \"e\": 1225598400000,\n                    \"s\": 1205038800000\n                },\n                {\n                    \"e\": 1257048000000,\n                    \"s\": 1236488400000\n                },\n                {\n                    \"e\": 1289102400000,\n                    \"s\": 1268542800000\n                },\n                {\n                    \"e\": 1320552000000,\n                    \"s\": 1299992400000\n                },\n                {\n                    \"e\": 1352001600000,\n                    \"s\": 1331442000000\n                },\n                {\n                    \"e\": 1383451200000,\n                    \"s\": 1362891600000\n                },\n                {\n                    \"e\": 1414900800000,\n                    \"s\": 1394341200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Santa_Isabel\",\n            \"rules\": [\n                {\n                    \"e\": 1225011600000,\n                    \"s\": 1207476000000\n                },\n                {\n                    \"e\": 1256461200000,\n                    \"s\": 1238925600000\n                },\n                {\n                    \"e\": 1288515600000,\n                    \"s\": 1270375200000\n                },\n                {\n                    \"e\": 1319965200000,\n                    \"s\": 1301824800000\n                },\n                {\n                    \"e\": 1351414800000,\n                    \"s\": 1333274400000\n                },\n                {\n                    \"e\": 1382864400000,\n                    \"s\": 1365328800000\n                },\n                {\n                    \"e\": 1414314000000,\n                    \"s\": 1396778400000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Santiago\",\n            \"rules\": [\n                {\n                    \"e\": 1206846000000,\n                    \"s\": 1223784000000\n                },\n                {\n                    \"e\": 1237086000000,\n                    \"s\": 1255233600000\n                },\n                {\n                    \"e\": 1270350000000,\n                    \"s\": 1286683200000\n                },\n                {\n                    \"e\": 1304823600000,\n                    \"s\": 1313899200000\n                },\n                {\n                    \"e\": 1335668400000,\n                    \"s\": 1346558400000\n                },\n                {\n                    \"e\": 1367118000000,\n                    \"s\": 1378612800000\n                },\n                {\n                    \"e\": 1398567600000,\n                    \"s\": 1410062400000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Sao_Paulo\",\n            \"rules\": [\n                {\n                    \"e\": 1203213600000,\n                    \"s\": 1224385200000\n                },\n                {\n                    \"e\": 1234663200000,\n                    \"s\": 1255834800000\n                },\n                {\n                    \"e\": 1266717600000,\n                    \"s\": 1287284400000\n                },\n                {\n                    \"e\": 1298167200000,\n                    \"s\": 1318734000000\n                },\n                {\n                    \"e\": 1330221600000,\n                    \"s\": 1350788400000\n                },\n                {\n                    \"e\": 1361066400000,\n                    \"s\": 1382238000000\n                },\n                {\n                    \"e\": 1392516000000,\n                    \"s\": 1413687600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Amman\",\n            \"rules\": [\n                {\n                    \"e\": 1225404000000,\n                    \"s\": 1206655200000\n                },\n                {\n                    \"e\": 1256853600000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1288303200000,\n                    \"s\": 1269554400000\n                },\n                {\n                    \"e\": 1319752800000,\n                    \"s\": 1301608800000\n                },\n                false,\n                false,\n                {\n                    \"e\": 1414706400000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Damascus\",\n            \"rules\": [\n                {\n                    \"e\": 1225486800000,\n                    \"s\": 1207260000000\n                },\n                {\n                    \"e\": 1256850000000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1288299600000,\n                    \"s\": 1270159200000\n                },\n                {\n                    \"e\": 1319749200000,\n                    \"s\": 1301608800000\n                },\n                {\n                    \"e\": 1351198800000,\n                    \"s\": 1333058400000\n                },\n                {\n                    \"e\": 1382648400000,\n                    \"s\": 1364508000000\n                },\n                {\n                    \"e\": 1414702800000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Dubai\",\n            \"rules\": [\n                false,\n                false,\n                false,\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Gaza\",\n            \"rules\": [\n                {\n                    \"e\": 1219957200000,\n                    \"s\": 1206655200000\n                },\n                {\n                    \"e\": 1252015200000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1281474000000,\n                    \"s\": 1269640860000\n                },\n                {\n                    \"e\": 1312146000000,\n                    \"s\": 1301608860000\n                },\n                {\n                    \"e\": 1348178400000,\n                    \"s\": 1333058400000\n                },\n                {\n                    \"e\": 1380229200000,\n                    \"s\": 1364508000000\n                },\n                {\n                    \"e\": 1414098000000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Irkutsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224957600000,\n                    \"s\": 1206813600000\n                },\n                {\n                    \"e\": 1256407200000,\n                    \"s\": 1238263200000\n                },\n                {\n                    \"e\": 1288461600000,\n                    \"s\": 1269712800000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Jerusalem\",\n            \"rules\": [\n                {\n                    \"e\": 1223161200000,\n                    \"s\": 1206662400000\n                },\n                {\n                    \"e\": 1254006000000,\n                    \"s\": 1238112000000\n                },\n                {\n                    \"e\": 1284246000000,\n                    \"s\": 1269561600000\n                },\n                {\n                    \"e\": 1317510000000,\n                    \"s\": 1301616000000\n                },\n                {\n                    \"e\": 1348354800000,\n                    \"s\": 1333065600000\n                },\n                {\n                    \"e\": 1382828400000,\n                    \"s\": 1364515200000\n                },\n                {\n                    \"e\": 1414278000000,\n                    \"s\": 1395964800000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Kamchatka\",\n            \"rules\": [\n                {\n                    \"e\": 1224943200000,\n                    \"s\": 1206799200000\n                },\n                {\n                    \"e\": 1256392800000,\n                    \"s\": 1238248800000\n                },\n                {\n                    \"e\": 1288450800000,\n                    \"s\": 1269698400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Krasnoyarsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224961200000,\n                    \"s\": 1206817200000\n                },\n                {\n                    \"e\": 1256410800000,\n                    \"s\": 1238266800000\n                },\n                {\n                    \"e\": 1288465200000,\n                    \"s\": 1269716400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Omsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224964800000,\n                    \"s\": 1206820800000\n                },\n                {\n                    \"e\": 1256414400000,\n                    \"s\": 1238270400000\n                },\n                {\n                    \"e\": 1288468800000,\n                    \"s\": 1269720000000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Vladivostok\",\n            \"rules\": [\n                {\n                    \"e\": 1224950400000,\n                    \"s\": 1206806400000\n                },\n                {\n                    \"e\": 1256400000000,\n                    \"s\": 1238256000000\n                },\n                {\n                    \"e\": 1288454400000,\n                    \"s\": 1269705600000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yakutsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224954000000,\n                    \"s\": 1206810000000\n                },\n                {\n                    \"e\": 1256403600000,\n                    \"s\": 1238259600000\n                },\n                {\n                    \"e\": 1288458000000,\n                    \"s\": 1269709200000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yekaterinburg\",\n            \"rules\": [\n                {\n                    \"e\": 1224968400000,\n                    \"s\": 1206824400000\n                },\n                {\n                    \"e\": 1256418000000,\n                    \"s\": 1238274000000\n                },\n                {\n                    \"e\": 1288472400000,\n                    \"s\": 1269723600000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yerevan\",\n            \"rules\": [\n                {\n                    \"e\": 1224972000000,\n                    \"s\": 1206828000000\n                },\n                {\n                    \"e\": 1256421600000,\n                    \"s\": 1238277600000\n                },\n                {\n                    \"e\": 1288476000000,\n                    \"s\": 1269727200000\n                },\n                {\n                    \"e\": 1319925600000,\n                    \"s\": 1301176800000\n                },\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Australia/Lord_Howe\",\n            \"rules\": [\n                {\n                    \"e\": 1207407600000,\n                    \"s\": 1223134200000\n                },\n                {\n                    \"e\": 1238857200000,\n                    \"s\": 1254583800000\n                },\n                {\n                    \"e\": 1270306800000,\n                    \"s\": 1286033400000\n                },\n                {\n                    \"e\": 1301756400000,\n                    \"s\": 1317483000000\n                },\n                {\n                    \"e\": 1333206000000,\n                    \"s\": 1349537400000\n                },\n                {\n                    \"e\": 1365260400000,\n                    \"s\": 1380987000000\n                },\n                {\n                    \"e\": 1396710000000,\n                    \"s\": 1412436600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Australia/Perth\",\n            \"rules\": [\n                {\n                    \"e\": 1206813600000,\n                    \"s\": 1224957600000\n                },\n                false,\n                false,\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Europe/Helsinki\",\n            \"rules\": [\n                {\n                    \"e\": 1224982800000,\n                    \"s\": 1206838800000\n                },\n                {\n                    \"e\": 1256432400000,\n                    \"s\": 1238288400000\n                },\n                {\n                    \"e\": 1288486800000,\n                    \"s\": 1269738000000\n                },\n                {\n                    \"e\": 1319936400000,\n                    \"s\": 1301187600000\n                },\n                {\n                    \"e\": 1351386000000,\n                    \"s\": 1332637200000\n                },\n                {\n                    \"e\": 1382835600000,\n                    \"s\": 1364691600000\n                },\n                {\n                    \"e\": 1414285200000,\n                    \"s\": 1396141200000\n                }\n            ]\n        },\n        {\n            \"name\": \"Europe/Minsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224979200000,\n                    \"s\": 1206835200000\n                },\n                {\n                    \"e\": 1256428800000,\n                    \"s\": 1238284800000\n                },\n                {\n                    \"e\": 1288483200000,\n                    \"s\": 1269734400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Europe/Moscow\",\n            \"rules\": [\n                {\n                    \"e\": 1224975600000,\n                    \"s\": 1206831600000\n                },\n                {\n                    \"e\": 1256425200000,\n                    \"s\": 1238281200000\n                },\n                {\n                    \"e\": 1288479600000,\n                    \"s\": 1269730800000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Pacific/Apia\",\n            \"rules\": [\n                false,\n                false,\n                false,\n                {\n                    \"e\": 1301752800000,\n                    \"s\": 1316872800000\n                },\n                {\n                    \"e\": 1333202400000,\n                    \"s\": 1348927200000\n                },\n                {\n                    \"e\": 1365256800000,\n                    \"s\": 1380376800000\n                },\n                {\n                    \"e\": 1396706400000,\n                    \"s\": 1411826400000\n                }\n            ]\n        },\n        {\n            \"name\": \"Pacific/Fiji\",\n            \"rules\": [\n                false,\n                false,\n                {\n                    \"e\": 1269698400000,\n                    \"s\": 1287842400000\n                },\n                {\n                    \"e\": 1327154400000,\n                    \"s\": 1319292000000\n                },\n                {\n                    \"e\": 1358604000000,\n                    \"s\": 1350741600000\n                },\n                {\n                    \"e\": 1390050000000,\n                    \"s\": 1382796000000\n                },\n                {\n                    \"e\": 1421503200000,\n                    \"s\": 1414850400000\n                }\n            ]\n        },\n        {\n            \"name\": \"Europe/London\",\n            \"rules\": [\n                {\n                    \"e\": 1224982800000,\n                    \"s\": 1206838800000\n                },\n                {\n                    \"e\": 1256432400000,\n                    \"s\": 1238288400000\n                },\n                {\n                    \"e\": 1288486800000,\n                    \"s\": 1269738000000\n                },\n                {\n                    \"e\": 1319936400000,\n                    \"s\": 1301187600000\n                },\n                {\n                    \"e\": 1351386000000,\n                    \"s\": 1332637200000\n                },\n                {\n                    \"e\": 1382835600000,\n                    \"s\": 1364691600000\n                },\n                {\n                    \"e\": 1414285200000,\n                    \"s\": 1396141200000\n                }\n            ]\n        }\n    ]\n};\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n    module.exports = jstz;\n} else if ((typeof define !== 'undefined' && define !== null) && (define.amd != null)) {\n    define([], function() {\n        return jstz;\n    });\n} else {\n    if (typeof root === 'undefined') {\n        window.jstz = jstz;\n    } else {\n        root.jstz = jstz;\n    }\n}\n}());\n", "module.exports = require('./dist/jstz.js');\n", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).LocalTime=t()}(this,(function(){\"use strict\";var e;e={config:{},run:function(){return this.getController().processElements()},process:function(...e){var t,r,n;for(r=0,n=e.length;r<n;r++)t=e[r],this.getController().processElement(t);return e.length},getController:function(){return null!=this.controller?this.controller:this.controller=new e.Controller}};var t,r,n,a,i,s,o,u,l,c,d,m,h,f,g,p,y,S,v,T,b,M,D,w,E,I,C,N,A,O,$,F,Y,k,L,W=e;return W.config.useFormat24=!1,W.config.i18n={en:{date:{dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],abbrDayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],abbrMonthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],yesterday:\"yesterday\",today:\"today\",tomorrow:\"tomorrow\",on:\"on {date}\",formats:{default:\"%b %e, %Y\",thisYear:\"%b %e\"}},time:{am:\"am\",pm:\"pm\",singular:\"a {time}\",singularAn:\"an {time}\",elapsed:\"{time} ago\",second:\"second\",seconds:\"seconds\",minute:\"minute\",minutes:\"minutes\",hour:\"hour\",hours:\"hours\",formats:{default:\"%l:%M%P\",default_24h:\"%H:%M\"}},datetime:{at:\"{date} at {time}\",formats:{default:\"%B %e, %Y at %l:%M%P %Z\",default_24h:\"%B %e, %Y at %H:%M %Z\"}}}},W.config.locale=\"en\",W.config.defaultLocale=\"en\",W.config.timerInterval=6e4,n=!isNaN(Date.parse(\"2011-01-01T12:00:00-05:00\")),W.parseDate=function(e){return e=e.toString(),n||(e=r(e)),new Date(Date.parse(e))},t=/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(Z|[-+]?[\\d:]+)$/,r=function(e){var r,n,a,i,s,o,u,l,c,d;if(i=e.match(t))return[r,c,o,n,a,s,l,d]=i,\"Z\"!==d&&(u=d.replace(\":\",\"\")),`${c}/${o}/${n} ${a}:${s}:${l} GMT${[u]}`},W.elementMatchesSelector=(a=document.documentElement,i=null!=(s=null!=(o=null!=(u=null!=(l=a.matches)?l:a.matchesSelector)?u:a.webkitMatchesSelector)?o:a.mozMatchesSelector)?s:a.msMatchesSelector,function(e,t){if((null!=e?e.nodeType:void 0)===Node.ELEMENT_NODE)return i.call(e,t)}),({config:c}=W),({i18n:m}=c),W.getI18nValue=function(e=\"\",{locale:t}={locale:c.locale}){var r;return null!=(r=d(m[t],e))?r:t!==c.defaultLocale?W.getI18nValue(e,{locale:c.defaultLocale}):void 0},W.translate=function(e,t={},r){var n,a,i;for(n in i=W.getI18nValue(e,r),t)a=t[n],i=i.replace(`{${n}}`,a);return i},d=function(e,t){var r,n,a,i,s;for(s=e,r=0,a=(i=t.split(\".\")).length;r<a;r++){if(null==s[n=i[r]])return null;s=s[n]}return s},({getI18nValue:f,translate:M}=W),b=\"function\"==typeof(\"undefined\"!=typeof Intl&&null!==Intl?Intl.DateTimeFormat:void 0),g={\"Central European Standard Time\":\"CET\",\"Central European Summer Time\":\"CEST\",\"China Standard Time\":\"CST\",\"Israel Daylight Time\":\"IDT\",\"Israel Standard Time\":\"IST\",\"Moscow Standard Time\":\"MSK\",\"Philippine Standard Time\":\"PHT\",\"Singapore Standard Time\":\"SGT\",\"Western Indonesia Time\":\"WIB\"},W.knownEdgeCaseTimeZones=g,W.strftime=T=function(e,t){var r,n,a,i,s,o,u;return n=e.getDay(),r=e.getDate(),s=e.getMonth(),u=e.getFullYear(),a=e.getHours(),i=e.getMinutes(),o=e.getSeconds(),t.replace(/%(-?)([%aAbBcdeHIlmMpPSwyYZ])/g,(function(t,l,c){switch(c){case\"%\":return\"%\";case\"a\":return f(\"date.abbrDayNames\")[n];case\"A\":return f(\"date.dayNames\")[n];case\"b\":return f(\"date.abbrMonthNames\")[s];case\"B\":return f(\"date.monthNames\")[s];case\"c\":return e.toString();case\"d\":return p(r,l);case\"e\":return r;case\"H\":return p(a,l);case\"I\":return p(T(e,\"%l\"),l);case\"l\":return 0===a||12===a?12:(a+12)%12;case\"m\":return p(s+1,l);case\"M\":return p(i,l);case\"p\":return M(\"time.\"+(a>11?\"pm\":\"am\")).toUpperCase();case\"P\":return M(\"time.\"+(a>11?\"pm\":\"am\"));case\"S\":return p(o,l);case\"w\":return n;case\"y\":return p(u%100,l);case\"Y\":return u;case\"Z\":return y(e)}}))},p=function(e,t){return\"-\"===t?e:`0${e}`.slice(-2)},y=function(e){var t,r,n;return(r=h(e))?g[r]:(n=v(e,{allowGMT:!1}))||(n=S(e))?n:(t=v(e,{allowGMT:!0}))?t:\"\"},h=function(e){return Object.keys(g).find((function(t){return b?new Date(e).toLocaleString(\"en-US\",{timeZoneName:\"long\"}).includes(t):e.toString().includes(t)}))},v=function(e,{allowGMT:t}){var r;if(b&&(r=new Date(e).toLocaleString(\"en-US\",{timeZoneName:\"short\"}).split(\" \").pop(),t||!r.includes(\"GMT\")))return r},S=function(e){var t,r,n,a,i;return(t=null!=(r=(i=e.toString()).match(/\\(([\\w\\s]+)\\)$/))?r[1]:void 0)?/\\s/.test(t)?t.match(/\\b(\\w)/g).join(\"\"):t:(t=null!=(n=i.match(/(\\w{3,4})\\s\\d{4}$/))?n[1]:void 0)||(t=null!=(a=i.match(/(UTC[\\+\\-]\\d+)/))?a[1]:void 0)?t:void 0},W.CalendarDate=class{static fromDate(e){return new this(e.getFullYear(),e.getMonth()+1,e.getDate())}static today(){return this.fromDate(new Date)}constructor(e,t,r){this.date=new Date(Date.UTC(e,t-1)),this.date.setUTCDate(r),this.year=this.date.getUTCFullYear(),this.month=this.date.getUTCMonth()+1,this.day=this.date.getUTCDate(),this.value=this.date.getTime()}equals(e){return(null!=e?e.value:void 0)===this.value}is(e){return this.equals(e)}isToday(){return this.is(this.constructor.today())}occursOnSameYearAs(e){return this.year===(null!=e?e.year:void 0)}occursThisYear(){return this.occursOnSameYearAs(this.constructor.today())}daysSince(e){if(e)return(this.date-e.date)/864e5}daysPassed(){return this.constructor.today().daysSince(this)}},({strftime:E,translate:I,getI18nValue:w,config:D}=W),W.RelativeTime=class{constructor(e){this.date=e,this.calendarDate=W.CalendarDate.fromDate(this.date)}toString(){var e,t;return(t=this.toTimeElapsedString())?I(\"time.elapsed\",{time:t}):(e=this.toWeekdayString())?(t=this.toTimeString(),I(\"datetime.at\",{date:e,time:t})):I(\"date.on\",{date:this.toDateString()})}toTimeOrDateString(){return this.calendarDate.isToday()?this.toTimeString():this.toDateString()}toTimeElapsedString(){var e,t,r,n,a;return r=(new Date).getTime()-this.date.getTime(),n=Math.round(r/1e3),t=Math.round(n/60),e=Math.round(t/60),r<0?null:n<10?(a=I(\"time.second\"),I(\"time.singular\",{time:a})):n<45?`${n} ${I(\"time.seconds\")}`:n<90?(a=I(\"time.minute\"),I(\"time.singular\",{time:a})):t<45?`${t} ${I(\"time.minutes\")}`:t<90?(a=I(\"time.hour\"),I(\"time.singularAn\",{time:a})):e<24?`${e} ${I(\"time.hours\")}`:\"\"}toWeekdayString(){switch(this.calendarDate.daysPassed()){case 0:return I(\"date.today\");case 1:return I(\"date.yesterday\");case-1:return I(\"date.tomorrow\");case 2:case 3:case 4:case 5:case 6:return E(this.date,\"%A\");default:return\"\"}}toDateString(){var e;return e=this.calendarDate.occursThisYear()?w(\"date.formats.thisYear\"):w(\"date.formats.default\"),E(this.date,e)}toTimeString(){var e;return e=D.useFormat24?\"default_24h\":\"default\",E(this.date,w(`time.formats.${e}`))}},({elementMatchesSelector:C}=W),W.PageObserver=class{constructor(e,t){this.processMutations=this.processMutations.bind(this),this.processInsertion=this.processInsertion.bind(this),this.selector=e,this.callback=t}start(){if(!this.started)return this.observeWithMutationObserver()||this.observeWithMutationEvent(),this.started=!0}observeWithMutationObserver(){if(\"undefined\"!=typeof MutationObserver&&null!==MutationObserver)return new MutationObserver(this.processMutations).observe(document.documentElement,{childList:!0,subtree:!0}),!0}observeWithMutationEvent(){return addEventListener(\"DOMNodeInserted\",this.processInsertion,!1),!0}findSignificantElements(e){var t;return t=[],(null!=e?e.nodeType:void 0)===Node.ELEMENT_NODE&&(C(e,this.selector)&&t.push(e),t.push(...e.querySelectorAll(this.selector))),t}processMutations(e){var t,r,n,a,i,s,o,u;for(t=[],r=0,a=e.length;r<a;r++)if(\"childList\"===(s=e[r]).type)for(n=0,i=(u=s.addedNodes).length;n<i;n++)o=u[n],t.push(...this.findSignificantElements(o));return this.notify(t)}processInsertion(e){var t;return t=this.findSignificantElements(e.target),this.notify(t)}notify(e){if(null!=e?e.length:void 0)return\"function\"==typeof this.callback?this.callback(e):void 0}},({parseDate:O,strftime:$,getI18nValue:A,config:N}=W),W.Controller=function(){var e,t,r,n;return e=\"time[data-local]:not([data-localized])\",t=function(e){return e.setAttribute(\"data-localized\",\"\")},r=function(e){return e.setAttribute(\"data-processed-at\",(new Date).toISOString())},n=function(e){return new W.RelativeTime(e)},class{constructor(){this.processElements=this.processElements.bind(this),this.pageObserver=new W.PageObserver(e,this.processElements)}start(){if(!this.started)return this.processElements(),this.startTimer(),this.pageObserver.start(),this.started=!0}startTimer(){var e;if(e=N.timerInterval)return null!=this.timer?this.timer:this.timer=setInterval(this.processElements,e)}processElements(t=document.querySelectorAll(e)){var r,n,a;for(n=0,a=t.length;n<a;n++)r=t[n],this.processElement(r);return t.length}processElement(e){var a,i,s,o,u,l;if(a=e.getAttribute(\"datetime\"),s=e.getAttribute(\"data-local\"),i=N.useFormat24&&e.getAttribute(\"data-format24\")||e.getAttribute(\"data-format\"),o=O(a),!isNaN(o))return e.hasAttribute(\"title\")||(l=N.useFormat24?\"default_24h\":\"default\",u=$(o,A(`datetime.formats.${l}`)),e.setAttribute(\"title\",u)),r(e),e.textContent=function(){switch(s){case\"time\":return t(e),$(o,i);case\"date\":return t(e),n(o).toDateString();case\"time-ago\":return n(o).toString();case\"time-or-date\":return n(o).toTimeOrDateString();case\"weekday\":return n(o).toWeekdayString();case\"weekday-or-date\":return n(o).toWeekdayString()||n(o).toDateString()}}()}}}.call(window),L=!1,F=function(){return document.attachEvent?\"complete\"===document.readyState:\"loading\"!==document.readyState},Y=function(e){var t;return null!=(t=\"function\"==typeof requestAnimationFrame?requestAnimationFrame(e):void 0)?t:setTimeout(e,17)},k=function(){return W.getController().start()},W.start=function(){return L?W.run():(L=!0,\"undefined\"!=typeof MutationObserver&&null!==MutationObserver||F()?k():Y(k))},W.processing=function(){return W.getController().started},window.LocalTime===W&&W.start(),W}));\n", "/*!\nTurbo 8.0.13\nCopyright \u00A9 2025 37signals LLC\n */\n/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Javan Makhmali\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function (prototype) {\n  if (typeof prototype.requestSubmit == \"function\") return\n\n  prototype.requestSubmit = function (submitter) {\n    if (submitter) {\n      validateSubmitter(submitter, this);\n      submitter.click();\n    } else {\n      submitter = document.createElement(\"input\");\n      submitter.type = \"submit\";\n      submitter.hidden = true;\n      this.appendChild(submitter);\n      submitter.click();\n      this.removeChild(submitter);\n    }\n  };\n\n  function validateSubmitter(submitter, form) {\n    submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n    submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n    submitter.form == form ||\n      raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n  }\n\n  function raise(errorConstructor, message, name) {\n    throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n  }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\n\nfunction findSubmitterFromClickTarget(target) {\n  const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n  const candidate = element ? element.closest(\"input, button\") : null;\n  return candidate?.type == \"submit\" ? candidate : null\n}\n\nfunction clickCaptured(event) {\n  const submitter = findSubmitterFromClickTarget(event.target);\n\n  if (submitter && submitter.form) {\n    submittersByForm.set(submitter.form, submitter);\n  }\n}\n\n(function () {\n  if (\"submitter\" in Event.prototype) return\n\n  let prototype = window.Event.prototype;\n  // Certain versions of Safari 15 have a bug where they won't\n  // populate the submitter. This hurts TurboDrive's enable/disable detection.\n  // See https://bugs.webkit.org/show_bug.cgi?id=229660\n  if (\"SubmitEvent\" in window) {\n    const prototypeOfSubmitEvent = window.SubmitEvent.prototype;\n\n    if (/Apple Computer/.test(navigator.vendor) && !(\"submitter\" in prototypeOfSubmitEvent)) {\n      prototype = prototypeOfSubmitEvent;\n    } else {\n      return // polyfill not needed\n    }\n  }\n\n  addEventListener(\"click\", clickCaptured, true);\n\n  Object.defineProperty(prototype, \"submitter\", {\n    get() {\n      if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n        return submittersByForm.get(this.target)\n      }\n    }\n  });\n})();\n\nconst FrameLoadingStyle = {\n  eager: \"eager\",\n  lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n *   <turbo-frame id=\"messages\">\n *     <a href=\"/messages/expanded\">\n *       Show all expanded messages in this frame.\n *     </a>\n *\n *     <form action=\"/messages\">\n *       Show response from this form within this frame.\n *     </form>\n *   </turbo-frame>\n */\nclass FrameElement extends HTMLElement {\n  static delegateConstructor = undefined\n\n  loaded = Promise.resolve()\n\n  static get observedAttributes() {\n    return [\"disabled\", \"loading\", \"src\"]\n  }\n\n  constructor() {\n    super();\n    this.delegate = new FrameElement.delegateConstructor(this);\n  }\n\n  connectedCallback() {\n    this.delegate.connect();\n  }\n\n  disconnectedCallback() {\n    this.delegate.disconnect();\n  }\n\n  reload() {\n    return this.delegate.sourceURLReloaded()\n  }\n\n  attributeChangedCallback(name) {\n    if (name == \"loading\") {\n      this.delegate.loadingStyleChanged();\n    } else if (name == \"src\") {\n      this.delegate.sourceURLChanged();\n    } else if (name == \"disabled\") {\n      this.delegate.disabledChanged();\n    }\n  }\n\n  /**\n   * Gets the URL to lazily load source HTML from\n   */\n  get src() {\n    return this.getAttribute(\"src\")\n  }\n\n  /**\n   * Sets the URL to lazily load source HTML from\n   */\n  set src(value) {\n    if (value) {\n      this.setAttribute(\"src\", value);\n    } else {\n      this.removeAttribute(\"src\");\n    }\n  }\n\n  /**\n   * Gets the refresh mode for the frame.\n   */\n  get refresh() {\n    return this.getAttribute(\"refresh\")\n  }\n\n  /**\n   * Sets the refresh mode for the frame.\n   */\n  set refresh(value) {\n    if (value) {\n      this.setAttribute(\"refresh\", value);\n    } else {\n      this.removeAttribute(\"refresh\");\n    }\n  }\n\n  get shouldReloadWithMorph() {\n    return this.src && this.refresh === \"morph\"\n  }\n\n  /**\n   * Determines if the element is loading\n   */\n  get loading() {\n    return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\")\n  }\n\n  /**\n   * Sets the value of if the element is loading\n   */\n  set loading(value) {\n    if (value) {\n      this.setAttribute(\"loading\", value);\n    } else {\n      this.removeAttribute(\"loading\");\n    }\n  }\n\n  /**\n   * Gets the disabled state of the frame.\n   *\n   * If disabled, no requests will be intercepted by the frame.\n   */\n  get disabled() {\n    return this.hasAttribute(\"disabled\")\n  }\n\n  /**\n   * Sets the disabled state of the frame.\n   *\n   * If disabled, no requests will be intercepted by the frame.\n   */\n  set disabled(value) {\n    if (value) {\n      this.setAttribute(\"disabled\", \"\");\n    } else {\n      this.removeAttribute(\"disabled\");\n    }\n  }\n\n  /**\n   * Gets the autoscroll state of the frame.\n   *\n   * If true, the frame will be scrolled into view automatically on update.\n   */\n  get autoscroll() {\n    return this.hasAttribute(\"autoscroll\")\n  }\n\n  /**\n   * Sets the autoscroll state of the frame.\n   *\n   * If true, the frame will be scrolled into view automatically on update.\n   */\n  set autoscroll(value) {\n    if (value) {\n      this.setAttribute(\"autoscroll\", \"\");\n    } else {\n      this.removeAttribute(\"autoscroll\");\n    }\n  }\n\n  /**\n   * Determines if the element has finished loading\n   */\n  get complete() {\n    return !this.delegate.isLoading\n  }\n\n  /**\n   * Gets the active state of the frame.\n   *\n   * If inactive, source changes will not be observed.\n   */\n  get isActive() {\n    return this.ownerDocument === document && !this.isPreview\n  }\n\n  /**\n   * Sets the active state of the frame.\n   *\n   * If inactive, source changes will not be observed.\n   */\n  get isPreview() {\n    return this.ownerDocument?.documentElement?.hasAttribute(\"data-turbo-preview\")\n  }\n}\n\nfunction frameLoadingStyleFromString(style) {\n  switch (style.toLowerCase()) {\n    case \"lazy\":\n      return FrameLoadingStyle.lazy\n    default:\n      return FrameLoadingStyle.eager\n  }\n}\n\nconst drive = {\n  enabled: true,\n  progressBarDelay: 500,\n  unvisitableExtensions: new Set(\n    [\n      \".7z\", \".aac\", \".apk\", \".avi\", \".bmp\", \".bz2\", \".css\", \".csv\", \".deb\", \".dmg\", \".doc\",\n      \".docx\", \".exe\", \".gif\", \".gz\", \".heic\", \".heif\", \".ico\", \".iso\", \".jpeg\", \".jpg\",\n      \".js\", \".json\", \".m4a\", \".mkv\", \".mov\", \".mp3\", \".mp4\", \".mpeg\", \".mpg\", \".msi\",\n      \".ogg\", \".ogv\", \".pdf\", \".pkg\", \".png\", \".ppt\", \".pptx\", \".rar\", \".rtf\",\n      \".svg\", \".tar\", \".tif\", \".tiff\", \".txt\", \".wav\", \".webm\", \".webp\", \".wma\", \".wmv\",\n      \".xls\", \".xlsx\", \".xml\", \".zip\"\n    ]\n  )\n};\n\nfunction activateScriptElement(element) {\n  if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n    return element\n  } else {\n    const createdScriptElement = document.createElement(\"script\");\n    const cspNonce = getCspNonce();\n    if (cspNonce) {\n      createdScriptElement.nonce = cspNonce;\n    }\n    createdScriptElement.textContent = element.textContent;\n    createdScriptElement.async = false;\n    copyElementAttributes(createdScriptElement, element);\n    return createdScriptElement\n  }\n}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n  for (const { name, value } of sourceElement.attributes) {\n    destinationElement.setAttribute(name, value);\n  }\n}\n\nfunction createDocumentFragment(html) {\n  const template = document.createElement(\"template\");\n  template.innerHTML = html;\n  return template.content\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n  const event = new CustomEvent(eventName, {\n    cancelable,\n    bubbles: true,\n    composed: true,\n    detail\n  });\n\n  if (target && target.isConnected) {\n    target.dispatchEvent(event);\n  } else {\n    document.documentElement.dispatchEvent(event);\n  }\n\n  return event\n}\n\nfunction cancelEvent(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n\nfunction nextRepaint() {\n  if (document.visibilityState === \"hidden\") {\n    return nextEventLoopTick()\n  } else {\n    return nextAnimationFrame()\n  }\n}\n\nfunction nextAnimationFrame() {\n  return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n  return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nfunction nextMicrotask() {\n  return Promise.resolve()\n}\n\nfunction parseHTMLDocument(html = \"\") {\n  return new DOMParser().parseFromString(html, \"text/html\")\n}\n\nfunction unindent(strings, ...values) {\n  const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n  const match = lines[0].match(/^\\s+/);\n  const indent = match ? match[0].length : 0;\n  return lines.map((line) => line.slice(indent)).join(\"\\n\")\n}\n\nfunction interpolate(strings, values) {\n  return strings.reduce((result, string, i) => {\n    const value = values[i] == undefined ? \"\" : values[i];\n    return result + string + value\n  }, \"\")\n}\n\nfunction uuid() {\n  return Array.from({ length: 36 })\n    .map((_, i) => {\n      if (i == 8 || i == 13 || i == 18 || i == 23) {\n        return \"-\"\n      } else if (i == 14) {\n        return \"4\"\n      } else if (i == 19) {\n        return (Math.floor(Math.random() * 4) + 8).toString(16)\n      } else {\n        return Math.floor(Math.random() * 15).toString(16)\n      }\n    })\n    .join(\"\")\n}\n\nfunction getAttribute(attributeName, ...elements) {\n  for (const value of elements.map((element) => element?.getAttribute(attributeName))) {\n    if (typeof value == \"string\") return value\n  }\n\n  return null\n}\n\nfunction hasAttribute(attributeName, ...elements) {\n  return elements.some((element) => element && element.hasAttribute(attributeName))\n}\n\nfunction markAsBusy(...elements) {\n  for (const element of elements) {\n    if (element.localName == \"turbo-frame\") {\n      element.setAttribute(\"busy\", \"\");\n    }\n    element.setAttribute(\"aria-busy\", \"true\");\n  }\n}\n\nfunction clearBusyState(...elements) {\n  for (const element of elements) {\n    if (element.localName == \"turbo-frame\") {\n      element.removeAttribute(\"busy\");\n    }\n\n    element.removeAttribute(\"aria-busy\");\n  }\n}\n\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n  return new Promise((resolve) => {\n    const onComplete = () => {\n      element.removeEventListener(\"error\", onComplete);\n      element.removeEventListener(\"load\", onComplete);\n      resolve();\n    };\n\n    element.addEventListener(\"load\", onComplete, { once: true });\n    element.addEventListener(\"error\", onComplete, { once: true });\n    setTimeout(resolve, timeoutInMilliseconds);\n  })\n}\n\nfunction getHistoryMethodForAction(action) {\n  switch (action) {\n    case \"replace\":\n      return history.replaceState\n    case \"advance\":\n    case \"restore\":\n      return history.pushState\n  }\n}\n\nfunction isAction(action) {\n  return action == \"advance\" || action == \"replace\" || action == \"restore\"\n}\n\nfunction getVisitAction(...elements) {\n  const action = getAttribute(\"data-turbo-action\", ...elements);\n\n  return isAction(action) ? action : null\n}\n\nfunction getMetaElement(name) {\n  return document.querySelector(`meta[name=\"${name}\"]`)\n}\n\nfunction getMetaContent(name) {\n  const element = getMetaElement(name);\n  return element && element.content\n}\n\nfunction getCspNonce() {\n  const element = getMetaElement(\"csp-nonce\");\n\n  if (element) {\n    const { nonce, content } = element;\n    return nonce == \"\" ? content : nonce\n  }\n}\n\nfunction setMetaContent(name, content) {\n  let element = getMetaElement(name);\n\n  if (!element) {\n    element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", name);\n\n    document.head.appendChild(element);\n  }\n\n  element.setAttribute(\"content\", content);\n\n  return element\n}\n\nfunction findClosestRecursively(element, selector) {\n  if (element instanceof Element) {\n    return (\n      element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector)\n    )\n  }\n}\n\nfunction elementIsFocusable(element) {\n  const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n\n  return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\"\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n  return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable)\n}\n\nasync function around(callback, reader) {\n  const before = reader();\n\n  callback();\n\n  await nextAnimationFrame();\n\n  const after = reader();\n\n  return [before, after]\n}\n\nfunction doesNotTargetIFrame(name) {\n  if (name === \"_blank\") {\n    return false\n  } else if (name) {\n    for (const element of document.getElementsByName(name)) {\n      if (element instanceof HTMLIFrameElement) return false\n    }\n\n    return true\n  } else {\n    return true\n  }\n}\n\nfunction findLinkFromClickTarget(target) {\n  return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\")\n}\n\nfunction getLocationForLink(link) {\n  return expandURL(link.getAttribute(\"href\") || \"\")\n}\n\nfunction debounce(fn, delay) {\n  let timeoutId = null;\n\n  return (...args) => {\n    const callback = () => fn.apply(this, args);\n    clearTimeout(timeoutId);\n    timeoutId = setTimeout(callback, delay);\n  }\n}\n\nconst submitter = {\n  \"aria-disabled\": {\n    beforeSubmit: submitter => {\n      submitter.setAttribute(\"aria-disabled\", \"true\");\n      submitter.addEventListener(\"click\", cancelEvent);\n    },\n\n    afterSubmit: submitter => {\n      submitter.removeAttribute(\"aria-disabled\");\n      submitter.removeEventListener(\"click\", cancelEvent);\n    }\n  },\n\n  \"disabled\": {\n    beforeSubmit: submitter => submitter.disabled = true,\n    afterSubmit: submitter => submitter.disabled = false\n  }\n};\n\nclass Config {\n  #submitter = null\n\n  constructor(config) {\n    Object.assign(this, config);\n  }\n\n  get submitter() {\n    return this.#submitter\n  }\n\n  set submitter(value) {\n    this.#submitter = submitter[value] || value;\n  }\n}\n\nconst forms = new Config({\n  mode: \"on\",\n  submitter: \"disabled\"\n});\n\nconst config = {\n  drive,\n  forms\n};\n\nfunction expandURL(locatable) {\n  return new URL(locatable.toString(), document.baseURI)\n}\n\nfunction getAnchor(url) {\n  let anchorMatch;\n  if (url.hash) {\n    return url.hash.slice(1)\n    // eslint-disable-next-line no-cond-assign\n  } else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n    return anchorMatch[1]\n  }\n}\n\nfunction getAction$1(form, submitter) {\n  const action = submitter?.getAttribute(\"formaction\") || form.getAttribute(\"action\") || form.action;\n\n  return expandURL(action)\n}\n\nfunction getExtension(url) {\n  return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\"\n}\n\nfunction isPrefixedBy(baseURL, url) {\n  const prefix = getPrefix(url);\n  return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix)\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n  return isPrefixedBy(location, rootLocation) && !config.drive.unvisitableExtensions.has(getExtension(location))\n}\n\nfunction getRequestURL(url) {\n  const anchor = getAnchor(url);\n  return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href\n}\n\nfunction toCacheKey(url) {\n  return getRequestURL(url)\n}\n\nfunction urlsAreEqual(left, right) {\n  return expandURL(left).href == expandURL(right).href\n}\n\nfunction getPathComponents(url) {\n  return url.pathname.split(\"/\").slice(1)\n}\n\nfunction getLastPathComponent(url) {\n  return getPathComponents(url).slice(-1)[0]\n}\n\nfunction getPrefix(url) {\n  return addTrailingSlash(url.origin + url.pathname)\n}\n\nfunction addTrailingSlash(value) {\n  return value.endsWith(\"/\") ? value : value + \"/\"\n}\n\nclass FetchResponse {\n  constructor(response) {\n    this.response = response;\n  }\n\n  get succeeded() {\n    return this.response.ok\n  }\n\n  get failed() {\n    return !this.succeeded\n  }\n\n  get clientError() {\n    return this.statusCode >= 400 && this.statusCode <= 499\n  }\n\n  get serverError() {\n    return this.statusCode >= 500 && this.statusCode <= 599\n  }\n\n  get redirected() {\n    return this.response.redirected\n  }\n\n  get location() {\n    return expandURL(this.response.url)\n  }\n\n  get isHTML() {\n    return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/)\n  }\n\n  get statusCode() {\n    return this.response.status\n  }\n\n  get contentType() {\n    return this.header(\"Content-Type\")\n  }\n\n  get responseText() {\n    return this.response.clone().text()\n  }\n\n  get responseHTML() {\n    if (this.isHTML) {\n      return this.response.clone().text()\n    } else {\n      return Promise.resolve(undefined)\n    }\n  }\n\n  header(name) {\n    return this.response.headers.get(name)\n  }\n}\n\nclass LimitedSet extends Set {\n  constructor(maxSize) {\n    super();\n    this.maxSize = maxSize;\n  }\n\n  add(value) {\n    if (this.size >= this.maxSize) {\n      const iterator = this.values();\n      const oldestValue = iterator.next().value;\n      this.delete(oldestValue);\n    }\n    super.add(value);\n  }\n}\n\nconst recentRequests = new LimitedSet(20);\n\nconst nativeFetch = window.fetch;\n\nfunction fetchWithTurboHeaders(url, options = {}) {\n  const modifiedHeaders = new Headers(options.headers || {});\n  const requestUID = uuid();\n  recentRequests.add(requestUID);\n  modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n\n  return nativeFetch(url, {\n    ...options,\n    headers: modifiedHeaders\n  })\n}\n\nfunction fetchMethodFromString(method) {\n  switch (method.toLowerCase()) {\n    case \"get\":\n      return FetchMethod.get\n    case \"post\":\n      return FetchMethod.post\n    case \"put\":\n      return FetchMethod.put\n    case \"patch\":\n      return FetchMethod.patch\n    case \"delete\":\n      return FetchMethod.delete\n  }\n}\n\nconst FetchMethod = {\n  get: \"get\",\n  post: \"post\",\n  put: \"put\",\n  patch: \"patch\",\n  delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n  switch (encoding.toLowerCase()) {\n    case FetchEnctype.multipart:\n      return FetchEnctype.multipart\n    case FetchEnctype.plain:\n      return FetchEnctype.plain\n    default:\n      return FetchEnctype.urlEncoded\n  }\n}\n\nconst FetchEnctype = {\n  urlEncoded: \"application/x-www-form-urlencoded\",\n  multipart: \"multipart/form-data\",\n  plain: \"text/plain\"\n};\n\nclass FetchRequest {\n  abortController = new AbortController()\n  #resolveRequestPromise = (_value) => {}\n\n  constructor(delegate, method, location, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {\n    const [url, body] = buildResourceAndBody(expandURL(location), method, requestBody, enctype);\n\n    this.delegate = delegate;\n    this.url = url;\n    this.target = target;\n    this.fetchOptions = {\n      credentials: \"same-origin\",\n      redirect: \"follow\",\n      method: method.toUpperCase(),\n      headers: { ...this.defaultHeaders },\n      body: body,\n      signal: this.abortSignal,\n      referrer: this.delegate.referrer?.href\n    };\n    this.enctype = enctype;\n  }\n\n  get method() {\n    return this.fetchOptions.method\n  }\n\n  set method(value) {\n    const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n    const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n\n    this.url.search = \"\";\n\n    const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);\n\n    this.url = url;\n    this.fetchOptions.body = body;\n    this.fetchOptions.method = fetchMethod.toUpperCase();\n  }\n\n  get headers() {\n    return this.fetchOptions.headers\n  }\n\n  set headers(value) {\n    this.fetchOptions.headers = value;\n  }\n\n  get body() {\n    if (this.isSafe) {\n      return this.url.searchParams\n    } else {\n      return this.fetchOptions.body\n    }\n  }\n\n  set body(value) {\n    this.fetchOptions.body = value;\n  }\n\n  get location() {\n    return this.url\n  }\n\n  get params() {\n    return this.url.searchParams\n  }\n\n  get entries() {\n    return this.body ? Array.from(this.body.entries()) : []\n  }\n\n  cancel() {\n    this.abortController.abort();\n  }\n\n  async perform() {\n    const { fetchOptions } = this;\n    this.delegate.prepareRequest(this);\n    const event = await this.#allowRequestToBeIntercepted(fetchOptions);\n    try {\n      this.delegate.requestStarted(this);\n\n      if (event.detail.fetchRequest) {\n        this.response = event.detail.fetchRequest.response;\n      } else {\n        this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);\n      }\n\n      const response = await this.response;\n      return await this.receive(response)\n    } catch (error) {\n      if (error.name !== \"AbortError\") {\n        if (this.#willDelegateErrorHandling(error)) {\n          this.delegate.requestErrored(this, error);\n        }\n        throw error\n      }\n    } finally {\n      this.delegate.requestFinished(this);\n    }\n  }\n\n  async receive(response) {\n    const fetchResponse = new FetchResponse(response);\n    const event = dispatch(\"turbo:before-fetch-response\", {\n      cancelable: true,\n      detail: { fetchResponse },\n      target: this.target\n    });\n    if (event.defaultPrevented) {\n      this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n    } else if (fetchResponse.succeeded) {\n      this.delegate.requestSucceededWithResponse(this, fetchResponse);\n    } else {\n      this.delegate.requestFailedWithResponse(this, fetchResponse);\n    }\n    return fetchResponse\n  }\n\n  get defaultHeaders() {\n    return {\n      Accept: \"text/html, application/xhtml+xml\"\n    }\n  }\n\n  get isSafe() {\n    return isSafe(this.method)\n  }\n\n  get abortSignal() {\n    return this.abortController.signal\n  }\n\n  acceptResponseType(mimeType) {\n    this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n  }\n\n  async #allowRequestToBeIntercepted(fetchOptions) {\n    const requestInterception = new Promise((resolve) => (this.#resolveRequestPromise = resolve));\n    const event = dispatch(\"turbo:before-fetch-request\", {\n      cancelable: true,\n      detail: {\n        fetchOptions,\n        url: this.url,\n        resume: this.#resolveRequestPromise\n      },\n      target: this.target\n    });\n    this.url = event.detail.url;\n    if (event.defaultPrevented) await requestInterception;\n\n    return event\n  }\n\n  #willDelegateErrorHandling(error) {\n    const event = dispatch(\"turbo:fetch-request-error\", {\n      target: this.target,\n      cancelable: true,\n      detail: { request: this, error: error }\n    });\n\n    return !event.defaultPrevented\n  }\n}\n\nfunction isSafe(fetchMethod) {\n  return fetchMethodFromString(fetchMethod) == FetchMethod.get\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n  const searchParams =\n    Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n  if (isSafe(method)) {\n    return [mergeIntoURLSearchParams(resource, searchParams), null]\n  } else if (enctype == FetchEnctype.urlEncoded) {\n    return [resource, searchParams]\n  } else {\n    return [resource, requestBody]\n  }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n  const entries = [];\n\n  for (const [name, value] of requestBody) {\n    if (value instanceof File) continue\n    else entries.push([name, value]);\n  }\n\n  return entries\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n  const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n\n  url.search = searchParams.toString();\n\n  return url\n}\n\nclass AppearanceObserver {\n  started = false\n\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n    this.intersectionObserver = new IntersectionObserver(this.intersect);\n  }\n\n  start() {\n    if (!this.started) {\n      this.started = true;\n      this.intersectionObserver.observe(this.element);\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.started = false;\n      this.intersectionObserver.unobserve(this.element);\n    }\n  }\n\n  intersect = (entries) => {\n    const lastEntry = entries.slice(-1)[0];\n    if (lastEntry?.isIntersecting) {\n      this.delegate.elementAppearedInViewport(this.element);\n    }\n  }\n}\n\nclass StreamMessage {\n  static contentType = \"text/vnd.turbo-stream.html\"\n\n  static wrap(message) {\n    if (typeof message == \"string\") {\n      return new this(createDocumentFragment(message))\n    } else {\n      return message\n    }\n  }\n\n  constructor(fragment) {\n    this.fragment = importStreamElements(fragment);\n  }\n}\n\nfunction importStreamElements(fragment) {\n  for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n    const streamElement = document.importNode(element, true);\n\n    for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n      inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n    }\n\n    element.replaceWith(streamElement);\n  }\n\n  return fragment\n}\n\nconst PREFETCH_DELAY = 100;\n\nclass PrefetchCache {\n  #prefetchTimeout = null\n  #prefetched = null\n\n  get(url) {\n    if (this.#prefetched && this.#prefetched.url === url && this.#prefetched.expire > Date.now()) {\n      return this.#prefetched.request\n    }\n  }\n\n  setLater(url, request, ttl) {\n    this.clear();\n\n    this.#prefetchTimeout = setTimeout(() => {\n      request.perform();\n      this.set(url, request, ttl);\n      this.#prefetchTimeout = null;\n    }, PREFETCH_DELAY);\n  }\n\n  set(url, request, ttl) {\n    this.#prefetched = { url, request, expire: new Date(new Date().getTime() + ttl) };\n  }\n\n  clear() {\n    if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);\n    this.#prefetched = null;\n  }\n}\n\nconst cacheTtl = 10 * 1000;\nconst prefetchCache = new PrefetchCache();\n\nconst FormSubmissionState = {\n  initialized: \"initialized\",\n  requesting: \"requesting\",\n  waiting: \"waiting\",\n  receiving: \"receiving\",\n  stopping: \"stopping\",\n  stopped: \"stopped\"\n};\n\nclass FormSubmission {\n  state = FormSubmissionState.initialized\n\n  static confirmMethod(message) {\n    return Promise.resolve(confirm(message))\n  }\n\n  constructor(delegate, formElement, submitter, mustRedirect = false) {\n    const method = getMethod(formElement, submitter);\n    const action = getAction(getFormAction(formElement, submitter), method);\n    const body = buildFormData(formElement, submitter);\n    const enctype = getEnctype(formElement, submitter);\n\n    this.delegate = delegate;\n    this.formElement = formElement;\n    this.submitter = submitter;\n    this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n    this.mustRedirect = mustRedirect;\n  }\n\n  get method() {\n    return this.fetchRequest.method\n  }\n\n  set method(value) {\n    this.fetchRequest.method = value;\n  }\n\n  get action() {\n    return this.fetchRequest.url.toString()\n  }\n\n  set action(value) {\n    this.fetchRequest.url = expandURL(value);\n  }\n\n  get body() {\n    return this.fetchRequest.body\n  }\n\n  get enctype() {\n    return this.fetchRequest.enctype\n  }\n\n  get isSafe() {\n    return this.fetchRequest.isSafe\n  }\n\n  get location() {\n    return this.fetchRequest.url\n  }\n\n  // The submission process\n\n  async start() {\n    const { initialized, requesting } = FormSubmissionState;\n    const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n    if (typeof confirmationMessage === \"string\") {\n      const confirmMethod = typeof config.forms.confirm === \"function\" ?\n        config.forms.confirm :\n        FormSubmission.confirmMethod;\n\n      const answer = await confirmMethod(confirmationMessage, this.formElement, this.submitter);\n      if (!answer) {\n        return\n      }\n    }\n\n    if (this.state == initialized) {\n      this.state = requesting;\n      return this.fetchRequest.perform()\n    }\n  }\n\n  stop() {\n    const { stopping, stopped } = FormSubmissionState;\n    if (this.state != stopping && this.state != stopped) {\n      this.state = stopping;\n      this.fetchRequest.cancel();\n      return true\n    }\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(request) {\n    if (!request.isSafe) {\n      const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n      if (token) {\n        request.headers[\"X-CSRF-Token\"] = token;\n      }\n    }\n\n    if (this.requestAcceptsTurboStreamResponse(request)) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted(_request) {\n    this.state = FormSubmissionState.waiting;\n    if (this.submitter) config.forms.submitter.beforeSubmit(this.submitter);\n    this.setSubmitsWith();\n    markAsBusy(this.formElement);\n    dispatch(\"turbo:submit-start\", {\n      target: this.formElement,\n      detail: { formSubmission: this }\n    });\n    this.delegate.formSubmissionStarted(this);\n  }\n\n  requestPreventedHandlingResponse(request, response) {\n    prefetchCache.clear();\n\n    this.result = { success: response.succeeded, fetchResponse: response };\n  }\n\n  requestSucceededWithResponse(request, response) {\n    if (response.clientError || response.serverError) {\n      this.delegate.formSubmissionFailedWithResponse(this, response);\n      return\n    }\n\n    prefetchCache.clear();\n\n    if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n      const error = new Error(\"Form responses must redirect to another location\");\n      this.delegate.formSubmissionErrored(this, error);\n    } else {\n      this.state = FormSubmissionState.receiving;\n      this.result = { success: true, fetchResponse: response };\n      this.delegate.formSubmissionSucceededWithResponse(this, response);\n    }\n  }\n\n  requestFailedWithResponse(request, response) {\n    this.result = { success: false, fetchResponse: response };\n    this.delegate.formSubmissionFailedWithResponse(this, response);\n  }\n\n  requestErrored(request, error) {\n    this.result = { success: false, error };\n    this.delegate.formSubmissionErrored(this, error);\n  }\n\n  requestFinished(_request) {\n    this.state = FormSubmissionState.stopped;\n    if (this.submitter) config.forms.submitter.afterSubmit(this.submitter);\n    this.resetSubmitterText();\n    clearBusyState(this.formElement);\n    dispatch(\"turbo:submit-end\", {\n      target: this.formElement,\n      detail: { formSubmission: this, ...this.result }\n    });\n    this.delegate.formSubmissionFinished(this);\n  }\n\n  // Private\n\n  setSubmitsWith() {\n    if (!this.submitter || !this.submitsWith) return\n\n    if (this.submitter.matches(\"button\")) {\n      this.originalSubmitText = this.submitter.innerHTML;\n      this.submitter.innerHTML = this.submitsWith;\n    } else if (this.submitter.matches(\"input\")) {\n      const input = this.submitter;\n      this.originalSubmitText = input.value;\n      input.value = this.submitsWith;\n    }\n  }\n\n  resetSubmitterText() {\n    if (!this.submitter || !this.originalSubmitText) return\n\n    if (this.submitter.matches(\"button\")) {\n      this.submitter.innerHTML = this.originalSubmitText;\n    } else if (this.submitter.matches(\"input\")) {\n      const input = this.submitter;\n      input.value = this.originalSubmitText;\n    }\n  }\n\n  requestMustRedirect(request) {\n    return !request.isSafe && this.mustRedirect\n  }\n\n  requestAcceptsTurboStreamResponse(request) {\n    return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement)\n  }\n\n  get submitsWith() {\n    return this.submitter?.getAttribute(\"data-turbo-submits-with\")\n  }\n}\n\nfunction buildFormData(formElement, submitter) {\n  const formData = new FormData(formElement);\n  const name = submitter?.getAttribute(\"name\");\n  const value = submitter?.getAttribute(\"value\");\n\n  if (name) {\n    formData.append(name, value || \"\");\n  }\n\n  return formData\n}\n\nfunction getCookieValue(cookieName) {\n  if (cookieName != null) {\n    const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n    const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n    if (cookie) {\n      const value = cookie.split(\"=\").slice(1).join(\"=\");\n      return value ? decodeURIComponent(value) : undefined\n    }\n  }\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n  return response.statusCode == 200 && !response.redirected\n}\n\nfunction getFormAction(formElement, submitter) {\n  const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n  if (submitter?.hasAttribute(\"formaction\")) {\n    return submitter.getAttribute(\"formaction\") || \"\"\n  } else {\n    return formElement.getAttribute(\"action\") || formElementAction || \"\"\n  }\n}\n\nfunction getAction(formAction, fetchMethod) {\n  const action = expandURL(formAction);\n\n  if (isSafe(fetchMethod)) {\n    action.search = \"\";\n  }\n\n  return action\n}\n\nfunction getMethod(formElement, submitter) {\n  const method = submitter?.getAttribute(\"formmethod\") || formElement.getAttribute(\"method\") || \"\";\n  return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get\n}\n\nfunction getEnctype(formElement, submitter) {\n  return fetchEnctypeFromString(submitter?.getAttribute(\"formenctype\") || formElement.enctype)\n}\n\nclass Snapshot {\n  constructor(element) {\n    this.element = element;\n  }\n\n  get activeElement() {\n    return this.element.ownerDocument.activeElement\n  }\n\n  get children() {\n    return [...this.element.children]\n  }\n\n  hasAnchor(anchor) {\n    return this.getElementForAnchor(anchor) != null\n  }\n\n  getElementForAnchor(anchor) {\n    return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null\n  }\n\n  get isConnected() {\n    return this.element.isConnected\n  }\n\n  get firstAutofocusableElement() {\n    return queryAutofocusableElement(this.element)\n  }\n\n  get permanentElements() {\n    return queryPermanentElementsAll(this.element)\n  }\n\n  getPermanentElementById(id) {\n    return getPermanentElementById(this.element, id)\n  }\n\n  getPermanentElementMapForSnapshot(snapshot) {\n    const permanentElementMap = {};\n\n    for (const currentPermanentElement of this.permanentElements) {\n      const { id } = currentPermanentElement;\n      const newPermanentElement = snapshot.getPermanentElementById(id);\n      if (newPermanentElement) {\n        permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n      }\n    }\n\n    return permanentElementMap\n  }\n}\n\nfunction getPermanentElementById(node, id) {\n  return node.querySelector(`#${id}[data-turbo-permanent]`)\n}\n\nfunction queryPermanentElementsAll(node) {\n  return node.querySelectorAll(\"[id][data-turbo-permanent]\")\n}\n\nclass FormSubmitObserver {\n  started = false\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (!this.started) {\n      this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n      this.started = false;\n    }\n  }\n\n  submitCaptured = () => {\n    this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n    this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n  }\n\n  submitBubbled = (event) => {\n    if (!event.defaultPrevented) {\n      const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n      const submitter = event.submitter || undefined;\n\n      if (\n        form &&\n        submissionDoesNotDismissDialog(form, submitter) &&\n        submissionDoesNotTargetIFrame(form, submitter) &&\n        this.delegate.willSubmitForm(form, submitter)\n      ) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        this.delegate.formSubmitted(form, submitter);\n      }\n    }\n  }\n}\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n  const method = submitter?.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n\n  return method != \"dialog\"\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n  const target = submitter?.getAttribute(\"formtarget\") || form.getAttribute(\"target\");\n\n  return doesNotTargetIFrame(target)\n}\n\nclass View {\n  #resolveRenderPromise = (_value) => {}\n  #resolveInterceptionPromise = (_value) => {}\n\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n  }\n\n  // Scrolling\n\n  scrollToAnchor(anchor) {\n    const element = this.snapshot.getElementForAnchor(anchor);\n    if (element) {\n      this.scrollToElement(element);\n      this.focusElement(element);\n    } else {\n      this.scrollToPosition({ x: 0, y: 0 });\n    }\n  }\n\n  scrollToAnchorFromLocation(location) {\n    this.scrollToAnchor(getAnchor(location));\n  }\n\n  scrollToElement(element) {\n    element.scrollIntoView();\n  }\n\n  focusElement(element) {\n    if (element instanceof HTMLElement) {\n      if (element.hasAttribute(\"tabindex\")) {\n        element.focus();\n      } else {\n        element.setAttribute(\"tabindex\", \"-1\");\n        element.focus();\n        element.removeAttribute(\"tabindex\");\n      }\n    }\n  }\n\n  scrollToPosition({ x, y }) {\n    this.scrollRoot.scrollTo(x, y);\n  }\n\n  scrollToTop() {\n    this.scrollToPosition({ x: 0, y: 0 });\n  }\n\n  get scrollRoot() {\n    return window\n  }\n\n  // Rendering\n\n  async render(renderer) {\n    const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;\n\n    // A workaround to ignore tracked element mismatch reloads when performing\n    // a promoted Visit from a frame navigation\n    const shouldInvalidate = willRender;\n\n    if (shouldRender) {\n      try {\n        this.renderPromise = new Promise((resolve) => (this.#resolveRenderPromise = resolve));\n        this.renderer = renderer;\n        await this.prepareToRenderSnapshot(renderer);\n\n        const renderInterception = new Promise((resolve) => (this.#resolveInterceptionPromise = resolve));\n        const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };\n        const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n        if (!immediateRender) await renderInterception;\n\n        await this.renderSnapshot(renderer);\n        this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n        this.delegate.preloadOnLoadLinksForView(this.element);\n        this.finishRenderingSnapshot(renderer);\n      } finally {\n        delete this.renderer;\n        this.#resolveRenderPromise(undefined);\n        delete this.renderPromise;\n      }\n    } else if (shouldInvalidate) {\n      this.invalidate(renderer.reloadReason);\n    }\n  }\n\n  invalidate(reason) {\n    this.delegate.viewInvalidated(reason);\n  }\n\n  async prepareToRenderSnapshot(renderer) {\n    this.markAsPreview(renderer.isPreview);\n    await renderer.prepareToRender();\n  }\n\n  markAsPreview(isPreview) {\n    if (isPreview) {\n      this.element.setAttribute(\"data-turbo-preview\", \"\");\n    } else {\n      this.element.removeAttribute(\"data-turbo-preview\");\n    }\n  }\n\n  markVisitDirection(direction) {\n    this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n  }\n\n  unmarkVisitDirection() {\n    this.element.removeAttribute(\"data-turbo-visit-direction\");\n  }\n\n  async renderSnapshot(renderer) {\n    await renderer.render();\n  }\n\n  finishRenderingSnapshot(renderer) {\n    renderer.finishRendering();\n  }\n}\n\nclass FrameView extends View {\n  missing() {\n    this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n  }\n\n  get snapshot() {\n    return new Snapshot(this.element)\n  }\n}\n\nclass LinkInterceptor {\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n  }\n\n  start() {\n    this.element.addEventListener(\"click\", this.clickBubbled);\n    document.addEventListener(\"turbo:click\", this.linkClicked);\n    document.addEventListener(\"turbo:before-visit\", this.willVisit);\n  }\n\n  stop() {\n    this.element.removeEventListener(\"click\", this.clickBubbled);\n    document.removeEventListener(\"turbo:click\", this.linkClicked);\n    document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n  }\n\n  clickBubbled = (event) => {\n    if (this.clickEventIsSignificant(event)) {\n      this.clickEvent = event;\n    } else {\n      delete this.clickEvent;\n    }\n  }\n\n  linkClicked = (event) => {\n    if (this.clickEvent && this.clickEventIsSignificant(event)) {\n      if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n        this.clickEvent.preventDefault();\n        event.preventDefault();\n        this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n      }\n    }\n    delete this.clickEvent;\n  }\n\n  willVisit = (_event) => {\n    delete this.clickEvent;\n  }\n\n  clickEventIsSignificant(event) {\n    const target = event.composed ? event.target?.parentElement : event.target;\n    const element = findLinkFromClickTarget(target) || target;\n\n    return element instanceof Element && element.closest(\"turbo-frame, html\") == this.element\n  }\n}\n\nclass LinkClickObserver {\n  started = false\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (!this.started) {\n      this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n      this.started = false;\n    }\n  }\n\n  clickCaptured = () => {\n    this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n    this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n  }\n\n  clickBubbled = (event) => {\n    if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n      const target = (event.composedPath && event.composedPath()[0]) || event.target;\n      const link = findLinkFromClickTarget(target);\n      if (link && doesNotTargetIFrame(link.target)) {\n        const location = getLocationForLink(link);\n        if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n          event.preventDefault();\n          this.delegate.followedLinkToLocation(link, location);\n        }\n      }\n    }\n  }\n\n  clickEventIsSignificant(event) {\n    return !(\n      (event.target && event.target.isContentEditable) ||\n      event.defaultPrevented ||\n      event.which > 1 ||\n      event.altKey ||\n      event.ctrlKey ||\n      event.metaKey ||\n      event.shiftKey\n    )\n  }\n}\n\nclass FormLinkClickObserver {\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.linkInterceptor = new LinkClickObserver(this, element);\n  }\n\n  start() {\n    this.linkInterceptor.start();\n  }\n\n  stop() {\n    this.linkInterceptor.stop();\n  }\n\n  // Link hover observer delegate\n\n  canPrefetchRequestToLocation(link, location) {\n    return false\n  }\n\n  prefetchAndCacheRequestToLocation(link, location) {\n    return\n  }\n\n  // Link click observer delegate\n\n  willFollowLinkToLocation(link, location, originalEvent) {\n    return (\n      this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n      (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"))\n    )\n  }\n\n  followedLinkToLocation(link, location) {\n    const form = document.createElement(\"form\");\n\n    const type = \"hidden\";\n    for (const [name, value] of location.searchParams) {\n      form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n    }\n\n    const action = Object.assign(location, { search: \"\" });\n    form.setAttribute(\"data-turbo\", \"true\");\n    form.setAttribute(\"action\", action.href);\n    form.setAttribute(\"hidden\", \"\");\n\n    const method = link.getAttribute(\"data-turbo-method\");\n    if (method) form.setAttribute(\"method\", method);\n\n    const turboFrame = link.getAttribute(\"data-turbo-frame\");\n    if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n\n    const turboAction = getVisitAction(link);\n    if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n\n    const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n    if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n\n    const turboStream = link.hasAttribute(\"data-turbo-stream\");\n    if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n\n    this.delegate.submittedFormLinkToLocation(link, location, form);\n\n    document.body.appendChild(form);\n    form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n    requestAnimationFrame(() => form.requestSubmit());\n  }\n}\n\nclass Bardo {\n  static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n    const bardo = new this(delegate, permanentElementMap);\n    bardo.enter();\n    await callback();\n    bardo.leave();\n  }\n\n  constructor(delegate, permanentElementMap) {\n    this.delegate = delegate;\n    this.permanentElementMap = permanentElementMap;\n  }\n\n  enter() {\n    for (const id in this.permanentElementMap) {\n      const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n      this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n      this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n    }\n  }\n\n  leave() {\n    for (const id in this.permanentElementMap) {\n      const [currentPermanentElement] = this.permanentElementMap[id];\n      this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n      this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n      this.delegate.leavingBardo(currentPermanentElement);\n    }\n  }\n\n  replaceNewPermanentElementWithPlaceholder(permanentElement) {\n    const placeholder = createPlaceholderForPermanentElement(permanentElement);\n    permanentElement.replaceWith(placeholder);\n  }\n\n  replaceCurrentPermanentElementWithClone(permanentElement) {\n    const clone = permanentElement.cloneNode(true);\n    permanentElement.replaceWith(clone);\n  }\n\n  replacePlaceholderWithPermanentElement(permanentElement) {\n    const placeholder = this.getPlaceholderById(permanentElement.id);\n    placeholder?.replaceWith(permanentElement);\n  }\n\n  getPlaceholderById(id) {\n    return this.placeholders.find((element) => element.content == id)\n  }\n\n  get placeholders() {\n    return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")]\n  }\n}\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n  const element = document.createElement(\"meta\");\n  element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n  element.setAttribute(\"content\", permanentElement.id);\n  return element\n}\n\nclass Renderer {\n  #activeElement = null\n\n  static renderElement(currentElement, newElement) {\n    // Abstract method\n  }\n\n  constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {\n    this.currentSnapshot = currentSnapshot;\n    this.newSnapshot = newSnapshot;\n    this.isPreview = isPreview;\n    this.willRender = willRender;\n    this.renderElement = this.constructor.renderElement;\n    this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n  }\n\n  get shouldRender() {\n    return true\n  }\n\n  get shouldAutofocus() {\n    return true\n  }\n\n  get reloadReason() {\n    return\n  }\n\n  prepareToRender() {\n    return\n  }\n\n  render() {\n    // Abstract method\n  }\n\n  finishRendering() {\n    if (this.resolvingFunctions) {\n      this.resolvingFunctions.resolve();\n      delete this.resolvingFunctions;\n    }\n  }\n\n  async preservingPermanentElements(callback) {\n    await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n  }\n\n  focusFirstAutofocusableElement() {\n    if (this.shouldAutofocus) {\n      const element = this.connectedSnapshot.firstAutofocusableElement;\n      if (element) {\n        element.focus();\n      }\n    }\n  }\n\n  // Bardo delegate\n\n  enteringBardo(currentPermanentElement) {\n    if (this.#activeElement) return\n\n    if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n      this.#activeElement = this.currentSnapshot.activeElement;\n    }\n  }\n\n  leavingBardo(currentPermanentElement) {\n    if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {\n      this.#activeElement.focus();\n\n      this.#activeElement = null;\n    }\n  }\n\n  get connectedSnapshot() {\n    return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot\n  }\n\n  get currentElement() {\n    return this.currentSnapshot.element\n  }\n\n  get newElement() {\n    return this.newSnapshot.element\n  }\n\n  get permanentElementMap() {\n    return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)\n  }\n\n  get renderMethod() {\n    return \"replace\"\n  }\n}\n\nclass FrameRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    const destinationRange = document.createRange();\n    destinationRange.selectNodeContents(currentElement);\n    destinationRange.deleteContents();\n\n    const frameElement = newElement;\n    const sourceRange = frameElement.ownerDocument?.createRange();\n    if (sourceRange) {\n      sourceRange.selectNodeContents(frameElement);\n      currentElement.appendChild(sourceRange.extractContents());\n    }\n  }\n\n  constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n    super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n    this.delegate = delegate;\n  }\n\n  get shouldRender() {\n    return true\n  }\n\n  async render() {\n    await nextRepaint();\n    this.preservingPermanentElements(() => {\n      this.loadFrameElement();\n    });\n    this.scrollFrameIntoView();\n    await nextRepaint();\n    this.focusFirstAutofocusableElement();\n    await nextRepaint();\n    this.activateScriptElements();\n  }\n\n  loadFrameElement() {\n    this.delegate.willRenderFrame(this.currentElement, this.newElement);\n    this.renderElement(this.currentElement, this.newElement);\n  }\n\n  scrollFrameIntoView() {\n    if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n      const element = this.currentElement.firstElementChild;\n      const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n      const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n\n      if (element) {\n        element.scrollIntoView({ block, behavior });\n        return true\n      }\n    }\n    return false\n  }\n\n  activateScriptElements() {\n    for (const inertScriptElement of this.newScriptElements) {\n      const activatedScriptElement = activateScriptElement(inertScriptElement);\n      inertScriptElement.replaceWith(activatedScriptElement);\n    }\n  }\n\n  get newScriptElements() {\n    return this.currentElement.querySelectorAll(\"script\")\n  }\n}\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n  if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n    return value\n  } else {\n    return defaultValue\n  }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n  if (value == \"auto\" || value == \"smooth\") {\n    return value\n  } else {\n    return defaultValue\n  }\n}\n\n/**\n * @typedef {object} ConfigHead\n *\n * @property {'merge' | 'append' | 'morph' | 'none'} [style]\n * @property {boolean} [block]\n * @property {boolean} [ignore]\n * @property {function(Element): boolean} [shouldPreserve]\n * @property {function(Element): boolean} [shouldReAppend]\n * @property {function(Element): boolean} [shouldRemove]\n * @property {function(Element, {added: Node[], kept: Element[], removed: Element[]}): void} [afterHeadMorphed]\n */\n\n/**\n * @typedef {object} ConfigCallbacks\n *\n * @property {function(Node): boolean} [beforeNodeAdded]\n * @property {function(Node): void} [afterNodeAdded]\n * @property {function(Element, Node): boolean} [beforeNodeMorphed]\n * @property {function(Element, Node): void} [afterNodeMorphed]\n * @property {function(Element): boolean} [beforeNodeRemoved]\n * @property {function(Element): void} [afterNodeRemoved]\n * @property {function(string, Element, \"update\" | \"remove\"): boolean} [beforeAttributeUpdated]\n */\n\n/**\n * @typedef {object} Config\n *\n * @property {'outerHTML' | 'innerHTML'} [morphStyle]\n * @property {boolean} [ignoreActive]\n * @property {boolean} [ignoreActiveValue]\n * @property {boolean} [restoreFocus]\n * @property {ConfigCallbacks} [callbacks]\n * @property {ConfigHead} [head]\n */\n\n/**\n * @typedef {function} NoOp\n *\n * @returns {void}\n */\n\n/**\n * @typedef {object} ConfigHeadInternal\n *\n * @property {'merge' | 'append' | 'morph' | 'none'} style\n * @property {boolean} [block]\n * @property {boolean} [ignore]\n * @property {(function(Element): boolean) | NoOp} shouldPreserve\n * @property {(function(Element): boolean) | NoOp} shouldReAppend\n * @property {(function(Element): boolean) | NoOp} shouldRemove\n * @property {(function(Element, {added: Node[], kept: Element[], removed: Element[]}): void) | NoOp} afterHeadMorphed\n */\n\n/**\n * @typedef {object} ConfigCallbacksInternal\n *\n * @property {(function(Node): boolean) | NoOp} beforeNodeAdded\n * @property {(function(Node): void) | NoOp} afterNodeAdded\n * @property {(function(Node, Node): boolean) | NoOp} beforeNodeMorphed\n * @property {(function(Node, Node): void) | NoOp} afterNodeMorphed\n * @property {(function(Node): boolean) | NoOp} beforeNodeRemoved\n * @property {(function(Node): void) | NoOp} afterNodeRemoved\n * @property {(function(string, Element, \"update\" | \"remove\"): boolean) | NoOp} beforeAttributeUpdated\n */\n\n/**\n * @typedef {object} ConfigInternal\n *\n * @property {'outerHTML' | 'innerHTML'} morphStyle\n * @property {boolean} [ignoreActive]\n * @property {boolean} [ignoreActiveValue]\n * @property {boolean} [restoreFocus]\n * @property {ConfigCallbacksInternal} callbacks\n * @property {ConfigHeadInternal} head\n */\n\n/**\n * @typedef {Object} IdSets\n * @property {Set<string>} persistentIds\n * @property {Map<Node, Set<string>>} idMap\n */\n\n/**\n * @typedef {Function} Morph\n *\n * @param {Element | Document} oldNode\n * @param {Element | Node | HTMLCollection | Node[] | string | null} newContent\n * @param {Config} [config]\n * @returns {undefined | Node[]}\n */\n\n// base IIFE to define idiomorph\n/**\n *\n * @type {{defaults: ConfigInternal, morph: Morph}}\n */\nvar Idiomorph = (function () {\n\n  /**\n   * @typedef {object} MorphContext\n   *\n   * @property {Element} target\n   * @property {Element} newContent\n   * @property {ConfigInternal} config\n   * @property {ConfigInternal['morphStyle']} morphStyle\n   * @property {ConfigInternal['ignoreActive']} ignoreActive\n   * @property {ConfigInternal['ignoreActiveValue']} ignoreActiveValue\n   * @property {ConfigInternal['restoreFocus']} restoreFocus\n   * @property {Map<Node, Set<string>>} idMap\n   * @property {Set<string>} persistentIds\n   * @property {ConfigInternal['callbacks']} callbacks\n   * @property {ConfigInternal['head']} head\n   * @property {HTMLDivElement} pantry\n   */\n\n  //=============================================================================\n  // AND NOW IT BEGINS...\n  //=============================================================================\n\n  const noOp = () => {};\n  /**\n   * Default configuration values, updatable by users now\n   * @type {ConfigInternal}\n   */\n  const defaults = {\n    morphStyle: \"outerHTML\",\n    callbacks: {\n      beforeNodeAdded: noOp,\n      afterNodeAdded: noOp,\n      beforeNodeMorphed: noOp,\n      afterNodeMorphed: noOp,\n      beforeNodeRemoved: noOp,\n      afterNodeRemoved: noOp,\n      beforeAttributeUpdated: noOp,\n    },\n    head: {\n      style: \"merge\",\n      shouldPreserve: (elt) => elt.getAttribute(\"im-preserve\") === \"true\",\n      shouldReAppend: (elt) => elt.getAttribute(\"im-re-append\") === \"true\",\n      shouldRemove: noOp,\n      afterHeadMorphed: noOp,\n    },\n    restoreFocus: true,\n  };\n\n  /**\n   * Core idiomorph function for morphing one DOM tree to another\n   *\n   * @param {Element | Document} oldNode\n   * @param {Element | Node | HTMLCollection | Node[] | string | null} newContent\n   * @param {Config} [config]\n   * @returns {Promise<Node[]> | Node[]}\n   */\n  function morph(oldNode, newContent, config = {}) {\n    oldNode = normalizeElement(oldNode);\n    const newNode = normalizeParent(newContent);\n    const ctx = createMorphContext(oldNode, newNode, config);\n\n    const morphedNodes = saveAndRestoreFocus(ctx, () => {\n      return withHeadBlocking(\n        ctx,\n        oldNode,\n        newNode,\n        /** @param {MorphContext} ctx */ (ctx) => {\n          if (ctx.morphStyle === \"innerHTML\") {\n            morphChildren(ctx, oldNode, newNode);\n            return Array.from(oldNode.childNodes);\n          } else {\n            return morphOuterHTML(ctx, oldNode, newNode);\n          }\n        },\n      );\n    });\n\n    ctx.pantry.remove();\n    return morphedNodes;\n  }\n\n  /**\n   * Morph just the outerHTML of the oldNode to the newContent\n   * We have to be careful because the oldNode could have siblings which need to be untouched\n   * @param {MorphContext} ctx\n   * @param {Element} oldNode\n   * @param {Element} newNode\n   * @returns {Node[]}\n   */\n  function morphOuterHTML(ctx, oldNode, newNode) {\n    const oldParent = normalizeParent(oldNode);\n\n    // basis for calulating which nodes were morphed\n    // since there may be unmorphed sibling nodes\n    let childNodes = Array.from(oldParent.childNodes);\n    const index = childNodes.indexOf(oldNode);\n    // how many elements are to the right of the oldNode\n    const rightMargin = childNodes.length - (index + 1);\n\n    morphChildren(\n      ctx,\n      oldParent,\n      newNode,\n      // these two optional params are the secret sauce\n      oldNode, // start point for iteration\n      oldNode.nextSibling, // end point for iteration\n    );\n\n    // return just the morphed nodes\n    childNodes = Array.from(oldParent.childNodes);\n    return childNodes.slice(index, childNodes.length - rightMargin);\n  }\n\n  /**\n   * @param {MorphContext} ctx\n   * @param {Function} fn\n   * @returns {Promise<Node[]> | Node[]}\n   */\n  function saveAndRestoreFocus(ctx, fn) {\n    if (!ctx.config.restoreFocus) return fn();\n    let activeElement =\n      /** @type {HTMLInputElement|HTMLTextAreaElement|null} */ (\n        document.activeElement\n      );\n\n    // don't bother if the active element is not an input or textarea\n    if (\n      !(\n        activeElement instanceof HTMLInputElement ||\n        activeElement instanceof HTMLTextAreaElement\n      )\n    ) {\n      return fn();\n    }\n\n    const { id: activeElementId, selectionStart, selectionEnd } = activeElement;\n\n    const results = fn();\n\n    if (activeElementId && activeElementId !== document.activeElement?.id) {\n      activeElement = ctx.target.querySelector(`#${activeElementId}`);\n      activeElement?.focus();\n    }\n    if (activeElement && !activeElement.selectionEnd && selectionEnd) {\n      activeElement.setSelectionRange(selectionStart, selectionEnd);\n    }\n\n    return results;\n  }\n\n  const morphChildren = (function () {\n    /**\n     * This is the core algorithm for matching up children.  The idea is to use id sets to try to match up\n     * nodes as faithfully as possible.  We greedily match, which allows us to keep the algorithm fast, but\n     * by using id sets, we are able to better match up with content deeper in the DOM.\n     *\n     * Basic algorithm:\n     * - for each node in the new content:\n     *   - search self and siblings for an id set match, falling back to a soft match\n     *   - if match found\n     *     - remove any nodes up to the match:\n     *       - pantry persistent nodes\n     *       - delete the rest\n     *     - morph the match\n     *   - elsif no match found, and node is persistent\n     *     - find its match by querying the old root (future) and pantry (past)\n     *     - move it and its children here\n     *     - morph it\n     *   - else\n     *     - create a new node from scratch as a last result\n     *\n     * @param {MorphContext} ctx the merge context\n     * @param {Element} oldParent the old content that we are merging the new content into\n     * @param {Element} newParent the parent element of the new content\n     * @param {Node|null} [insertionPoint] the point in the DOM we start morphing at (defaults to first child)\n     * @param {Node|null} [endPoint] the point in the DOM we stop morphing at (defaults to after last child)\n     */\n    function morphChildren(\n      ctx,\n      oldParent,\n      newParent,\n      insertionPoint = null,\n      endPoint = null,\n    ) {\n      // normalize\n      if (\n        oldParent instanceof HTMLTemplateElement &&\n        newParent instanceof HTMLTemplateElement\n      ) {\n        // @ts-ignore we can pretend the DocumentFragment is an Element\n        oldParent = oldParent.content;\n        // @ts-ignore ditto\n        newParent = newParent.content;\n      }\n      insertionPoint ||= oldParent.firstChild;\n\n      // run through all the new content\n      for (const newChild of newParent.childNodes) {\n        // once we reach the end of the old parent content skip to the end and insert the rest\n        if (insertionPoint && insertionPoint != endPoint) {\n          const bestMatch = findBestMatch(\n            ctx,\n            newChild,\n            insertionPoint,\n            endPoint,\n          );\n          if (bestMatch) {\n            // if the node to morph is not at the insertion point then remove/move up to it\n            if (bestMatch !== insertionPoint) {\n              removeNodesBetween(ctx, insertionPoint, bestMatch);\n            }\n            morphNode(bestMatch, newChild, ctx);\n            insertionPoint = bestMatch.nextSibling;\n            continue;\n          }\n        }\n\n        // if the matching node is elsewhere in the original content\n        if (newChild instanceof Element && ctx.persistentIds.has(newChild.id)) {\n          // move it and all its children here and morph\n          const movedChild = moveBeforeById(\n            oldParent,\n            newChild.id,\n            insertionPoint,\n            ctx,\n          );\n          morphNode(movedChild, newChild, ctx);\n          insertionPoint = movedChild.nextSibling;\n          continue;\n        }\n\n        // last resort: insert the new node from scratch\n        const insertedNode = createNode(\n          oldParent,\n          newChild,\n          insertionPoint,\n          ctx,\n        );\n        // could be null if beforeNodeAdded prevented insertion\n        if (insertedNode) {\n          insertionPoint = insertedNode.nextSibling;\n        }\n      }\n\n      // remove any remaining old nodes that didn't match up with new content\n      while (insertionPoint && insertionPoint != endPoint) {\n        const tempNode = insertionPoint;\n        insertionPoint = insertionPoint.nextSibling;\n        removeNode(ctx, tempNode);\n      }\n    }\n\n    /**\n     * This performs the action of inserting a new node while handling situations where the node contains\n     * elements with persistent ids and possible state info we can still preserve by moving in and then morphing\n     *\n     * @param {Element} oldParent\n     * @param {Node} newChild\n     * @param {Node|null} insertionPoint\n     * @param {MorphContext} ctx\n     * @returns {Node|null}\n     */\n    function createNode(oldParent, newChild, insertionPoint, ctx) {\n      if (ctx.callbacks.beforeNodeAdded(newChild) === false) return null;\n      if (ctx.idMap.has(newChild)) {\n        // node has children with ids with possible state so create a dummy elt of same type and apply full morph algorithm\n        const newEmptyChild = document.createElement(\n          /** @type {Element} */ (newChild).tagName,\n        );\n        oldParent.insertBefore(newEmptyChild, insertionPoint);\n        morphNode(newEmptyChild, newChild, ctx);\n        ctx.callbacks.afterNodeAdded(newEmptyChild);\n        return newEmptyChild;\n      } else {\n        // optimisation: no id state to preserve so we can just insert a clone of the newChild and its descendants\n        const newClonedChild = document.importNode(newChild, true); // importNode to not mutate newParent\n        oldParent.insertBefore(newClonedChild, insertionPoint);\n        ctx.callbacks.afterNodeAdded(newClonedChild);\n        return newClonedChild;\n      }\n    }\n\n    //=============================================================================\n    // Matching Functions\n    //=============================================================================\n    const findBestMatch = (function () {\n      /**\n       * Scans forward from the startPoint to the endPoint looking for a match\n       * for the node. It looks for an id set match first, then a soft match.\n       * We abort softmatching if we find two future soft matches, to reduce churn.\n       * @param {Node} node\n       * @param {MorphContext} ctx\n       * @param {Node | null} startPoint\n       * @param {Node | null} endPoint\n       * @returns {Node | null}\n       */\n      function findBestMatch(ctx, node, startPoint, endPoint) {\n        let softMatch = null;\n        let nextSibling = node.nextSibling;\n        let siblingSoftMatchCount = 0;\n\n        let cursor = startPoint;\n        while (cursor && cursor != endPoint) {\n          // soft matching is a prerequisite for id set matching\n          if (isSoftMatch(cursor, node)) {\n            if (isIdSetMatch(ctx, cursor, node)) {\n              return cursor; // found an id set match, we're done!\n            }\n\n            // we haven't yet saved a soft match fallback\n            if (softMatch === null) {\n              // the current soft match will hard match something else in the future, leave it\n              if (!ctx.idMap.has(cursor)) {\n                // save this as the fallback if we get through the loop without finding a hard match\n                softMatch = cursor;\n              }\n            }\n          }\n          if (\n            softMatch === null &&\n            nextSibling &&\n            isSoftMatch(cursor, nextSibling)\n          ) {\n            // The next new node has a soft match with this node, so\n            // increment the count of future soft matches\n            siblingSoftMatchCount++;\n            nextSibling = nextSibling.nextSibling;\n\n            // If there are two future soft matches, block soft matching for this node to allow\n            // future siblings to soft match. This is to reduce churn in the DOM when an element\n            // is prepended.\n            if (siblingSoftMatchCount >= 2) {\n              softMatch = undefined;\n            }\n          }\n\n          // if the current node contains active element, stop looking for better future matches,\n          // because if one is found, this node will be moved to the pantry, reparenting it and thus losing focus\n          if (cursor.contains(document.activeElement)) break;\n\n          cursor = cursor.nextSibling;\n        }\n\n        return softMatch || null;\n      }\n\n      /**\n       *\n       * @param {MorphContext} ctx\n       * @param {Node} oldNode\n       * @param {Node} newNode\n       * @returns {boolean}\n       */\n      function isIdSetMatch(ctx, oldNode, newNode) {\n        let oldSet = ctx.idMap.get(oldNode);\n        let newSet = ctx.idMap.get(newNode);\n\n        if (!newSet || !oldSet) return false;\n\n        for (const id of oldSet) {\n          // a potential match is an id in the new and old nodes that\n          // has not already been merged into the DOM\n          // But the newNode content we call this on has not been\n          // merged yet and we don't allow duplicate IDs so it is simple\n          if (newSet.has(id)) {\n            return true;\n          }\n        }\n        return false;\n      }\n\n      /**\n       *\n       * @param {Node} oldNode\n       * @param {Node} newNode\n       * @returns {boolean}\n       */\n      function isSoftMatch(oldNode, newNode) {\n        // ok to cast: if one is not element, `id` and `tagName` will be undefined and we'll just compare that.\n        const oldElt = /** @type {Element} */ (oldNode);\n        const newElt = /** @type {Element} */ (newNode);\n\n        return (\n          oldElt.nodeType === newElt.nodeType &&\n          oldElt.tagName === newElt.tagName &&\n          // If oldElt has an `id` with possible state and it doesn't match newElt.id then avoid morphing.\n          // We'll still match an anonymous node with an IDed newElt, though, because if it got this far,\n          // its not persistent, and new nodes can't have any hidden state.\n          (!oldElt.id || oldElt.id === newElt.id)\n        );\n      }\n\n      return findBestMatch;\n    })();\n\n    //=============================================================================\n    // DOM Manipulation Functions\n    //=============================================================================\n\n    /**\n     * Gets rid of an unwanted DOM node; strategy depends on nature of its reuse:\n     * - Persistent nodes will be moved to the pantry for later reuse\n     * - Other nodes will have their hooks called, and then are removed\n     * @param {MorphContext} ctx\n     * @param {Node} node\n     */\n    function removeNode(ctx, node) {\n      // are we going to id set match this later?\n      if (ctx.idMap.has(node)) {\n        // skip callbacks and move to pantry\n        moveBefore(ctx.pantry, node, null);\n      } else {\n        // remove for realsies\n        if (ctx.callbacks.beforeNodeRemoved(node) === false) return;\n        node.parentNode?.removeChild(node);\n        ctx.callbacks.afterNodeRemoved(node);\n      }\n    }\n\n    /**\n     * Remove nodes between the start and end nodes\n     * @param {MorphContext} ctx\n     * @param {Node} startInclusive\n     * @param {Node} endExclusive\n     * @returns {Node|null}\n     */\n    function removeNodesBetween(ctx, startInclusive, endExclusive) {\n      /** @type {Node | null} */\n      let cursor = startInclusive;\n      // remove nodes until the endExclusive node\n      while (cursor && cursor !== endExclusive) {\n        let tempNode = /** @type {Node} */ (cursor);\n        cursor = cursor.nextSibling;\n        removeNode(ctx, tempNode);\n      }\n      return cursor;\n    }\n\n    /**\n     * Search for an element by id within the document and pantry, and move it using moveBefore.\n     *\n     * @param {Element} parentNode - The parent node to which the element will be moved.\n     * @param {string} id - The ID of the element to be moved.\n     * @param {Node | null} after - The reference node to insert the element before.\n     *                              If `null`, the element is appended as the last child.\n     * @param {MorphContext} ctx\n     * @returns {Element} The found element\n     */\n    function moveBeforeById(parentNode, id, after, ctx) {\n      const target =\n        /** @type {Element} - will always be found */\n        (\n          ctx.target.querySelector(`#${id}`) ||\n            ctx.pantry.querySelector(`#${id}`)\n        );\n      removeElementFromAncestorsIdMaps(target, ctx);\n      moveBefore(parentNode, target, after);\n      return target;\n    }\n\n    /**\n     * Removes an element from its ancestors' id maps. This is needed when an element is moved from the\n     * \"future\" via `moveBeforeId`. Otherwise, its erstwhile ancestors could be mistakenly moved to the\n     * pantry rather than being deleted, preventing their removal hooks from being called.\n     *\n     * @param {Element} element - element to remove from its ancestors' id maps\n     * @param {MorphContext} ctx\n     */\n    function removeElementFromAncestorsIdMaps(element, ctx) {\n      const id = element.id;\n      /** @ts-ignore - safe to loop in this way **/\n      while ((element = element.parentNode)) {\n        let idSet = ctx.idMap.get(element);\n        if (idSet) {\n          idSet.delete(id);\n          if (!idSet.size) {\n            ctx.idMap.delete(element);\n          }\n        }\n      }\n    }\n\n    /**\n     * Moves an element before another element within the same parent.\n     * Uses the proposed `moveBefore` API if available (and working), otherwise falls back to `insertBefore`.\n     * This is essentialy a forward-compat wrapper.\n     *\n     * @param {Element} parentNode - The parent node containing the after element.\n     * @param {Node} element - The element to be moved.\n     * @param {Node | null} after - The reference node to insert `element` before.\n     *                              If `null`, `element` is appended as the last child.\n     */\n    function moveBefore(parentNode, element, after) {\n      // @ts-ignore - use proposed moveBefore feature\n      if (parentNode.moveBefore) {\n        try {\n          // @ts-ignore - use proposed moveBefore feature\n          parentNode.moveBefore(element, after);\n        } catch (e) {\n          // fall back to insertBefore as some browsers may fail on moveBefore when trying to move Dom disconnected nodes to pantry\n          parentNode.insertBefore(element, after);\n        }\n      } else {\n        parentNode.insertBefore(element, after);\n      }\n    }\n\n    return morphChildren;\n  })();\n\n  //=============================================================================\n  // Single Node Morphing Code\n  //=============================================================================\n  const morphNode = (function () {\n    /**\n     * @param {Node} oldNode root node to merge content into\n     * @param {Node} newContent new content to merge\n     * @param {MorphContext} ctx the merge context\n     * @returns {Node | null} the element that ended up in the DOM\n     */\n    function morphNode(oldNode, newContent, ctx) {\n      if (ctx.ignoreActive && oldNode === document.activeElement) {\n        // don't morph focused element\n        return null;\n      }\n\n      if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) {\n        return oldNode;\n      }\n\n      if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ; else if (\n        oldNode instanceof HTMLHeadElement &&\n        ctx.head.style !== \"morph\"\n      ) {\n        // ok to cast: if newContent wasn't also a <head>, it would've got caught in the `!isSoftMatch` branch above\n        handleHeadElement(\n          oldNode,\n          /** @type {HTMLHeadElement} */ (newContent),\n          ctx,\n        );\n      } else {\n        morphAttributes(oldNode, newContent, ctx);\n        if (!ignoreValueOfActiveElement(oldNode, ctx)) {\n          // @ts-ignore newContent can be a node here because .firstChild will be null\n          morphChildren(ctx, oldNode, newContent);\n        }\n      }\n      ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n      return oldNode;\n    }\n\n    /**\n     * syncs the oldNode to the newNode, copying over all attributes and\n     * inner element state from the newNode to the oldNode\n     *\n     * @param {Node} oldNode the node to copy attributes & state to\n     * @param {Node} newNode the node to copy attributes & state from\n     * @param {MorphContext} ctx the merge context\n     */\n    function morphAttributes(oldNode, newNode, ctx) {\n      let type = newNode.nodeType;\n\n      // if is an element type, sync the attributes from the\n      // new node into the new node\n      if (type === 1 /* element type */) {\n        const oldElt = /** @type {Element} */ (oldNode);\n        const newElt = /** @type {Element} */ (newNode);\n\n        const oldAttributes = oldElt.attributes;\n        const newAttributes = newElt.attributes;\n        for (const newAttribute of newAttributes) {\n          if (ignoreAttribute(newAttribute.name, oldElt, \"update\", ctx)) {\n            continue;\n          }\n          if (oldElt.getAttribute(newAttribute.name) !== newAttribute.value) {\n            oldElt.setAttribute(newAttribute.name, newAttribute.value);\n          }\n        }\n        // iterate backwards to avoid skipping over items when a delete occurs\n        for (let i = oldAttributes.length - 1; 0 <= i; i--) {\n          const oldAttribute = oldAttributes[i];\n\n          // toAttributes is a live NamedNodeMap, so iteration+mutation is unsafe\n          // e.g. custom element attribute callbacks can remove other attributes\n          if (!oldAttribute) continue;\n\n          if (!newElt.hasAttribute(oldAttribute.name)) {\n            if (ignoreAttribute(oldAttribute.name, oldElt, \"remove\", ctx)) {\n              continue;\n            }\n            oldElt.removeAttribute(oldAttribute.name);\n          }\n        }\n\n        if (!ignoreValueOfActiveElement(oldElt, ctx)) {\n          syncInputValue(oldElt, newElt, ctx);\n        }\n      }\n\n      // sync text nodes\n      if (type === 8 /* comment */ || type === 3 /* text */) {\n        if (oldNode.nodeValue !== newNode.nodeValue) {\n          oldNode.nodeValue = newNode.nodeValue;\n        }\n      }\n    }\n\n    /**\n     * NB: many bothans died to bring us information:\n     *\n     *  https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n     *  https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n     *\n     * @param {Element} oldElement the element to sync the input value to\n     * @param {Element} newElement the element to sync the input value from\n     * @param {MorphContext} ctx the merge context\n     */\n    function syncInputValue(oldElement, newElement, ctx) {\n      if (\n        oldElement instanceof HTMLInputElement &&\n        newElement instanceof HTMLInputElement &&\n        newElement.type !== \"file\"\n      ) {\n        let newValue = newElement.value;\n        let oldValue = oldElement.value;\n\n        // sync boolean attributes\n        syncBooleanAttribute(oldElement, newElement, \"checked\", ctx);\n        syncBooleanAttribute(oldElement, newElement, \"disabled\", ctx);\n\n        if (!newElement.hasAttribute(\"value\")) {\n          if (!ignoreAttribute(\"value\", oldElement, \"remove\", ctx)) {\n            oldElement.value = \"\";\n            oldElement.removeAttribute(\"value\");\n          }\n        } else if (oldValue !== newValue) {\n          if (!ignoreAttribute(\"value\", oldElement, \"update\", ctx)) {\n            oldElement.setAttribute(\"value\", newValue);\n            oldElement.value = newValue;\n          }\n        }\n        // TODO: QUESTION(1cg): this used to only check `newElement` unlike the other branches -- why?\n        // did I break something?\n      } else if (\n        oldElement instanceof HTMLOptionElement &&\n        newElement instanceof HTMLOptionElement\n      ) {\n        syncBooleanAttribute(oldElement, newElement, \"selected\", ctx);\n      } else if (\n        oldElement instanceof HTMLTextAreaElement &&\n        newElement instanceof HTMLTextAreaElement\n      ) {\n        let newValue = newElement.value;\n        let oldValue = oldElement.value;\n        if (ignoreAttribute(\"value\", oldElement, \"update\", ctx)) {\n          return;\n        }\n        if (newValue !== oldValue) {\n          oldElement.value = newValue;\n        }\n        if (\n          oldElement.firstChild &&\n          oldElement.firstChild.nodeValue !== newValue\n        ) {\n          oldElement.firstChild.nodeValue = newValue;\n        }\n      }\n    }\n\n    /**\n     * @param {Element} oldElement element to write the value to\n     * @param {Element} newElement element to read the value from\n     * @param {string} attributeName the attribute name\n     * @param {MorphContext} ctx the merge context\n     */\n    function syncBooleanAttribute(oldElement, newElement, attributeName, ctx) {\n      // @ts-ignore this function is only used on boolean attrs that are reflected as dom properties\n      const newLiveValue = newElement[attributeName],\n        // @ts-ignore ditto\n        oldLiveValue = oldElement[attributeName];\n      if (newLiveValue !== oldLiveValue) {\n        const ignoreUpdate = ignoreAttribute(\n          attributeName,\n          oldElement,\n          \"update\",\n          ctx,\n        );\n        if (!ignoreUpdate) {\n          // update attribute's associated DOM property\n          // @ts-ignore this function is only used on boolean attrs that are reflected as dom properties\n          oldElement[attributeName] = newElement[attributeName];\n        }\n        if (newLiveValue) {\n          if (!ignoreUpdate) {\n            // https://developer.mozilla.org/en-US/docs/Glossary/Boolean/HTML\n            // this is the correct way to set a boolean attribute to \"true\"\n            oldElement.setAttribute(attributeName, \"\");\n          }\n        } else {\n          if (!ignoreAttribute(attributeName, oldElement, \"remove\", ctx)) {\n            oldElement.removeAttribute(attributeName);\n          }\n        }\n      }\n    }\n\n    /**\n     * @param {string} attr the attribute to be mutated\n     * @param {Element} element the element that is going to be updated\n     * @param {\"update\" | \"remove\"} updateType\n     * @param {MorphContext} ctx the merge context\n     * @returns {boolean} true if the attribute should be ignored, false otherwise\n     */\n    function ignoreAttribute(attr, element, updateType, ctx) {\n      if (\n        attr === \"value\" &&\n        ctx.ignoreActiveValue &&\n        element === document.activeElement\n      ) {\n        return true;\n      }\n      return (\n        ctx.callbacks.beforeAttributeUpdated(attr, element, updateType) ===\n        false\n      );\n    }\n\n    /**\n     * @param {Node} possibleActiveElement\n     * @param {MorphContext} ctx\n     * @returns {boolean}\n     */\n    function ignoreValueOfActiveElement(possibleActiveElement, ctx) {\n      return (\n        !!ctx.ignoreActiveValue &&\n        possibleActiveElement === document.activeElement &&\n        possibleActiveElement !== document.body\n      );\n    }\n\n    return morphNode;\n  })();\n\n  //=============================================================================\n  // Head Management Functions\n  //=============================================================================\n  /**\n   * @param {MorphContext} ctx\n   * @param {Element} oldNode\n   * @param {Element} newNode\n   * @param {function} callback\n   * @returns {Node[] | Promise<Node[]>}\n   */\n  function withHeadBlocking(ctx, oldNode, newNode, callback) {\n    if (ctx.head.block) {\n      const oldHead = oldNode.querySelector(\"head\");\n      const newHead = newNode.querySelector(\"head\");\n      if (oldHead && newHead) {\n        const promises = handleHeadElement(oldHead, newHead, ctx);\n        // when head promises resolve, proceed ignoring the head tag\n        return Promise.all(promises).then(() => {\n          const newCtx = Object.assign(ctx, {\n            head: {\n              block: false,\n              ignore: true,\n            },\n          });\n          return callback(newCtx);\n        });\n      }\n    }\n    // just proceed if we not head blocking\n    return callback(ctx);\n  }\n\n  /**\n   *  The HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n   *\n   * @param {Element} oldHead\n   * @param {Element} newHead\n   * @param {MorphContext} ctx\n   * @returns {Promise<void>[]}\n   */\n  function handleHeadElement(oldHead, newHead, ctx) {\n    let added = [];\n    let removed = [];\n    let preserved = [];\n    let nodesToAppend = [];\n\n    // put all new head elements into a Map, by their outerHTML\n    let srcToNewHeadNodes = new Map();\n    for (const newHeadChild of newHead.children) {\n      srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n    }\n\n    // for each elt in the current head\n    for (const currentHeadElt of oldHead.children) {\n      // If the current head element is in the map\n      let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n      let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n      let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n      if (inNewContent || isPreserved) {\n        if (isReAppended) {\n          // remove the current version and let the new version replace it and re-execute\n          removed.push(currentHeadElt);\n        } else {\n          // this element already exists and should not be re-appended, so remove it from\n          // the new content map, preserving it in the DOM\n          srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n          preserved.push(currentHeadElt);\n        }\n      } else {\n        if (ctx.head.style === \"append\") {\n          // we are appending and this existing element is not new content\n          // so if and only if it is marked for re-append do we do anything\n          if (isReAppended) {\n            removed.push(currentHeadElt);\n            nodesToAppend.push(currentHeadElt);\n          }\n        } else {\n          // if this is a merge, we remove this content since it is not in the new head\n          if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n            removed.push(currentHeadElt);\n          }\n        }\n      }\n    }\n\n    // Push the remaining new head elements in the Map into the\n    // nodes to append to the head tag\n    nodesToAppend.push(...srcToNewHeadNodes.values());\n\n    let promises = [];\n    for (const newNode of nodesToAppend) {\n      // TODO: This could theoretically be null, based on type\n      let newElt = /** @type {ChildNode} */ (\n        document.createRange().createContextualFragment(newNode.outerHTML)\n          .firstChild\n      );\n      if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n        if (\n          (\"href\" in newElt && newElt.href) ||\n          (\"src\" in newElt && newElt.src)\n        ) {\n          /** @type {(result?: any) => void} */ let resolve;\n          let promise = new Promise(function (_resolve) {\n            resolve = _resolve;\n          });\n          newElt.addEventListener(\"load\", function () {\n            resolve();\n          });\n          promises.push(promise);\n        }\n        oldHead.appendChild(newElt);\n        ctx.callbacks.afterNodeAdded(newElt);\n        added.push(newElt);\n      }\n    }\n\n    // remove all removed elements, after we have appended the new elements to avoid\n    // additional network requests for things like style sheets\n    for (const removedElement of removed) {\n      if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n        oldHead.removeChild(removedElement);\n        ctx.callbacks.afterNodeRemoved(removedElement);\n      }\n    }\n\n    ctx.head.afterHeadMorphed(oldHead, {\n      added: added,\n      kept: preserved,\n      removed: removed,\n    });\n    return promises;\n  }\n\n  //=============================================================================\n  // Create Morph Context Functions\n  //=============================================================================\n  const createMorphContext = (function () {\n    /**\n     *\n     * @param {Element} oldNode\n     * @param {Element} newContent\n     * @param {Config} config\n     * @returns {MorphContext}\n     */\n    function createMorphContext(oldNode, newContent, config) {\n      const { persistentIds, idMap } = createIdMaps(oldNode, newContent);\n\n      const mergedConfig = mergeDefaults(config);\n      const morphStyle = mergedConfig.morphStyle || \"outerHTML\";\n      if (![\"innerHTML\", \"outerHTML\"].includes(morphStyle)) {\n        throw `Do not understand how to morph style ${morphStyle}`;\n      }\n\n      return {\n        target: oldNode,\n        newContent: newContent,\n        config: mergedConfig,\n        morphStyle: morphStyle,\n        ignoreActive: mergedConfig.ignoreActive,\n        ignoreActiveValue: mergedConfig.ignoreActiveValue,\n        restoreFocus: mergedConfig.restoreFocus,\n        idMap: idMap,\n        persistentIds: persistentIds,\n        pantry: createPantry(),\n        callbacks: mergedConfig.callbacks,\n        head: mergedConfig.head,\n      };\n    }\n\n    /**\n     * Deep merges the config object and the Idiomorph.defaults object to\n     * produce a final configuration object\n     * @param {Config} config\n     * @returns {ConfigInternal}\n     */\n    function mergeDefaults(config) {\n      let finalConfig = Object.assign({}, defaults);\n\n      // copy top level stuff into final config\n      Object.assign(finalConfig, config);\n\n      // copy callbacks into final config (do this to deep merge the callbacks)\n      finalConfig.callbacks = Object.assign(\n        {},\n        defaults.callbacks,\n        config.callbacks,\n      );\n\n      // copy head config into final config  (do this to deep merge the head)\n      finalConfig.head = Object.assign({}, defaults.head, config.head);\n\n      return finalConfig;\n    }\n\n    /**\n     * @returns {HTMLDivElement}\n     */\n    function createPantry() {\n      const pantry = document.createElement(\"div\");\n      pantry.hidden = true;\n      document.body.insertAdjacentElement(\"afterend\", pantry);\n      return pantry;\n    }\n\n    /**\n     * Returns all elements with an ID contained within the root element and its descendants\n     *\n     * @param {Element} root\n     * @returns {Element[]}\n     */\n    function findIdElements(root) {\n      let elements = Array.from(root.querySelectorAll(\"[id]\"));\n      if (root.id) {\n        elements.push(root);\n      }\n      return elements;\n    }\n\n    /**\n     * A bottom-up algorithm that populates a map of Element -> IdSet.\n     * The idSet for a given element is the set of all IDs contained within its subtree.\n     * As an optimzation, we filter these IDs through the given list of persistent IDs,\n     * because we don't need to bother considering IDed elements that won't be in the new content.\n     *\n     * @param {Map<Node, Set<string>>} idMap\n     * @param {Set<string>} persistentIds\n     * @param {Element} root\n     * @param {Element[]} elements\n     */\n    function populateIdMapWithTree(idMap, persistentIds, root, elements) {\n      for (const elt of elements) {\n        if (persistentIds.has(elt.id)) {\n          /** @type {Element|null} */\n          let current = elt;\n          // walk up the parent hierarchy of that element, adding the id\n          // of element to the parent's id set\n          while (current) {\n            let idSet = idMap.get(current);\n            // if the id set doesn't exist, create it and insert it in the map\n            if (idSet == null) {\n              idSet = new Set();\n              idMap.set(current, idSet);\n            }\n            idSet.add(elt.id);\n\n            if (current === root) break;\n            current = current.parentElement;\n          }\n        }\n      }\n    }\n\n    /**\n     * This function computes a map of nodes to all ids contained within that node (inclusive of the\n     * node).  This map can be used to ask if two nodes have intersecting sets of ids, which allows\n     * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n     * to contribute to a parent nodes matching.\n     *\n     * @param {Element} oldContent  the old content that will be morphed\n     * @param {Element} newContent  the new content to morph to\n     * @returns {IdSets}\n     */\n    function createIdMaps(oldContent, newContent) {\n      const oldIdElements = findIdElements(oldContent);\n      const newIdElements = findIdElements(newContent);\n\n      const persistentIds = createPersistentIds(oldIdElements, newIdElements);\n\n      /** @type {Map<Node, Set<string>>} */\n      let idMap = new Map();\n      populateIdMapWithTree(idMap, persistentIds, oldContent, oldIdElements);\n\n      /** @ts-ignore - if newContent is a duck-typed parent, pass its single child node as the root to halt upwards iteration */\n      const newRoot = newContent.__idiomorphRoot || newContent;\n      populateIdMapWithTree(idMap, persistentIds, newRoot, newIdElements);\n\n      return { persistentIds, idMap };\n    }\n\n    /**\n     * This function computes the set of ids that persist between the two contents excluding duplicates\n     *\n     * @param {Element[]} oldIdElements\n     * @param {Element[]} newIdElements\n     * @returns {Set<string>}\n     */\n    function createPersistentIds(oldIdElements, newIdElements) {\n      let duplicateIds = new Set();\n\n      /** @type {Map<string, string>} */\n      let oldIdTagNameMap = new Map();\n      for (const { id, tagName } of oldIdElements) {\n        if (oldIdTagNameMap.has(id)) {\n          duplicateIds.add(id);\n        } else {\n          oldIdTagNameMap.set(id, tagName);\n        }\n      }\n\n      let persistentIds = new Set();\n      for (const { id, tagName } of newIdElements) {\n        if (persistentIds.has(id)) {\n          duplicateIds.add(id);\n        } else if (oldIdTagNameMap.get(id) === tagName) {\n          persistentIds.add(id);\n        }\n        // skip if tag types mismatch because its not possible to morph one tag into another\n      }\n\n      for (const id of duplicateIds) {\n        persistentIds.delete(id);\n      }\n      return persistentIds;\n    }\n\n    return createMorphContext;\n  })();\n\n  //=============================================================================\n  // HTML Normalization Functions\n  //=============================================================================\n  const { normalizeElement, normalizeParent } = (function () {\n    /** @type {WeakSet<Node>} */\n    const generatedByIdiomorph = new WeakSet();\n\n    /**\n     *\n     * @param {Element | Document} content\n     * @returns {Element}\n     */\n    function normalizeElement(content) {\n      if (content instanceof Document) {\n        return content.documentElement;\n      } else {\n        return content;\n      }\n    }\n\n    /**\n     *\n     * @param {null | string | Node | HTMLCollection | Node[] | Document & {generatedByIdiomorph:boolean}} newContent\n     * @returns {Element}\n     */\n    function normalizeParent(newContent) {\n      if (newContent == null) {\n        return document.createElement(\"div\"); // dummy parent element\n      } else if (typeof newContent === \"string\") {\n        return normalizeParent(parseContent(newContent));\n      } else if (\n        generatedByIdiomorph.has(/** @type {Element} */ (newContent))\n      ) {\n        // the template tag created by idiomorph parsing can serve as a dummy parent\n        return /** @type {Element} */ (newContent);\n      } else if (newContent instanceof Node) {\n        if (newContent.parentNode) {\n          // we can't use the parent directly because newContent may have siblings\n          // that we don't want in the morph, and reparenting might be expensive (TODO is it?),\n          // so we create a duck-typed parent node instead.\n          return createDuckTypedParent(newContent);\n        } else {\n          // a single node is added as a child to a dummy parent\n          const dummyParent = document.createElement(\"div\");\n          dummyParent.append(newContent);\n          return dummyParent;\n        }\n      } else {\n        // all nodes in the array or HTMLElement collection are consolidated under\n        // a single dummy parent element\n        const dummyParent = document.createElement(\"div\");\n        for (const elt of [...newContent]) {\n          dummyParent.append(elt);\n        }\n        return dummyParent;\n      }\n    }\n\n    /**\n     * Creates a fake duck-typed parent element to wrap a single node, without actually reparenting it.\n     * \"If it walks like a duck, and quacks like a duck, then it must be a duck!\" -- James Whitcomb Riley (1849\u20131916)\n     *\n     * @param {Node} newContent\n     * @returns {Element}\n     */\n    function createDuckTypedParent(newContent) {\n      return /** @type {Element} */ (\n        /** @type {unknown} */ ({\n          childNodes: [newContent],\n          /** @ts-ignore - cover your eyes for a minute, tsc */\n          querySelectorAll: (s) => {\n            /** @ts-ignore */\n            const elements = newContent.querySelectorAll(s);\n            /** @ts-ignore */\n            return newContent.matches(s) ? [newContent, ...elements] : elements;\n          },\n          /** @ts-ignore */\n          insertBefore: (n, r) => newContent.parentNode.insertBefore(n, r),\n          /** @ts-ignore */\n          moveBefore: (n, r) => newContent.parentNode.moveBefore(n, r),\n          // for later use with populateIdMapWithTree to halt upwards iteration\n          get __idiomorphRoot() {\n            return newContent;\n          },\n        })\n      );\n    }\n\n    /**\n     *\n     * @param {string} newContent\n     * @returns {Node | null | DocumentFragment}\n     */\n    function parseContent(newContent) {\n      let parser = new DOMParser();\n\n      // remove svgs to avoid false-positive matches on head, etc.\n      let contentWithSvgsRemoved = newContent.replace(\n        /<svg(\\s[^>]*>|>)([\\s\\S]*?)<\\/svg>/gim,\n        \"\",\n      );\n\n      // if the newContent contains a html, head or body tag, we can simply parse it w/o wrapping\n      if (\n        contentWithSvgsRemoved.match(/<\\/html>/) ||\n        contentWithSvgsRemoved.match(/<\\/head>/) ||\n        contentWithSvgsRemoved.match(/<\\/body>/)\n      ) {\n        let content = parser.parseFromString(newContent, \"text/html\");\n        // if it is a full HTML document, return the document itself as the parent container\n        if (contentWithSvgsRemoved.match(/<\\/html>/)) {\n          generatedByIdiomorph.add(content);\n          return content;\n        } else {\n          // otherwise return the html element as the parent container\n          let htmlElement = content.firstChild;\n          if (htmlElement) {\n            generatedByIdiomorph.add(htmlElement);\n          }\n          return htmlElement;\n        }\n      } else {\n        // if it is partial HTML, wrap it in a template tag to provide a parent element and also to help\n        // deal with touchy tags like tr, tbody, etc.\n        let responseDoc = parser.parseFromString(\n          \"<body><template>\" + newContent + \"</template></body>\",\n          \"text/html\",\n        );\n        let content = /** @type {HTMLTemplateElement} */ (\n          responseDoc.body.querySelector(\"template\")\n        ).content;\n        generatedByIdiomorph.add(content);\n        return content;\n      }\n    }\n\n    return { normalizeElement, normalizeParent };\n  })();\n\n  //=============================================================================\n  // This is what ends up becoming the Idiomorph global object\n  //=============================================================================\n  return {\n    morph,\n    defaults,\n  };\n})();\n\nfunction morphElements(currentElement, newElement, { callbacks, ...options } = {}) {\n  Idiomorph.morph(currentElement, newElement, {\n    ...options,\n    callbacks: new DefaultIdiomorphCallbacks(callbacks)\n  });\n}\n\nfunction morphChildren(currentElement, newElement) {\n  morphElements(currentElement, newElement.childNodes, {\n    morphStyle: \"innerHTML\"\n  });\n}\n\nclass DefaultIdiomorphCallbacks {\n  #beforeNodeMorphed\n\n  constructor({ beforeNodeMorphed } = {}) {\n    this.#beforeNodeMorphed = beforeNodeMorphed || (() => true);\n  }\n\n  beforeNodeAdded = (node) => {\n    return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id))\n  }\n\n  beforeNodeMorphed = (currentElement, newElement) => {\n    if (currentElement instanceof Element) {\n      if (!currentElement.hasAttribute(\"data-turbo-permanent\") && this.#beforeNodeMorphed(currentElement, newElement)) {\n        const event = dispatch(\"turbo:before-morph-element\", {\n          cancelable: true,\n          target: currentElement,\n          detail: { currentElement, newElement }\n        });\n\n        return !event.defaultPrevented\n      } else {\n        return false\n      }\n    }\n  }\n\n  beforeAttributeUpdated = (attributeName, target, mutationType) => {\n    const event = dispatch(\"turbo:before-morph-attribute\", {\n      cancelable: true,\n      target,\n      detail: { attributeName, mutationType }\n    });\n\n    return !event.defaultPrevented\n  }\n\n  beforeNodeRemoved = (node) => {\n    return this.beforeNodeMorphed(node)\n  }\n\n  afterNodeMorphed = (currentElement, newElement) => {\n    if (currentElement instanceof Element) {\n      dispatch(\"turbo:morph-element\", {\n        target: currentElement,\n        detail: { currentElement, newElement }\n      });\n    }\n  }\n}\n\nclass MorphingFrameRenderer extends FrameRenderer {\n  static renderElement(currentElement, newElement) {\n    dispatch(\"turbo:before-frame-morph\", {\n      target: currentElement,\n      detail: { currentElement, newElement }\n    });\n\n    morphChildren(currentElement, newElement);\n  }\n\n  async preservingPermanentElements(callback) {\n    return await callback()\n  }\n}\n\nclass ProgressBar {\n  static animationDuration = 300 /*ms*/\n\n  static get defaultCSS() {\n    return unindent`\n      .turbo-progress-bar {\n        position: fixed;\n        display: block;\n        top: 0;\n        left: 0;\n        height: 3px;\n        background: #0076ff;\n        z-index: 2147483647;\n        transition:\n          width ${ProgressBar.animationDuration}ms ease-out,\n          opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n        transform: translate3d(0, 0, 0);\n      }\n    `\n  }\n\n  hiding = false\n  value = 0\n  visible = false\n\n  constructor() {\n    this.stylesheetElement = this.createStylesheetElement();\n    this.progressElement = this.createProgressElement();\n    this.installStylesheetElement();\n    this.setValue(0);\n  }\n\n  show() {\n    if (!this.visible) {\n      this.visible = true;\n      this.installProgressElement();\n      this.startTrickling();\n    }\n  }\n\n  hide() {\n    if (this.visible && !this.hiding) {\n      this.hiding = true;\n      this.fadeProgressElement(() => {\n        this.uninstallProgressElement();\n        this.stopTrickling();\n        this.visible = false;\n        this.hiding = false;\n      });\n    }\n  }\n\n  setValue(value) {\n    this.value = value;\n    this.refresh();\n  }\n\n  // Private\n\n  installStylesheetElement() {\n    document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n  }\n\n  installProgressElement() {\n    this.progressElement.style.width = \"0\";\n    this.progressElement.style.opacity = \"1\";\n    document.documentElement.insertBefore(this.progressElement, document.body);\n    this.refresh();\n  }\n\n  fadeProgressElement(callback) {\n    this.progressElement.style.opacity = \"0\";\n    setTimeout(callback, ProgressBar.animationDuration * 1.5);\n  }\n\n  uninstallProgressElement() {\n    if (this.progressElement.parentNode) {\n      document.documentElement.removeChild(this.progressElement);\n    }\n  }\n\n  startTrickling() {\n    if (!this.trickleInterval) {\n      this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n    }\n  }\n\n  stopTrickling() {\n    window.clearInterval(this.trickleInterval);\n    delete this.trickleInterval;\n  }\n\n  trickle = () => {\n    this.setValue(this.value + Math.random() / 100);\n  }\n\n  refresh() {\n    requestAnimationFrame(() => {\n      this.progressElement.style.width = `${10 + this.value * 90}%`;\n    });\n  }\n\n  createStylesheetElement() {\n    const element = document.createElement(\"style\");\n    element.type = \"text/css\";\n    element.textContent = ProgressBar.defaultCSS;\n    const cspNonce = getCspNonce();\n    if (cspNonce) {\n      element.nonce = cspNonce;\n    }\n    return element\n  }\n\n  createProgressElement() {\n    const element = document.createElement(\"div\");\n    element.className = \"turbo-progress-bar\";\n    return element\n  }\n}\n\nclass HeadSnapshot extends Snapshot {\n  detailsByOuterHTML = this.children\n    .filter((element) => !elementIsNoscript(element))\n    .map((element) => elementWithoutNonce(element))\n    .reduce((result, element) => {\n      const { outerHTML } = element;\n      const details =\n        outerHTML in result\n          ? result[outerHTML]\n          : {\n              type: elementType(element),\n              tracked: elementIsTracked(element),\n              elements: []\n            };\n      return {\n        ...result,\n        [outerHTML]: {\n          ...details,\n          elements: [...details.elements, element]\n        }\n      }\n    }, {})\n\n  get trackedElementSignature() {\n    return Object.keys(this.detailsByOuterHTML)\n      .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n      .join(\"\")\n  }\n\n  getScriptElementsNotInSnapshot(snapshot) {\n    return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot)\n  }\n\n  getStylesheetElementsNotInSnapshot(snapshot) {\n    return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot)\n  }\n\n  getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n    return Object.keys(this.detailsByOuterHTML)\n      .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n      .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n      .filter(({ type }) => type == matchedType)\n      .map(({ elements: [element] }) => element)\n  }\n\n  get provisionalElements() {\n    return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n      const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n      if (type == null && !tracked) {\n        return [...result, ...elements]\n      } else if (elements.length > 1) {\n        return [...result, ...elements.slice(1)]\n      } else {\n        return result\n      }\n    }, [])\n  }\n\n  getMetaValue(name) {\n    const element = this.findMetaElementByName(name);\n    return element ? element.getAttribute(\"content\") : null\n  }\n\n  findMetaElementByName(name) {\n    return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n      const {\n        elements: [element]\n      } = this.detailsByOuterHTML[outerHTML];\n      return elementIsMetaElementWithName(element, name) ? element : result\n    }, undefined | undefined)\n  }\n}\n\nfunction elementType(element) {\n  if (elementIsScript(element)) {\n    return \"script\"\n  } else if (elementIsStylesheet(element)) {\n    return \"stylesheet\"\n  }\n}\n\nfunction elementIsTracked(element) {\n  return element.getAttribute(\"data-turbo-track\") == \"reload\"\n}\n\nfunction elementIsScript(element) {\n  const tagName = element.localName;\n  return tagName == \"script\"\n}\n\nfunction elementIsNoscript(element) {\n  const tagName = element.localName;\n  return tagName == \"noscript\"\n}\n\nfunction elementIsStylesheet(element) {\n  const tagName = element.localName;\n  return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n  const tagName = element.localName;\n  return tagName == \"meta\" && element.getAttribute(\"name\") == name\n}\n\nfunction elementWithoutNonce(element) {\n  if (element.hasAttribute(\"nonce\")) {\n    element.setAttribute(\"nonce\", \"\");\n  }\n\n  return element\n}\n\nclass PageSnapshot extends Snapshot {\n  static fromHTMLString(html = \"\") {\n    return this.fromDocument(parseHTMLDocument(html))\n  }\n\n  static fromElement(element) {\n    return this.fromDocument(element.ownerDocument)\n  }\n\n  static fromDocument({ documentElement, body, head }) {\n    return new this(documentElement, body, new HeadSnapshot(head))\n  }\n\n  constructor(documentElement, body, headSnapshot) {\n    super(body);\n    this.documentElement = documentElement;\n    this.headSnapshot = headSnapshot;\n  }\n\n  clone() {\n    const clonedElement = this.element.cloneNode(true);\n\n    const selectElements = this.element.querySelectorAll(\"select\");\n    const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n\n    for (const [index, source] of selectElements.entries()) {\n      const clone = clonedSelectElements[index];\n      for (const option of clone.selectedOptions) option.selected = false;\n      for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n    }\n\n    for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n      clonedPasswordInput.value = \"\";\n    }\n\n    return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot)\n  }\n\n  get lang() {\n    return this.documentElement.getAttribute(\"lang\")\n  }\n\n  get headElement() {\n    return this.headSnapshot.element\n  }\n\n  get rootLocation() {\n    const root = this.getSetting(\"root\") ?? \"/\";\n    return expandURL(root)\n  }\n\n  get cacheControlValue() {\n    return this.getSetting(\"cache-control\")\n  }\n\n  get isPreviewable() {\n    return this.cacheControlValue != \"no-preview\"\n  }\n\n  get isCacheable() {\n    return this.cacheControlValue != \"no-cache\"\n  }\n\n  get isVisitable() {\n    return this.getSetting(\"visit-control\") != \"reload\"\n  }\n\n  get prefersViewTransitions() {\n    return this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\"\n  }\n\n  get shouldMorphPage() {\n    return this.getSetting(\"refresh-method\") === \"morph\"\n  }\n\n  get shouldPreserveScrollPosition() {\n    return this.getSetting(\"refresh-scroll\") === \"preserve\"\n  }\n\n  // Private\n\n  getSetting(name) {\n    return this.headSnapshot.getMetaValue(`turbo-${name}`)\n  }\n}\n\nclass ViewTransitioner {\n  #viewTransitionStarted = false\n  #lastOperation = Promise.resolve()\n\n  renderChange(useViewTransition, render) {\n    if (useViewTransition && this.viewTransitionsAvailable && !this.#viewTransitionStarted) {\n      this.#viewTransitionStarted = true;\n      this.#lastOperation = this.#lastOperation.then(async () => {\n        await document.startViewTransition(render).finished;\n      });\n    } else {\n      this.#lastOperation = this.#lastOperation.then(render);\n    }\n\n    return this.#lastOperation\n  }\n\n  get viewTransitionsAvailable() {\n    return document.startViewTransition\n  }\n}\n\nconst defaultOptions = {\n  action: \"advance\",\n  historyChanged: false,\n  visitCachedSnapshot: () => {},\n  willRender: true,\n  updateHistory: true,\n  shouldCacheSnapshot: true,\n  acceptsStreamResponse: false\n};\n\nconst TimingMetric = {\n  visitStart: \"visitStart\",\n  requestStart: \"requestStart\",\n  requestEnd: \"requestEnd\",\n  visitEnd: \"visitEnd\"\n};\n\nconst VisitState = {\n  initialized: \"initialized\",\n  started: \"started\",\n  canceled: \"canceled\",\n  failed: \"failed\",\n  completed: \"completed\"\n};\n\nconst SystemStatusCode = {\n  networkFailure: 0,\n  timeoutFailure: -1,\n  contentTypeMismatch: -2\n};\n\nconst Direction = {\n  advance: \"forward\",\n  restore: \"back\",\n  replace: \"none\"\n};\n\nclass Visit {\n  identifier = uuid() // Required by turbo-ios\n  timingMetrics = {}\n\n  followedRedirect = false\n  historyChanged = false\n  scrolled = false\n  shouldCacheSnapshot = true\n  acceptsStreamResponse = false\n  snapshotCached = false\n  state = VisitState.initialized\n  viewTransitioner = new ViewTransitioner()\n\n  constructor(delegate, location, restorationIdentifier, options = {}) {\n    this.delegate = delegate;\n    this.location = location;\n    this.restorationIdentifier = restorationIdentifier || uuid();\n\n    const {\n      action,\n      historyChanged,\n      referrer,\n      snapshot,\n      snapshotHTML,\n      response,\n      visitCachedSnapshot,\n      willRender,\n      updateHistory,\n      shouldCacheSnapshot,\n      acceptsStreamResponse,\n      direction\n    } = {\n      ...defaultOptions,\n      ...options\n    };\n    this.action = action;\n    this.historyChanged = historyChanged;\n    this.referrer = referrer;\n    this.snapshot = snapshot;\n    this.snapshotHTML = snapshotHTML;\n    this.response = response;\n    this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n    this.isPageRefresh = this.view.isPageRefresh(this);\n    this.visitCachedSnapshot = visitCachedSnapshot;\n    this.willRender = willRender;\n    this.updateHistory = updateHistory;\n    this.scrolled = !willRender;\n    this.shouldCacheSnapshot = shouldCacheSnapshot;\n    this.acceptsStreamResponse = acceptsStreamResponse;\n    this.direction = direction || Direction[action];\n  }\n\n  get adapter() {\n    return this.delegate.adapter\n  }\n\n  get view() {\n    return this.delegate.view\n  }\n\n  get history() {\n    return this.delegate.history\n  }\n\n  get restorationData() {\n    return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)\n  }\n\n  get silent() {\n    return this.isSamePage\n  }\n\n  start() {\n    if (this.state == VisitState.initialized) {\n      this.recordTimingMetric(TimingMetric.visitStart);\n      this.state = VisitState.started;\n      this.adapter.visitStarted(this);\n      this.delegate.visitStarted(this);\n    }\n  }\n\n  cancel() {\n    if (this.state == VisitState.started) {\n      if (this.request) {\n        this.request.cancel();\n      }\n      this.cancelRender();\n      this.state = VisitState.canceled;\n    }\n  }\n\n  complete() {\n    if (this.state == VisitState.started) {\n      this.recordTimingMetric(TimingMetric.visitEnd);\n      this.adapter.visitCompleted(this);\n      this.state = VisitState.completed;\n      this.followRedirect();\n\n      if (!this.followedRedirect) {\n        this.delegate.visitCompleted(this);\n      }\n    }\n  }\n\n  fail() {\n    if (this.state == VisitState.started) {\n      this.state = VisitState.failed;\n      this.adapter.visitFailed(this);\n      this.delegate.visitCompleted(this);\n    }\n  }\n\n  changeHistory() {\n    if (!this.historyChanged && this.updateHistory) {\n      const actionForHistory = this.location.href === this.referrer?.href ? \"replace\" : this.action;\n      const method = getHistoryMethodForAction(actionForHistory);\n      this.history.update(method, this.location, this.restorationIdentifier);\n      this.historyChanged = true;\n    }\n  }\n\n  issueRequest() {\n    if (this.hasPreloadedResponse()) {\n      this.simulateRequest();\n    } else if (this.shouldIssueRequest() && !this.request) {\n      this.request = new FetchRequest(this, FetchMethod.get, this.location);\n      this.request.perform();\n    }\n  }\n\n  simulateRequest() {\n    if (this.response) {\n      this.startRequest();\n      this.recordResponse();\n      this.finishRequest();\n    }\n  }\n\n  startRequest() {\n    this.recordTimingMetric(TimingMetric.requestStart);\n    this.adapter.visitRequestStarted(this);\n  }\n\n  recordResponse(response = this.response) {\n    this.response = response;\n    if (response) {\n      const { statusCode } = response;\n      if (isSuccessful(statusCode)) {\n        this.adapter.visitRequestCompleted(this);\n      } else {\n        this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n      }\n    }\n  }\n\n  finishRequest() {\n    this.recordTimingMetric(TimingMetric.requestEnd);\n    this.adapter.visitRequestFinished(this);\n  }\n\n  loadResponse() {\n    if (this.response) {\n      const { statusCode, responseHTML } = this.response;\n      this.render(async () => {\n        if (this.shouldCacheSnapshot) this.cacheSnapshot();\n        if (this.view.renderPromise) await this.view.renderPromise;\n\n        if (isSuccessful(statusCode) && responseHTML != null) {\n          const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n          await this.renderPageSnapshot(snapshot, false);\n\n          this.adapter.visitRendered(this);\n          this.complete();\n        } else {\n          await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n          this.adapter.visitRendered(this);\n          this.fail();\n        }\n      });\n    }\n  }\n\n  getCachedSnapshot() {\n    const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\n    if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n      if (this.action == \"restore\" || snapshot.isPreviewable) {\n        return snapshot\n      }\n    }\n  }\n\n  getPreloadedSnapshot() {\n    if (this.snapshotHTML) {\n      return PageSnapshot.fromHTMLString(this.snapshotHTML)\n    }\n  }\n\n  hasCachedSnapshot() {\n    return this.getCachedSnapshot() != null\n  }\n\n  loadCachedSnapshot() {\n    const snapshot = this.getCachedSnapshot();\n    if (snapshot) {\n      const isPreview = this.shouldIssueRequest();\n      this.render(async () => {\n        this.cacheSnapshot();\n        if (this.isSamePage || this.isPageRefresh) {\n          this.adapter.visitRendered(this);\n        } else {\n          if (this.view.renderPromise) await this.view.renderPromise;\n\n          await this.renderPageSnapshot(snapshot, isPreview);\n\n          this.adapter.visitRendered(this);\n          if (!isPreview) {\n            this.complete();\n          }\n        }\n      });\n    }\n  }\n\n  followRedirect() {\n    if (this.redirectedToLocation && !this.followedRedirect && this.response?.redirected) {\n      this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n        action: \"replace\",\n        response: this.response,\n        shouldCacheSnapshot: false,\n        willRender: false\n      });\n      this.followedRedirect = true;\n    }\n  }\n\n  goToSamePageAnchor() {\n    if (this.isSamePage) {\n      this.render(async () => {\n        this.cacheSnapshot();\n        this.performScroll();\n        this.changeHistory();\n        this.adapter.visitRendered(this);\n      });\n    }\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(request) {\n    if (this.acceptsStreamResponse) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted() {\n    this.startRequest();\n  }\n\n  requestPreventedHandlingResponse(_request, _response) {}\n\n  async requestSucceededWithResponse(request, response) {\n    const responseHTML = await response.responseHTML;\n    const { redirected, statusCode } = response;\n    if (responseHTML == undefined) {\n      this.recordResponse({\n        statusCode: SystemStatusCode.contentTypeMismatch,\n        redirected\n      });\n    } else {\n      this.redirectedToLocation = response.redirected ? response.location : undefined;\n      this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n    }\n  }\n\n  async requestFailedWithResponse(request, response) {\n    const responseHTML = await response.responseHTML;\n    const { redirected, statusCode } = response;\n    if (responseHTML == undefined) {\n      this.recordResponse({\n        statusCode: SystemStatusCode.contentTypeMismatch,\n        redirected\n      });\n    } else {\n      this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n    }\n  }\n\n  requestErrored(_request, _error) {\n    this.recordResponse({\n      statusCode: SystemStatusCode.networkFailure,\n      redirected: false\n    });\n  }\n\n  requestFinished() {\n    this.finishRequest();\n  }\n\n  // Scrolling\n\n  performScroll() {\n    if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {\n      if (this.action == \"restore\") {\n        this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n      } else {\n        this.scrollToAnchor() || this.view.scrollToTop();\n      }\n      if (this.isSamePage) {\n        this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n      }\n\n      this.scrolled = true;\n    }\n  }\n\n  scrollToRestoredPosition() {\n    const { scrollPosition } = this.restorationData;\n    if (scrollPosition) {\n      this.view.scrollToPosition(scrollPosition);\n      return true\n    }\n  }\n\n  scrollToAnchor() {\n    const anchor = getAnchor(this.location);\n    if (anchor != null) {\n      this.view.scrollToAnchor(anchor);\n      return true\n    }\n  }\n\n  // Instrumentation\n\n  recordTimingMetric(metric) {\n    this.timingMetrics[metric] = new Date().getTime();\n  }\n\n  getTimingMetrics() {\n    return { ...this.timingMetrics }\n  }\n\n  // Private\n\n  hasPreloadedResponse() {\n    return typeof this.response == \"object\"\n  }\n\n  shouldIssueRequest() {\n    if (this.isSamePage) {\n      return false\n    } else if (this.action == \"restore\") {\n      return !this.hasCachedSnapshot()\n    } else {\n      return this.willRender\n    }\n  }\n\n  cacheSnapshot() {\n    if (!this.snapshotCached) {\n      this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n      this.snapshotCached = true;\n    }\n  }\n\n  async render(callback) {\n    this.cancelRender();\n    await new Promise((resolve) => {\n      this.frame =\n        document.visibilityState === \"hidden\" ? setTimeout(() => resolve(), 0) : requestAnimationFrame(() => resolve());\n    });\n    await callback();\n    delete this.frame;\n  }\n\n  async renderPageSnapshot(snapshot, isPreview) {\n    await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {\n      await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n      this.performScroll();\n    });\n  }\n\n  cancelRender() {\n    if (this.frame) {\n      cancelAnimationFrame(this.frame);\n      delete this.frame;\n    }\n  }\n}\n\nfunction isSuccessful(statusCode) {\n  return statusCode >= 200 && statusCode < 300\n}\n\nclass BrowserAdapter {\n  progressBar = new ProgressBar()\n\n  constructor(session) {\n    this.session = session;\n  }\n\n  visitProposedToLocation(location, options) {\n    if (locationIsVisitable(location, this.navigator.rootLocation)) {\n      this.navigator.startVisit(location, options?.restorationIdentifier || uuid(), options);\n    } else {\n      window.location.href = location.toString();\n    }\n  }\n\n  visitStarted(visit) {\n    this.location = visit.location;\n    visit.loadCachedSnapshot();\n    visit.issueRequest();\n    visit.goToSamePageAnchor();\n  }\n\n  visitRequestStarted(visit) {\n    this.progressBar.setValue(0);\n    if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n      this.showVisitProgressBarAfterDelay();\n    } else {\n      this.showProgressBar();\n    }\n  }\n\n  visitRequestCompleted(visit) {\n    visit.loadResponse();\n  }\n\n  visitRequestFailedWithStatusCode(visit, statusCode) {\n    switch (statusCode) {\n      case SystemStatusCode.networkFailure:\n      case SystemStatusCode.timeoutFailure:\n      case SystemStatusCode.contentTypeMismatch:\n        return this.reload({\n          reason: \"request_failed\",\n          context: {\n            statusCode\n          }\n        })\n      default:\n        return visit.loadResponse()\n    }\n  }\n\n  visitRequestFinished(_visit) {}\n\n  visitCompleted(_visit) {\n    this.progressBar.setValue(1);\n    this.hideVisitProgressBar();\n  }\n\n  pageInvalidated(reason) {\n    this.reload(reason);\n  }\n\n  visitFailed(_visit) {\n    this.progressBar.setValue(1);\n    this.hideVisitProgressBar();\n  }\n\n  visitRendered(_visit) {}\n\n  // Link prefetching\n\n  linkPrefetchingIsEnabledForLocation(location) {\n    return true\n  }\n\n  // Form Submission Delegate\n\n  formSubmissionStarted(_formSubmission) {\n    this.progressBar.setValue(0);\n    this.showFormProgressBarAfterDelay();\n  }\n\n  formSubmissionFinished(_formSubmission) {\n    this.progressBar.setValue(1);\n    this.hideFormProgressBar();\n  }\n\n  // Private\n\n  showVisitProgressBarAfterDelay() {\n    this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n  }\n\n  hideVisitProgressBar() {\n    this.progressBar.hide();\n    if (this.visitProgressBarTimeout != null) {\n      window.clearTimeout(this.visitProgressBarTimeout);\n      delete this.visitProgressBarTimeout;\n    }\n  }\n\n  showFormProgressBarAfterDelay() {\n    if (this.formProgressBarTimeout == null) {\n      this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n  }\n\n  hideFormProgressBar() {\n    this.progressBar.hide();\n    if (this.formProgressBarTimeout != null) {\n      window.clearTimeout(this.formProgressBarTimeout);\n      delete this.formProgressBarTimeout;\n    }\n  }\n\n  showProgressBar = () => {\n    this.progressBar.show();\n  }\n\n  reload(reason) {\n    dispatch(\"turbo:reload\", { detail: reason });\n\n    window.location.href = this.location?.toString() || window.location.href;\n  }\n\n  get navigator() {\n    return this.session.navigator\n  }\n}\n\nclass CacheObserver {\n  selector = \"[data-turbo-temporary]\"\n  deprecatedSelector = \"[data-turbo-cache=false]\"\n\n  started = false\n\n  start() {\n    if (!this.started) {\n      this.started = true;\n      addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.started = false;\n      removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n    }\n  }\n\n  removeTemporaryElements = (_event) => {\n    for (const element of this.temporaryElements) {\n      element.remove();\n    }\n  }\n\n  get temporaryElements() {\n    return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation]\n  }\n\n  get temporaryElementsWithDeprecation() {\n    const elements = document.querySelectorAll(this.deprecatedSelector);\n\n    if (elements.length) {\n      console.warn(\n        `The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`\n      );\n    }\n\n    return [...elements]\n  }\n}\n\nclass FrameRedirector {\n  constructor(session, element) {\n    this.session = session;\n    this.element = element;\n    this.linkInterceptor = new LinkInterceptor(this, element);\n    this.formSubmitObserver = new FormSubmitObserver(this, element);\n  }\n\n  start() {\n    this.linkInterceptor.start();\n    this.formSubmitObserver.start();\n  }\n\n  stop() {\n    this.linkInterceptor.stop();\n    this.formSubmitObserver.stop();\n  }\n\n  // Link interceptor delegate\n\n  shouldInterceptLinkClick(element, _location, _event) {\n    return this.#shouldRedirect(element)\n  }\n\n  linkClickIntercepted(element, url, event) {\n    const frame = this.#findFrameElement(element);\n    if (frame) {\n      frame.delegate.linkClickIntercepted(element, url, event);\n    }\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(element, submitter) {\n    return (\n      element.closest(\"turbo-frame\") == null &&\n      this.#shouldSubmit(element, submitter) &&\n      this.#shouldRedirect(element, submitter)\n    )\n  }\n\n  formSubmitted(element, submitter) {\n    const frame = this.#findFrameElement(element, submitter);\n    if (frame) {\n      frame.delegate.formSubmitted(element, submitter);\n    }\n  }\n\n  #shouldSubmit(form, submitter) {\n    const action = getAction$1(form, submitter);\n    const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n    const rootLocation = expandURL(meta?.content ?? \"/\");\n\n    return this.#shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation)\n  }\n\n  #shouldRedirect(element, submitter) {\n    const isNavigatable =\n      element instanceof HTMLFormElement\n        ? this.session.submissionIsNavigatable(element, submitter)\n        : this.session.elementIsNavigatable(element);\n\n    if (isNavigatable) {\n      const frame = this.#findFrameElement(element, submitter);\n      return frame ? frame != element.closest(\"turbo-frame\") : false\n    } else {\n      return false\n    }\n  }\n\n  #findFrameElement(element, submitter) {\n    const id = submitter?.getAttribute(\"data-turbo-frame\") || element.getAttribute(\"data-turbo-frame\");\n    if (id && id != \"_top\") {\n      const frame = this.element.querySelector(`#${id}:not([disabled])`);\n      if (frame instanceof FrameElement) {\n        return frame\n      }\n    }\n  }\n}\n\nclass History {\n  location\n  restorationIdentifier = uuid()\n  restorationData = {}\n  started = false\n  pageLoaded = false\n  currentIndex = 0\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      addEventListener(\"popstate\", this.onPopState, false);\n      addEventListener(\"load\", this.onPageLoad, false);\n      this.currentIndex = history.state?.turbo?.restorationIndex || 0;\n      this.started = true;\n      this.replace(new URL(window.location.href));\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      removeEventListener(\"popstate\", this.onPopState, false);\n      removeEventListener(\"load\", this.onPageLoad, false);\n      this.started = false;\n    }\n  }\n\n  push(location, restorationIdentifier) {\n    this.update(history.pushState, location, restorationIdentifier);\n  }\n\n  replace(location, restorationIdentifier) {\n    this.update(history.replaceState, location, restorationIdentifier);\n  }\n\n  update(method, location, restorationIdentifier = uuid()) {\n    if (method === history.pushState) ++this.currentIndex;\n\n    const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } };\n    method.call(history, state, \"\", location.href);\n    this.location = location;\n    this.restorationIdentifier = restorationIdentifier;\n  }\n\n  // Restoration data\n\n  getRestorationDataForIdentifier(restorationIdentifier) {\n    return this.restorationData[restorationIdentifier] || {}\n  }\n\n  updateRestorationData(additionalData) {\n    const { restorationIdentifier } = this;\n    const restorationData = this.restorationData[restorationIdentifier];\n    this.restorationData[restorationIdentifier] = {\n      ...restorationData,\n      ...additionalData\n    };\n  }\n\n  // Scroll restoration\n\n  assumeControlOfScrollRestoration() {\n    if (!this.previousScrollRestoration) {\n      this.previousScrollRestoration = history.scrollRestoration ?? \"auto\";\n      history.scrollRestoration = \"manual\";\n    }\n  }\n\n  relinquishControlOfScrollRestoration() {\n    if (this.previousScrollRestoration) {\n      history.scrollRestoration = this.previousScrollRestoration;\n      delete this.previousScrollRestoration;\n    }\n  }\n\n  // Event handlers\n\n  onPopState = (event) => {\n    if (this.shouldHandlePopState()) {\n      const { turbo } = event.state || {};\n      if (turbo) {\n        this.location = new URL(window.location.href);\n        const { restorationIdentifier, restorationIndex } = turbo;\n        this.restorationIdentifier = restorationIdentifier;\n        const direction = restorationIndex > this.currentIndex ? \"forward\" : \"back\";\n        this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction);\n        this.currentIndex = restorationIndex;\n      }\n    }\n  }\n\n  onPageLoad = async (_event) => {\n    await nextMicrotask();\n    this.pageLoaded = true;\n  }\n\n  // Private\n\n  shouldHandlePopState() {\n    // Safari dispatches a popstate event after window's load event, ignore it\n    return this.pageIsLoaded()\n  }\n\n  pageIsLoaded() {\n    return this.pageLoaded || document.readyState == \"complete\"\n  }\n}\n\nclass LinkPrefetchObserver {\n  started = false\n  #prefetchedLink = null\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (this.started) return\n\n    if (this.eventTarget.readyState === \"loading\") {\n      this.eventTarget.addEventListener(\"DOMContentLoaded\", this.#enable, { once: true });\n    } else {\n      this.#enable();\n    }\n  }\n\n  stop() {\n    if (!this.started) return\n\n    this.eventTarget.removeEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n      capture: true,\n      passive: true\n    });\n    this.eventTarget.removeEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n      capture: true,\n      passive: true\n    });\n\n    this.eventTarget.removeEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n    this.started = false;\n  }\n\n  #enable = () => {\n    this.eventTarget.addEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n      capture: true,\n      passive: true\n    });\n    this.eventTarget.addEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n      capture: true,\n      passive: true\n    });\n\n    this.eventTarget.addEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n    this.started = true;\n  }\n\n  #tryToPrefetchRequest = (event) => {\n    if (getMetaContent(\"turbo-prefetch\") === \"false\") return\n\n    const target = event.target;\n    const isLink = target.matches && target.matches(\"a[href]:not([target^=_]):not([download])\");\n\n    if (isLink && this.#isPrefetchable(target)) {\n      const link = target;\n      const location = getLocationForLink(link);\n\n      if (this.delegate.canPrefetchRequestToLocation(link, location)) {\n        this.#prefetchedLink = link;\n\n        const fetchRequest = new FetchRequest(\n          this,\n          FetchMethod.get,\n          location,\n          new URLSearchParams(),\n          target\n        );\n\n        prefetchCache.setLater(location.toString(), fetchRequest, this.#cacheTtl);\n      }\n    }\n  }\n\n  #cancelRequestIfObsolete = (event) => {\n    if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();\n  }\n\n  #cancelPrefetchRequest = () => {\n    prefetchCache.clear();\n    this.#prefetchedLink = null;\n  }\n\n  #tryToUsePrefetchedRequest = (event) => {\n    if (event.target.tagName !== \"FORM\" && event.detail.fetchOptions.method === \"GET\") {\n      const cached = prefetchCache.get(event.detail.url.toString());\n\n      if (cached) {\n        // User clicked link, use cache response\n        event.detail.fetchRequest = cached;\n      }\n\n      prefetchCache.clear();\n    }\n  }\n\n  prepareRequest(request) {\n    const link = request.target;\n\n    request.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n\n    const turboFrame = link.closest(\"turbo-frame\");\n    const turboFrameTarget = link.getAttribute(\"data-turbo-frame\") || turboFrame?.getAttribute(\"target\") || turboFrame?.id;\n\n    if (turboFrameTarget && turboFrameTarget !== \"_top\") {\n      request.headers[\"Turbo-Frame\"] = turboFrameTarget;\n    }\n  }\n\n  // Fetch request interface\n\n  requestSucceededWithResponse() {}\n\n  requestStarted(fetchRequest) {}\n\n  requestErrored(fetchRequest) {}\n\n  requestFinished(fetchRequest) {}\n\n  requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n  requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n  get #cacheTtl() {\n    return Number(getMetaContent(\"turbo-prefetch-cache-time\")) || cacheTtl\n  }\n\n  #isPrefetchable(link) {\n    const href = link.getAttribute(\"href\");\n\n    if (!href) return false\n\n    if (unfetchableLink(link)) return false\n    if (linkToTheSamePage(link)) return false\n    if (linkOptsOut(link)) return false\n    if (nonSafeLink(link)) return false\n    if (eventPrevented(link)) return false\n\n    return true\n  }\n}\n\nconst unfetchableLink = (link) => {\n  return link.origin !== document.location.origin || ![\"http:\", \"https:\"].includes(link.protocol) || link.hasAttribute(\"target\")\n};\n\nconst linkToTheSamePage = (link) => {\n  return (link.pathname + link.search === document.location.pathname + document.location.search) || link.href.startsWith(\"#\")\n};\n\nconst linkOptsOut = (link) => {\n  if (link.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n  if (link.getAttribute(\"data-turbo\") === \"false\") return true\n\n  const turboPrefetchParent = findClosestRecursively(link, \"[data-turbo-prefetch]\");\n  if (turboPrefetchParent && turboPrefetchParent.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n\n  return false\n};\n\nconst nonSafeLink = (link) => {\n  const turboMethod = link.getAttribute(\"data-turbo-method\");\n  if (turboMethod && turboMethod.toLowerCase() !== \"get\") return true\n\n  if (isUJS(link)) return true\n  if (link.hasAttribute(\"data-turbo-confirm\")) return true\n  if (link.hasAttribute(\"data-turbo-stream\")) return true\n\n  return false\n};\n\nconst isUJS = (link) => {\n  return link.hasAttribute(\"data-remote\") || link.hasAttribute(\"data-behavior\") || link.hasAttribute(\"data-confirm\") || link.hasAttribute(\"data-method\")\n};\n\nconst eventPrevented = (link) => {\n  const event = dispatch(\"turbo:before-prefetch\", { target: link, cancelable: true });\n  return event.defaultPrevented\n};\n\nclass Navigator {\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  proposeVisit(location, options = {}) {\n    if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n      this.delegate.visitProposedToLocation(location, options);\n    }\n  }\n\n  startVisit(locatable, restorationIdentifier, options = {}) {\n    this.stop();\n    this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {\n      referrer: this.location,\n      ...options\n    });\n    this.currentVisit.start();\n  }\n\n  submitForm(form, submitter) {\n    this.stop();\n    this.formSubmission = new FormSubmission(this, form, submitter, true);\n\n    this.formSubmission.start();\n  }\n\n  stop() {\n    if (this.formSubmission) {\n      this.formSubmission.stop();\n      delete this.formSubmission;\n    }\n\n    if (this.currentVisit) {\n      this.currentVisit.cancel();\n      delete this.currentVisit;\n    }\n  }\n\n  get adapter() {\n    return this.delegate.adapter\n  }\n\n  get view() {\n    return this.delegate.view\n  }\n\n  get rootLocation() {\n    return this.view.snapshot.rootLocation\n  }\n\n  get history() {\n    return this.delegate.history\n  }\n\n  // Form submission delegate\n\n  formSubmissionStarted(formSubmission) {\n    // Not all adapters implement formSubmissionStarted\n    if (typeof this.adapter.formSubmissionStarted === \"function\") {\n      this.adapter.formSubmissionStarted(formSubmission);\n    }\n  }\n\n  async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n    if (formSubmission == this.formSubmission) {\n      const responseHTML = await fetchResponse.responseHTML;\n      if (responseHTML) {\n        const shouldCacheSnapshot = formSubmission.isSafe;\n        if (!shouldCacheSnapshot) {\n          this.view.clearSnapshotCache();\n        }\n\n        const { statusCode, redirected } = fetchResponse;\n        const action = this.#getActionForFormSubmission(formSubmission, fetchResponse);\n        const visitOptions = {\n          action,\n          shouldCacheSnapshot,\n          response: { statusCode, responseHTML, redirected }\n        };\n        this.proposeVisit(fetchResponse.location, visitOptions);\n      }\n    }\n  }\n\n  async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n    const responseHTML = await fetchResponse.responseHTML;\n\n    if (responseHTML) {\n      const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n      if (fetchResponse.serverError) {\n        await this.view.renderError(snapshot, this.currentVisit);\n      } else {\n        await this.view.renderPage(snapshot, false, true, this.currentVisit);\n      }\n      if(!snapshot.shouldPreserveScrollPosition) {\n        this.view.scrollToTop();\n      }\n      this.view.clearSnapshotCache();\n    }\n  }\n\n  formSubmissionErrored(formSubmission, error) {\n    console.error(error);\n  }\n\n  formSubmissionFinished(formSubmission) {\n    // Not all adapters implement formSubmissionFinished\n    if (typeof this.adapter.formSubmissionFinished === \"function\") {\n      this.adapter.formSubmissionFinished(formSubmission);\n    }\n  }\n\n  // Link prefetching\n\n  linkPrefetchingIsEnabledForLocation(location) {\n    // Not all adapters implement linkPrefetchingIsEnabledForLocation\n    if (typeof this.adapter.linkPrefetchingIsEnabledForLocation === \"function\") {\n      return this.adapter.linkPrefetchingIsEnabledForLocation(location)\n    }\n\n    return true\n  }\n\n  // Visit delegate\n\n  visitStarted(visit) {\n    this.delegate.visitStarted(visit);\n  }\n\n  visitCompleted(visit) {\n    this.delegate.visitCompleted(visit);\n    delete this.currentVisit;\n  }\n\n  locationWithActionIsSamePage(location, action) {\n    const anchor = getAnchor(location);\n    const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n    const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n\n    return (\n      action !== \"replace\" &&\n      getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n      (isRestorationToTop || (anchor != null && anchor !== currentAnchor))\n    )\n  }\n\n  visitScrolledToSamePageLocation(oldURL, newURL) {\n    this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n  }\n\n  // Visits\n\n  get location() {\n    return this.history.location\n  }\n\n  get restorationIdentifier() {\n    return this.history.restorationIdentifier\n  }\n\n  #getActionForFormSubmission(formSubmission, fetchResponse) {\n    const { submitter, formElement } = formSubmission;\n    return getVisitAction(submitter, formElement) || this.#getDefaultAction(fetchResponse)\n  }\n\n  #getDefaultAction(fetchResponse) {\n    const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href;\n    return sameLocationRedirect ? \"replace\" : \"advance\"\n  }\n}\n\nconst PageStage = {\n  initial: 0,\n  loading: 1,\n  interactive: 2,\n  complete: 3\n};\n\nclass PageObserver {\n  stage = PageStage.initial\n  started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      if (this.stage == PageStage.initial) {\n        this.stage = PageStage.loading;\n      }\n      document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n      addEventListener(\"pagehide\", this.pageWillUnload, false);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n      removeEventListener(\"pagehide\", this.pageWillUnload, false);\n      this.started = false;\n    }\n  }\n\n  interpretReadyState = () => {\n    const { readyState } = this;\n    if (readyState == \"interactive\") {\n      this.pageIsInteractive();\n    } else if (readyState == \"complete\") {\n      this.pageIsComplete();\n    }\n  }\n\n  pageIsInteractive() {\n    if (this.stage == PageStage.loading) {\n      this.stage = PageStage.interactive;\n      this.delegate.pageBecameInteractive();\n    }\n  }\n\n  pageIsComplete() {\n    this.pageIsInteractive();\n    if (this.stage == PageStage.interactive) {\n      this.stage = PageStage.complete;\n      this.delegate.pageLoaded();\n    }\n  }\n\n  pageWillUnload = () => {\n    this.delegate.pageWillUnload();\n  }\n\n  get readyState() {\n    return document.readyState\n  }\n}\n\nclass ScrollObserver {\n  started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      addEventListener(\"scroll\", this.onScroll, false);\n      this.onScroll();\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      removeEventListener(\"scroll\", this.onScroll, false);\n      this.started = false;\n    }\n  }\n\n  onScroll = () => {\n    this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n  }\n\n  // Private\n\n  updatePosition(position) {\n    this.delegate.scrollPositionChanged(position);\n  }\n}\n\nclass StreamMessageRenderer {\n  render({ fragment }) {\n    Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {\n      withAutofocusFromFragment(fragment, () => {\n        withPreservedFocus(() => {\n          document.documentElement.appendChild(fragment);\n        });\n      });\n    });\n  }\n\n  // Bardo delegate\n\n  enteringBardo(currentPermanentElement, newPermanentElement) {\n    newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n  }\n\n  leavingBardo() {}\n}\n\nfunction getPermanentElementMapForFragment(fragment) {\n  const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n  const permanentElementMap = {};\n  for (const permanentElementInDocument of permanentElementsInDocument) {\n    const { id } = permanentElementInDocument;\n\n    for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n      const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n\n      if (elementInStream) {\n        permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n      }\n    }\n  }\n\n  return permanentElementMap\n}\n\nasync function withAutofocusFromFragment(fragment, callback) {\n  const generatedID = `turbo-stream-autofocus-${uuid()}`;\n  const turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n  const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n  let willAutofocusId = null;\n\n  if (elementWithAutofocus) {\n    if (elementWithAutofocus.id) {\n      willAutofocusId = elementWithAutofocus.id;\n    } else {\n      willAutofocusId = generatedID;\n    }\n\n    elementWithAutofocus.id = willAutofocusId;\n  }\n\n  callback();\n  await nextRepaint();\n\n  const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n\n  if (hasNoActiveElement && willAutofocusId) {\n    const elementToAutofocus = document.getElementById(willAutofocusId);\n\n    if (elementIsFocusable(elementToAutofocus)) {\n      elementToAutofocus.focus();\n    }\n    if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n      elementToAutofocus.removeAttribute(\"id\");\n    }\n  }\n}\n\nasync function withPreservedFocus(callback) {\n  const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement);\n\n  const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n\n  if (restoreFocusTo) {\n    const elementToFocus = document.getElementById(restoreFocusTo);\n\n    if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n      elementToFocus.focus();\n    }\n  }\n}\n\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n  for (const streamElement of nodeListOfStreamElements) {\n    const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n\n    if (elementWithAutofocus) return elementWithAutofocus\n  }\n\n  return null\n}\n\nclass StreamObserver {\n  sources = new Set()\n  #started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.#started) {\n      this.#started = true;\n      addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n    }\n  }\n\n  stop() {\n    if (this.#started) {\n      this.#started = false;\n      removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n    }\n  }\n\n  connectStreamSource(source) {\n    if (!this.streamSourceIsConnected(source)) {\n      this.sources.add(source);\n      source.addEventListener(\"message\", this.receiveMessageEvent, false);\n    }\n  }\n\n  disconnectStreamSource(source) {\n    if (this.streamSourceIsConnected(source)) {\n      this.sources.delete(source);\n      source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n    }\n  }\n\n  streamSourceIsConnected(source) {\n    return this.sources.has(source)\n  }\n\n  inspectFetchResponse = (event) => {\n    const response = fetchResponseFromEvent(event);\n    if (response && fetchResponseIsStream(response)) {\n      event.preventDefault();\n      this.receiveMessageResponse(response);\n    }\n  }\n\n  receiveMessageEvent = (event) => {\n    if (this.#started && typeof event.data == \"string\") {\n      this.receiveMessageHTML(event.data);\n    }\n  }\n\n  async receiveMessageResponse(response) {\n    const html = await response.responseHTML;\n    if (html) {\n      this.receiveMessageHTML(html);\n    }\n  }\n\n  receiveMessageHTML(html) {\n    this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n  }\n}\n\nfunction fetchResponseFromEvent(event) {\n  const fetchResponse = event.detail?.fetchResponse;\n  if (fetchResponse instanceof FetchResponse) {\n    return fetchResponse\n  }\n}\n\nfunction fetchResponseIsStream(response) {\n  const contentType = response.contentType ?? \"\";\n  return contentType.startsWith(StreamMessage.contentType)\n}\n\nclass ErrorRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    const { documentElement, body } = document;\n\n    documentElement.replaceChild(newElement, body);\n  }\n\n  async render() {\n    this.replaceHeadAndBody();\n    this.activateScriptElements();\n  }\n\n  replaceHeadAndBody() {\n    const { documentElement, head } = document;\n    documentElement.replaceChild(this.newHead, head);\n    this.renderElement(this.currentElement, this.newElement);\n  }\n\n  activateScriptElements() {\n    for (const replaceableElement of this.scriptElements) {\n      const parentNode = replaceableElement.parentNode;\n      if (parentNode) {\n        const element = activateScriptElement(replaceableElement);\n        parentNode.replaceChild(element, replaceableElement);\n      }\n    }\n  }\n\n  get newHead() {\n    return this.newSnapshot.headSnapshot.element\n  }\n\n  get scriptElements() {\n    return document.documentElement.querySelectorAll(\"script\")\n  }\n}\n\nclass PageRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    if (document.body && newElement instanceof HTMLBodyElement) {\n      document.body.replaceWith(newElement);\n    } else {\n      document.documentElement.appendChild(newElement);\n    }\n  }\n\n  get shouldRender() {\n    return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical\n  }\n\n  get reloadReason() {\n    if (!this.newSnapshot.isVisitable) {\n      return {\n        reason: \"turbo_visit_control_is_reload\"\n      }\n    }\n\n    if (!this.trackedElementsAreIdentical) {\n      return {\n        reason: \"tracked_element_mismatch\"\n      }\n    }\n  }\n\n  async prepareToRender() {\n    this.#setLanguage();\n    await this.mergeHead();\n  }\n\n  async render() {\n    if (this.willRender) {\n      await this.replaceBody();\n    }\n  }\n\n  finishRendering() {\n    super.finishRendering();\n    if (!this.isPreview) {\n      this.focusFirstAutofocusableElement();\n    }\n  }\n\n  get currentHeadSnapshot() {\n    return this.currentSnapshot.headSnapshot\n  }\n\n  get newHeadSnapshot() {\n    return this.newSnapshot.headSnapshot\n  }\n\n  get newElement() {\n    return this.newSnapshot.element\n  }\n\n  #setLanguage() {\n    const { documentElement } = this.currentSnapshot;\n    const { lang } = this.newSnapshot;\n\n    if (lang) {\n      documentElement.setAttribute(\"lang\", lang);\n    } else {\n      documentElement.removeAttribute(\"lang\");\n    }\n  }\n\n  async mergeHead() {\n    const mergedHeadElements = this.mergeProvisionalElements();\n    const newStylesheetElements = this.copyNewHeadStylesheetElements();\n    this.copyNewHeadScriptElements();\n\n    await mergedHeadElements;\n    await newStylesheetElements;\n\n    if (this.willRender) {\n      this.removeUnusedDynamicStylesheetElements();\n    }\n  }\n\n  async replaceBody() {\n    await this.preservingPermanentElements(async () => {\n      this.activateNewBody();\n      await this.assignNewBody();\n    });\n  }\n\n  get trackedElementsAreIdentical() {\n    return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature\n  }\n\n  async copyNewHeadStylesheetElements() {\n    const loadingElements = [];\n\n    for (const element of this.newHeadStylesheetElements) {\n      loadingElements.push(waitForLoad(element));\n\n      document.head.appendChild(element);\n    }\n\n    await Promise.all(loadingElements);\n  }\n\n  copyNewHeadScriptElements() {\n    for (const element of this.newHeadScriptElements) {\n      document.head.appendChild(activateScriptElement(element));\n    }\n  }\n\n  removeUnusedDynamicStylesheetElements() {\n    for (const element of this.unusedDynamicStylesheetElements) {\n      document.head.removeChild(element);\n    }\n  }\n\n  async mergeProvisionalElements() {\n    const newHeadElements = [...this.newHeadProvisionalElements];\n\n    for (const element of this.currentHeadProvisionalElements) {\n      if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n        document.head.removeChild(element);\n      }\n    }\n\n    for (const element of newHeadElements) {\n      document.head.appendChild(element);\n    }\n  }\n\n  isCurrentElementInElementList(element, elementList) {\n    for (const [index, newElement] of elementList.entries()) {\n      // if title element...\n      if (element.tagName == \"TITLE\") {\n        if (newElement.tagName != \"TITLE\") {\n          continue\n        }\n        if (element.innerHTML == newElement.innerHTML) {\n          elementList.splice(index, 1);\n          return true\n        }\n      }\n\n      // if any other element...\n      if (newElement.isEqualNode(element)) {\n        elementList.splice(index, 1);\n        return true\n      }\n    }\n\n    return false\n  }\n\n  removeCurrentHeadProvisionalElements() {\n    for (const element of this.currentHeadProvisionalElements) {\n      document.head.removeChild(element);\n    }\n  }\n\n  copyNewHeadProvisionalElements() {\n    for (const element of this.newHeadProvisionalElements) {\n      document.head.appendChild(element);\n    }\n  }\n\n  activateNewBody() {\n    document.adoptNode(this.newElement);\n    this.activateNewBodyScriptElements();\n  }\n\n  activateNewBodyScriptElements() {\n    for (const inertScriptElement of this.newBodyScriptElements) {\n      const activatedScriptElement = activateScriptElement(inertScriptElement);\n      inertScriptElement.replaceWith(activatedScriptElement);\n    }\n  }\n\n  async assignNewBody() {\n    await this.renderElement(this.currentElement, this.newElement);\n  }\n\n  get unusedDynamicStylesheetElements() {\n    return this.oldHeadStylesheetElements.filter((element) => {\n      return element.getAttribute(\"data-turbo-track\") === \"dynamic\"\n    })\n  }\n\n  get oldHeadStylesheetElements() {\n    return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot)\n  }\n\n  get newHeadStylesheetElements() {\n    return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)\n  }\n\n  get newHeadScriptElements() {\n    return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)\n  }\n\n  get currentHeadProvisionalElements() {\n    return this.currentHeadSnapshot.provisionalElements\n  }\n\n  get newHeadProvisionalElements() {\n    return this.newHeadSnapshot.provisionalElements\n  }\n\n  get newBodyScriptElements() {\n    return this.newElement.querySelectorAll(\"script\")\n  }\n}\n\nclass MorphingPageRenderer extends PageRenderer {\n  static renderElement(currentElement, newElement) {\n    morphElements(currentElement, newElement, {\n      callbacks: {\n        beforeNodeMorphed: element => !canRefreshFrame(element)\n      }\n    });\n\n    for (const frame of currentElement.querySelectorAll(\"turbo-frame\")) {\n      if (canRefreshFrame(frame)) frame.reload();\n    }\n\n    dispatch(\"turbo:morph\", { detail: { currentElement, newElement } });\n  }\n\n  async preservingPermanentElements(callback) {\n    return await callback()\n  }\n\n  get renderMethod() {\n    return \"morph\"\n  }\n\n  get shouldAutofocus() {\n    return false\n  }\n}\n\nfunction canRefreshFrame(frame) {\n  return frame instanceof FrameElement &&\n    frame.src &&\n    frame.refresh === \"morph\" &&\n    !frame.closest(\"[data-turbo-permanent]\")\n}\n\nclass SnapshotCache {\n  keys = []\n  snapshots = {}\n\n  constructor(size) {\n    this.size = size;\n  }\n\n  has(location) {\n    return toCacheKey(location) in this.snapshots\n  }\n\n  get(location) {\n    if (this.has(location)) {\n      const snapshot = this.read(location);\n      this.touch(location);\n      return snapshot\n    }\n  }\n\n  put(location, snapshot) {\n    this.write(location, snapshot);\n    this.touch(location);\n    return snapshot\n  }\n\n  clear() {\n    this.snapshots = {};\n  }\n\n  // Private\n\n  read(location) {\n    return this.snapshots[toCacheKey(location)]\n  }\n\n  write(location, snapshot) {\n    this.snapshots[toCacheKey(location)] = snapshot;\n  }\n\n  touch(location) {\n    const key = toCacheKey(location);\n    const index = this.keys.indexOf(key);\n    if (index > -1) this.keys.splice(index, 1);\n    this.keys.unshift(key);\n    this.trim();\n  }\n\n  trim() {\n    for (const key of this.keys.splice(this.size)) {\n      delete this.snapshots[key];\n    }\n  }\n}\n\nclass PageView extends View {\n  snapshotCache = new SnapshotCache(10)\n  lastRenderedLocation = new URL(location.href)\n  forceReloaded = false\n\n  shouldTransitionTo(newSnapshot) {\n    return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions\n  }\n\n  renderPage(snapshot, isPreview = false, willRender = true, visit) {\n    const shouldMorphPage = this.isPageRefresh(visit) && this.snapshot.shouldMorphPage;\n    const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;\n\n    const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender);\n\n    if (!renderer.shouldRender) {\n      this.forceReloaded = true;\n    } else {\n      visit?.changeHistory();\n    }\n\n    return this.render(renderer)\n  }\n\n  renderError(snapshot, visit) {\n    visit?.changeHistory();\n    const renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n    return this.render(renderer)\n  }\n\n  clearSnapshotCache() {\n    this.snapshotCache.clear();\n  }\n\n  async cacheSnapshot(snapshot = this.snapshot) {\n    if (snapshot.isCacheable) {\n      this.delegate.viewWillCacheSnapshot();\n      const { lastRenderedLocation: location } = this;\n      await nextEventLoopTick();\n      const cachedSnapshot = snapshot.clone();\n      this.snapshotCache.put(location, cachedSnapshot);\n      return cachedSnapshot\n    }\n  }\n\n  getCachedSnapshotForLocation(location) {\n    return this.snapshotCache.get(location)\n  }\n\n  isPageRefresh(visit) {\n    return !visit || (this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === \"replace\")\n  }\n\n  shouldPreserveScrollPosition(visit) {\n    return this.isPageRefresh(visit) && this.snapshot.shouldPreserveScrollPosition\n  }\n\n  get snapshot() {\n    return PageSnapshot.fromElement(this.element)\n  }\n}\n\nclass Preloader {\n  selector = \"a[data-turbo-preload]\"\n\n  constructor(delegate, snapshotCache) {\n    this.delegate = delegate;\n    this.snapshotCache = snapshotCache;\n  }\n\n  start() {\n    if (document.readyState === \"loading\") {\n      document.addEventListener(\"DOMContentLoaded\", this.#preloadAll);\n    } else {\n      this.preloadOnLoadLinksForView(document.body);\n    }\n  }\n\n  stop() {\n    document.removeEventListener(\"DOMContentLoaded\", this.#preloadAll);\n  }\n\n  preloadOnLoadLinksForView(element) {\n    for (const link of element.querySelectorAll(this.selector)) {\n      if (this.delegate.shouldPreloadLink(link)) {\n        this.preloadURL(link);\n      }\n    }\n  }\n\n  async preloadURL(link) {\n    const location = new URL(link.href);\n\n    if (this.snapshotCache.has(location)) {\n      return\n    }\n\n    const fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams(), link);\n    await fetchRequest.perform();\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(fetchRequest) {\n    fetchRequest.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n  }\n\n  async requestSucceededWithResponse(fetchRequest, fetchResponse) {\n    try {\n      const responseHTML = await fetchResponse.responseHTML;\n      const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n      this.snapshotCache.put(fetchRequest.url, snapshot);\n    } catch (_) {\n      // If we cannot preload that is ok!\n    }\n  }\n\n  requestStarted(fetchRequest) {}\n\n  requestErrored(fetchRequest) {}\n\n  requestFinished(fetchRequest) {}\n\n  requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n  requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n  #preloadAll = () => {\n    this.preloadOnLoadLinksForView(document.body);\n  }\n}\n\nclass Cache {\n  constructor(session) {\n    this.session = session;\n  }\n\n  clear() {\n    this.session.clearCache();\n  }\n\n  resetCacheControl() {\n    this.#setCacheControl(\"\");\n  }\n\n  exemptPageFromCache() {\n    this.#setCacheControl(\"no-cache\");\n  }\n\n  exemptPageFromPreview() {\n    this.#setCacheControl(\"no-preview\");\n  }\n\n  #setCacheControl(value) {\n    setMetaContent(\"turbo-cache-control\", value);\n  }\n}\n\nclass Session {\n  navigator = new Navigator(this)\n  history = new History(this)\n  view = new PageView(this, document.documentElement)\n  adapter = new BrowserAdapter(this)\n\n  pageObserver = new PageObserver(this)\n  cacheObserver = new CacheObserver()\n  linkPrefetchObserver = new LinkPrefetchObserver(this, document)\n  linkClickObserver = new LinkClickObserver(this, window)\n  formSubmitObserver = new FormSubmitObserver(this, document)\n  scrollObserver = new ScrollObserver(this)\n  streamObserver = new StreamObserver(this)\n  formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement)\n  frameRedirector = new FrameRedirector(this, document.documentElement)\n  streamMessageRenderer = new StreamMessageRenderer()\n  cache = new Cache(this)\n\n  enabled = true\n  started = false\n  #pageRefreshDebouncePeriod = 150\n\n  constructor(recentRequests) {\n    this.recentRequests = recentRequests;\n    this.preloader = new Preloader(this, this.view.snapshotCache);\n    this.debouncedRefresh = this.refresh;\n    this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod;\n  }\n\n  start() {\n    if (!this.started) {\n      this.pageObserver.start();\n      this.cacheObserver.start();\n      this.linkPrefetchObserver.start();\n      this.formLinkClickObserver.start();\n      this.linkClickObserver.start();\n      this.formSubmitObserver.start();\n      this.scrollObserver.start();\n      this.streamObserver.start();\n      this.frameRedirector.start();\n      this.history.start();\n      this.preloader.start();\n      this.started = true;\n      this.enabled = true;\n    }\n  }\n\n  disable() {\n    this.enabled = false;\n  }\n\n  stop() {\n    if (this.started) {\n      this.pageObserver.stop();\n      this.cacheObserver.stop();\n      this.linkPrefetchObserver.stop();\n      this.formLinkClickObserver.stop();\n      this.linkClickObserver.stop();\n      this.formSubmitObserver.stop();\n      this.scrollObserver.stop();\n      this.streamObserver.stop();\n      this.frameRedirector.stop();\n      this.history.stop();\n      this.preloader.stop();\n      this.started = false;\n    }\n  }\n\n  registerAdapter(adapter) {\n    this.adapter = adapter;\n  }\n\n  visit(location, options = {}) {\n    const frameElement = options.frame ? document.getElementById(options.frame) : null;\n\n    if (frameElement instanceof FrameElement) {\n      const action = options.action || getVisitAction(frameElement);\n\n      frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);\n      frameElement.src = location.toString();\n    } else {\n      this.navigator.proposeVisit(expandURL(location), options);\n    }\n  }\n\n  refresh(url, requestId) {\n    const isRecentRequest = requestId && this.recentRequests.has(requestId);\n    const isCurrentUrl = url === document.baseURI;\n    if (!isRecentRequest && !this.navigator.currentVisit && isCurrentUrl) {\n      this.visit(url, { action: \"replace\", shouldCacheSnapshot: false });\n    }\n  }\n\n  connectStreamSource(source) {\n    this.streamObserver.connectStreamSource(source);\n  }\n\n  disconnectStreamSource(source) {\n    this.streamObserver.disconnectStreamSource(source);\n  }\n\n  renderStreamMessage(message) {\n    this.streamMessageRenderer.render(StreamMessage.wrap(message));\n  }\n\n  clearCache() {\n    this.view.clearSnapshotCache();\n  }\n\n  setProgressBarDelay(delay) {\n    console.warn(\n      \"Please replace `session.setProgressBarDelay(delay)` with `session.progressBarDelay = delay`. The function is deprecated and will be removed in a future version of Turbo.`\"\n    );\n\n    this.progressBarDelay = delay;\n  }\n\n  set progressBarDelay(delay) {\n    config.drive.progressBarDelay = delay;\n  }\n\n  get progressBarDelay() {\n    return config.drive.progressBarDelay\n  }\n\n  set drive(value) {\n    config.drive.enabled = value;\n  }\n\n  get drive() {\n    return config.drive.enabled\n  }\n\n  set formMode(value) {\n    config.forms.mode = value;\n  }\n\n  get formMode() {\n    return config.forms.mode\n  }\n\n  get location() {\n    return this.history.location\n  }\n\n  get restorationIdentifier() {\n    return this.history.restorationIdentifier\n  }\n\n  get pageRefreshDebouncePeriod() {\n    return this.#pageRefreshDebouncePeriod\n  }\n\n  set pageRefreshDebouncePeriod(value) {\n    this.refresh = debounce(this.debouncedRefresh.bind(this), value);\n    this.#pageRefreshDebouncePeriod = value;\n  }\n\n  // Preloader delegate\n\n  shouldPreloadLink(element) {\n    const isUnsafe = element.hasAttribute(\"data-turbo-method\");\n    const isStream = element.hasAttribute(\"data-turbo-stream\");\n    const frameTarget = element.getAttribute(\"data-turbo-frame\");\n    const frame = frameTarget == \"_top\" ?\n      null :\n      document.getElementById(frameTarget) || findClosestRecursively(element, \"turbo-frame:not([disabled])\");\n\n    if (isUnsafe || isStream || frame instanceof FrameElement) {\n      return false\n    } else {\n      const location = new URL(element.href);\n\n      return this.elementIsNavigatable(element) && locationIsVisitable(location, this.snapshot.rootLocation)\n    }\n  }\n\n  // History delegate\n\n  historyPoppedToLocationWithRestorationIdentifierAndDirection(location, restorationIdentifier, direction) {\n    if (this.enabled) {\n      this.navigator.startVisit(location, restorationIdentifier, {\n        action: \"restore\",\n        historyChanged: true,\n        direction\n      });\n    } else {\n      this.adapter.pageInvalidated({\n        reason: \"turbo_disabled\"\n      });\n    }\n  }\n\n  // Scroll observer delegate\n\n  scrollPositionChanged(position) {\n    this.history.updateRestorationData({ scrollPosition: position });\n  }\n\n  // Form click observer delegate\n\n  willSubmitFormLinkToLocation(link, location) {\n    return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation)\n  }\n\n  submittedFormLinkToLocation() {}\n\n  // Link hover observer delegate\n\n  canPrefetchRequestToLocation(link, location) {\n    return (\n      this.elementIsNavigatable(link) &&\n      locationIsVisitable(location, this.snapshot.rootLocation) &&\n      this.navigator.linkPrefetchingIsEnabledForLocation(location)\n    )\n  }\n\n  // Link click observer delegate\n\n  willFollowLinkToLocation(link, location, event) {\n    return (\n      this.elementIsNavigatable(link) &&\n      locationIsVisitable(location, this.snapshot.rootLocation) &&\n      this.applicationAllowsFollowingLinkToLocation(link, location, event)\n    )\n  }\n\n  followedLinkToLocation(link, location) {\n    const action = this.getActionForLink(link);\n    const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n\n    this.visit(location.href, { action, acceptsStreamResponse });\n  }\n\n  // Navigator delegate\n\n  allowsVisitingLocationWithAction(location, action) {\n    return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location)\n  }\n\n  visitProposedToLocation(location, options) {\n    extendURLWithDeprecatedProperties(location);\n    this.adapter.visitProposedToLocation(location, options);\n  }\n\n  // Visit delegate\n\n  visitStarted(visit) {\n    if (!visit.acceptsStreamResponse) {\n      markAsBusy(document.documentElement);\n      this.view.markVisitDirection(visit.direction);\n    }\n    extendURLWithDeprecatedProperties(visit.location);\n    if (!visit.silent) {\n      this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n    }\n  }\n\n  visitCompleted(visit) {\n    this.view.unmarkVisitDirection();\n    clearBusyState(document.documentElement);\n    this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n  }\n\n  locationWithActionIsSamePage(location, action) {\n    return this.navigator.locationWithActionIsSamePage(location, action)\n  }\n\n  visitScrolledToSamePageLocation(oldURL, newURL) {\n    this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(form, submitter) {\n    const action = getAction$1(form, submitter);\n\n    return (\n      this.submissionIsNavigatable(form, submitter) &&\n      locationIsVisitable(expandURL(action), this.snapshot.rootLocation)\n    )\n  }\n\n  formSubmitted(form, submitter) {\n    this.navigator.submitForm(form, submitter);\n  }\n\n  // Page observer delegate\n\n  pageBecameInteractive() {\n    this.view.lastRenderedLocation = this.location;\n    this.notifyApplicationAfterPageLoad();\n  }\n\n  pageLoaded() {\n    this.history.assumeControlOfScrollRestoration();\n  }\n\n  pageWillUnload() {\n    this.history.relinquishControlOfScrollRestoration();\n  }\n\n  // Stream observer delegate\n\n  receivedMessageFromStream(message) {\n    this.renderStreamMessage(message);\n  }\n\n  // Page view delegate\n\n  viewWillCacheSnapshot() {\n    if (!this.navigator.currentVisit?.silent) {\n      this.notifyApplicationBeforeCachingSnapshot();\n    }\n  }\n\n  allowsImmediateRender({ element }, options) {\n    const event = this.notifyApplicationBeforeRender(element, options);\n    const {\n      defaultPrevented,\n      detail: { render }\n    } = event;\n\n    if (this.view.renderer && render) {\n      this.view.renderer.renderElement = render;\n    }\n\n    return !defaultPrevented\n  }\n\n  viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) {\n    this.view.lastRenderedLocation = this.history.location;\n    this.notifyApplicationAfterRender(renderMethod);\n  }\n\n  preloadOnLoadLinksForView(element) {\n    this.preloader.preloadOnLoadLinksForView(element);\n  }\n\n  viewInvalidated(reason) {\n    this.adapter.pageInvalidated(reason);\n  }\n\n  // Frame element\n\n  frameLoaded(frame) {\n    this.notifyApplicationAfterFrameLoad(frame);\n  }\n\n  frameRendered(fetchResponse, frame) {\n    this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n  }\n\n  // Application events\n\n  applicationAllowsFollowingLinkToLocation(link, location, ev) {\n    const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n    return !event.defaultPrevented\n  }\n\n  applicationAllowsVisitingLocation(location) {\n    const event = this.notifyApplicationBeforeVisitingLocation(location);\n    return !event.defaultPrevented\n  }\n\n  notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n    return dispatch(\"turbo:click\", {\n      target: link,\n      detail: { url: location.href, originalEvent: event },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationBeforeVisitingLocation(location) {\n    return dispatch(\"turbo:before-visit\", {\n      detail: { url: location.href },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationAfterVisitingLocation(location, action) {\n    return dispatch(\"turbo:visit\", { detail: { url: location.href, action } })\n  }\n\n  notifyApplicationBeforeCachingSnapshot() {\n    return dispatch(\"turbo:before-cache\")\n  }\n\n  notifyApplicationBeforeRender(newBody, options) {\n    return dispatch(\"turbo:before-render\", {\n      detail: { newBody, ...options },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationAfterRender(renderMethod) {\n    return dispatch(\"turbo:render\", { detail: { renderMethod } })\n  }\n\n  notifyApplicationAfterPageLoad(timing = {}) {\n    return dispatch(\"turbo:load\", {\n      detail: { url: this.location.href, timing }\n    })\n  }\n\n  notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n    dispatchEvent(\n      new HashChangeEvent(\"hashchange\", {\n        oldURL: oldURL.toString(),\n        newURL: newURL.toString()\n      })\n    );\n  }\n\n  notifyApplicationAfterFrameLoad(frame) {\n    return dispatch(\"turbo:frame-load\", { target: frame })\n  }\n\n  notifyApplicationAfterFrameRender(fetchResponse, frame) {\n    return dispatch(\"turbo:frame-render\", {\n      detail: { fetchResponse },\n      target: frame,\n      cancelable: true\n    })\n  }\n\n  // Helpers\n\n  submissionIsNavigatable(form, submitter) {\n    if (config.forms.mode == \"off\") {\n      return false\n    } else {\n      const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n      if (config.forms.mode == \"optin\") {\n        return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null\n      } else {\n        return submitterIsNavigatable && this.elementIsNavigatable(form)\n      }\n    }\n  }\n\n  elementIsNavigatable(element) {\n    const container = findClosestRecursively(element, \"[data-turbo]\");\n    const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n\n    // Check if Drive is enabled on the session or we're within a Frame.\n    if (config.drive.enabled || withinFrame) {\n      // Element is navigatable by default, unless `data-turbo=\"false\"`.\n      if (container) {\n        return container.getAttribute(\"data-turbo\") != \"false\"\n      } else {\n        return true\n      }\n    } else {\n      // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n      if (container) {\n        return container.getAttribute(\"data-turbo\") == \"true\"\n      } else {\n        return false\n      }\n    }\n  }\n\n  // Private\n\n  getActionForLink(link) {\n    return getVisitAction(link) || \"advance\"\n  }\n\n  get snapshot() {\n    return this.view.snapshot\n  }\n}\n\n// Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\nfunction extendURLWithDeprecatedProperties(url) {\n  Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nconst deprecatedLocationPropertyDescriptors = {\n  absoluteURL: {\n    get() {\n      return this.toString()\n    }\n  }\n};\n\nconst session = new Session(recentRequests);\nconst { cache, navigator: navigator$1 } = session;\n\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\nfunction start() {\n  session.start();\n}\n\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\nfunction registerAdapter(adapter) {\n  session.registerAdapter(adapter);\n}\n\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\nfunction visit(location, options) {\n  session.visit(location, options);\n}\n\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\nfunction connectStreamSource(source) {\n  session.connectStreamSource(source);\n}\n\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\nfunction disconnectStreamSource(source) {\n  session.disconnectStreamSource(source);\n}\n\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\nfunction renderStreamMessage(message) {\n  session.renderStreamMessage(message);\n}\n\n/**\n * Removes all entries from the Turbo Drive page cache.\n * Call this when state has changed on the server that may affect cached pages.\n *\n * @deprecated since version 7.2.0 in favor of `Turbo.cache.clear()`\n */\nfunction clearCache() {\n  console.warn(\n    \"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  session.clearCache();\n}\n\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\nfunction setProgressBarDelay(delay) {\n  console.warn(\n    \"Please replace `Turbo.setProgressBarDelay(delay)` with `Turbo.config.drive.progressBarDelay = delay`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.drive.progressBarDelay = delay;\n}\n\nfunction setConfirmMethod(confirmMethod) {\n  console.warn(\n    \"Please replace `Turbo.setConfirmMethod(confirmMethod)` with `Turbo.config.forms.confirm = confirmMethod`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.forms.confirm = confirmMethod;\n}\n\nfunction setFormMode(mode) {\n  console.warn(\n    \"Please replace `Turbo.setFormMode(mode)` with `Turbo.config.forms.mode = mode`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.forms.mode = mode;\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  navigator: navigator$1,\n  session: session,\n  cache: cache,\n  PageRenderer: PageRenderer,\n  PageSnapshot: PageSnapshot,\n  FrameRenderer: FrameRenderer,\n  fetch: fetchWithTurboHeaders,\n  config: config,\n  start: start,\n  registerAdapter: registerAdapter,\n  visit: visit,\n  connectStreamSource: connectStreamSource,\n  disconnectStreamSource: disconnectStreamSource,\n  renderStreamMessage: renderStreamMessage,\n  clearCache: clearCache,\n  setProgressBarDelay: setProgressBarDelay,\n  setConfirmMethod: setConfirmMethod,\n  setFormMode: setFormMode\n});\n\nclass TurboFrameMissingError extends Error {}\n\nclass FrameController {\n  fetchResponseLoaded = (_fetchResponse) => Promise.resolve()\n  #currentFetchRequest = null\n  #resolveVisitPromise = () => {}\n  #connected = false\n  #hasBeenLoaded = false\n  #ignoredAttributes = new Set()\n  #shouldMorphFrame = false\n  action = null\n\n  constructor(element) {\n    this.element = element;\n    this.view = new FrameView(this, this.element);\n    this.appearanceObserver = new AppearanceObserver(this, this.element);\n    this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n    this.linkInterceptor = new LinkInterceptor(this, this.element);\n    this.restorationIdentifier = uuid();\n    this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n  }\n\n  // Frame delegate\n\n  connect() {\n    if (!this.#connected) {\n      this.#connected = true;\n      if (this.loadingStyle == FrameLoadingStyle.lazy) {\n        this.appearanceObserver.start();\n      } else {\n        this.#loadSourceURL();\n      }\n      this.formLinkClickObserver.start();\n      this.linkInterceptor.start();\n      this.formSubmitObserver.start();\n    }\n  }\n\n  disconnect() {\n    if (this.#connected) {\n      this.#connected = false;\n      this.appearanceObserver.stop();\n      this.formLinkClickObserver.stop();\n      this.linkInterceptor.stop();\n      this.formSubmitObserver.stop();\n    }\n  }\n\n  disabledChanged() {\n    if (this.loadingStyle == FrameLoadingStyle.eager) {\n      this.#loadSourceURL();\n    }\n  }\n\n  sourceURLChanged() {\n    if (this.#isIgnoringChangesTo(\"src\")) return\n\n    if (this.element.isConnected) {\n      this.complete = false;\n    }\n\n    if (this.loadingStyle == FrameLoadingStyle.eager || this.#hasBeenLoaded) {\n      this.#loadSourceURL();\n    }\n  }\n\n  sourceURLReloaded() {\n    const { refresh, src } = this.element;\n\n    this.#shouldMorphFrame = src && refresh === \"morph\";\n\n    this.element.removeAttribute(\"complete\");\n    this.element.src = null;\n    this.element.src = src;\n    return this.element.loaded\n  }\n\n  loadingStyleChanged() {\n    if (this.loadingStyle == FrameLoadingStyle.lazy) {\n      this.appearanceObserver.start();\n    } else {\n      this.appearanceObserver.stop();\n      this.#loadSourceURL();\n    }\n  }\n\n  async #loadSourceURL() {\n    if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n      this.element.loaded = this.#visit(expandURL(this.sourceURL));\n      this.appearanceObserver.stop();\n      await this.element.loaded;\n      this.#hasBeenLoaded = true;\n    }\n  }\n\n  async loadResponse(fetchResponse) {\n    if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n      this.sourceURL = fetchResponse.response.url;\n    }\n\n    try {\n      const html = await fetchResponse.responseHTML;\n      if (html) {\n        const document = parseHTMLDocument(html);\n        const pageSnapshot = PageSnapshot.fromDocument(document);\n\n        if (pageSnapshot.isVisitable) {\n          await this.#loadFrameResponse(fetchResponse, document);\n        } else {\n          await this.#handleUnvisitableFrameResponse(fetchResponse);\n        }\n      }\n    } finally {\n      this.#shouldMorphFrame = false;\n      this.fetchResponseLoaded = () => Promise.resolve();\n    }\n  }\n\n  // Appearance observer delegate\n\n  elementAppearedInViewport(element) {\n    this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element));\n    this.#loadSourceURL();\n  }\n\n  // Form link click observer delegate\n\n  willSubmitFormLinkToLocation(link) {\n    return this.#shouldInterceptNavigation(link)\n  }\n\n  submittedFormLinkToLocation(link, _location, form) {\n    const frame = this.#findFrameElement(link);\n    if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n  }\n\n  // Link interceptor delegate\n\n  shouldInterceptLinkClick(element, _location, _event) {\n    return this.#shouldInterceptNavigation(element)\n  }\n\n  linkClickIntercepted(element, location) {\n    this.#navigateFrame(element, location);\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(element, submitter) {\n    return element.closest(\"turbo-frame\") == this.element && this.#shouldInterceptNavigation(element, submitter)\n  }\n\n  formSubmitted(element, submitter) {\n    if (this.formSubmission) {\n      this.formSubmission.stop();\n    }\n\n    this.formSubmission = new FormSubmission(this, element, submitter);\n    const { fetchRequest } = this.formSubmission;\n    this.prepareRequest(fetchRequest);\n    this.formSubmission.start();\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(request) {\n    request.headers[\"Turbo-Frame\"] = this.id;\n\n    if (this.currentNavigationElement?.hasAttribute(\"data-turbo-stream\")) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted(_request) {\n    markAsBusy(this.element);\n  }\n\n  requestPreventedHandlingResponse(_request, _response) {\n    this.#resolveVisitPromise();\n  }\n\n  async requestSucceededWithResponse(request, response) {\n    await this.loadResponse(response);\n    this.#resolveVisitPromise();\n  }\n\n  async requestFailedWithResponse(request, response) {\n    await this.loadResponse(response);\n    this.#resolveVisitPromise();\n  }\n\n  requestErrored(request, error) {\n    console.error(error);\n    this.#resolveVisitPromise();\n  }\n\n  requestFinished(_request) {\n    clearBusyState(this.element);\n  }\n\n  // Form submission delegate\n\n  formSubmissionStarted({ formElement }) {\n    markAsBusy(formElement, this.#findFrameElement(formElement));\n  }\n\n  formSubmissionSucceededWithResponse(formSubmission, response) {\n    const frame = this.#findFrameElement(formSubmission.formElement, formSubmission.submitter);\n\n    frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame));\n    frame.delegate.loadResponse(response);\n\n    if (!formSubmission.isSafe) {\n      session.clearCache();\n    }\n  }\n\n  formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n    this.element.delegate.loadResponse(fetchResponse);\n    session.clearCache();\n  }\n\n  formSubmissionErrored(formSubmission, error) {\n    console.error(error);\n  }\n\n  formSubmissionFinished({ formElement }) {\n    clearBusyState(formElement, this.#findFrameElement(formElement));\n  }\n\n  // View delegate\n\n  allowsImmediateRender({ element: newFrame }, options) {\n    const event = dispatch(\"turbo:before-frame-render\", {\n      target: this.element,\n      detail: { newFrame, ...options },\n      cancelable: true\n    });\n\n    const {\n      defaultPrevented,\n      detail: { render }\n    } = event;\n\n    if (this.view.renderer && render) {\n      this.view.renderer.renderElement = render;\n    }\n\n    return !defaultPrevented\n  }\n\n  viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n\n  preloadOnLoadLinksForView(element) {\n    session.preloadOnLoadLinksForView(element);\n  }\n\n  viewInvalidated() {}\n\n  // Frame renderer delegate\n\n  willRenderFrame(currentElement, _newElement) {\n    this.previousFrameElement = currentElement.cloneNode(true);\n  }\n\n  visitCachedSnapshot = ({ element }) => {\n    const frame = element.querySelector(\"#\" + this.element.id);\n\n    if (frame && this.previousFrameElement) {\n      frame.replaceChildren(...this.previousFrameElement.children);\n    }\n\n    delete this.previousFrameElement;\n  }\n\n  // Private\n\n  async #loadFrameResponse(fetchResponse, document) {\n    const newFrameElement = await this.extractForeignFrameElement(document.body);\n    const rendererClass = this.#shouldMorphFrame ? MorphingFrameRenderer : FrameRenderer;\n\n    if (newFrameElement) {\n      const snapshot = new Snapshot(newFrameElement);\n      const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false);\n      if (this.view.renderPromise) await this.view.renderPromise;\n      this.changeHistory();\n\n      await this.view.render(renderer);\n      this.complete = true;\n      session.frameRendered(fetchResponse, this.element);\n      session.frameLoaded(this.element);\n      await this.fetchResponseLoaded(fetchResponse);\n    } else if (this.#willHandleFrameMissingFromResponse(fetchResponse)) {\n      this.#handleFrameMissingFromResponse(fetchResponse);\n    }\n  }\n\n  async #visit(url) {\n    const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n\n    this.#currentFetchRequest?.cancel();\n    this.#currentFetchRequest = request;\n\n    return new Promise((resolve) => {\n      this.#resolveVisitPromise = () => {\n        this.#resolveVisitPromise = () => {};\n        this.#currentFetchRequest = null;\n        resolve();\n      };\n      request.perform();\n    })\n  }\n\n  #navigateFrame(element, url, submitter) {\n    const frame = this.#findFrameElement(element, submitter);\n\n    frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter, element, frame));\n\n    this.#withCurrentNavigationElement(element, () => {\n      frame.src = url;\n    });\n  }\n\n  proposeVisitIfNavigatedWithAction(frame, action = null) {\n    this.action = action;\n\n    if (this.action) {\n      const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n      const { visitCachedSnapshot } = frame.delegate;\n\n      frame.delegate.fetchResponseLoaded = async (fetchResponse) => {\n        if (frame.src) {\n          const { statusCode, redirected } = fetchResponse;\n          const responseHTML = await fetchResponse.responseHTML;\n          const response = { statusCode, redirected, responseHTML };\n          const options = {\n            response,\n            visitCachedSnapshot,\n            willRender: false,\n            updateHistory: false,\n            restorationIdentifier: this.restorationIdentifier,\n            snapshot: pageSnapshot\n          };\n\n          if (this.action) options.action = this.action;\n\n          session.visit(frame.src, options);\n        }\n      };\n    }\n  }\n\n  changeHistory() {\n    if (this.action) {\n      const method = getHistoryMethodForAction(this.action);\n      session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n    }\n  }\n\n  async #handleUnvisitableFrameResponse(fetchResponse) {\n    console.warn(\n      `The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`\n    );\n\n    await this.#visitResponse(fetchResponse.response);\n  }\n\n  #willHandleFrameMissingFromResponse(fetchResponse) {\n    this.element.setAttribute(\"complete\", \"\");\n\n    const response = fetchResponse.response;\n    const visit = async (url, options) => {\n      if (url instanceof Response) {\n        this.#visitResponse(url);\n      } else {\n        session.visit(url, options);\n      }\n    };\n\n    const event = dispatch(\"turbo:frame-missing\", {\n      target: this.element,\n      detail: { response, visit },\n      cancelable: true\n    });\n\n    return !event.defaultPrevented\n  }\n\n  #handleFrameMissingFromResponse(fetchResponse) {\n    this.view.missing();\n    this.#throwFrameMissingError(fetchResponse);\n  }\n\n  #throwFrameMissingError(fetchResponse) {\n    const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n    throw new TurboFrameMissingError(message)\n  }\n\n  async #visitResponse(response) {\n    const wrapped = new FetchResponse(response);\n    const responseHTML = await wrapped.responseHTML;\n    const { location, redirected, statusCode } = wrapped;\n\n    return session.visit(location, { response: { redirected, statusCode, responseHTML } })\n  }\n\n  #findFrameElement(element, submitter) {\n    const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n    return getFrameElementById(id) ?? this.element\n  }\n\n  async extractForeignFrameElement(container) {\n    let element;\n    const id = CSS.escape(this.id);\n\n    try {\n      element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n      if (element) {\n        return element\n      }\n\n      element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n      if (element) {\n        await element.loaded;\n        return await this.extractForeignFrameElement(element)\n      }\n    } catch (error) {\n      console.error(error);\n      return new FrameElement()\n    }\n\n    return null\n  }\n\n  #formActionIsVisitable(form, submitter) {\n    const action = getAction$1(form, submitter);\n\n    return locationIsVisitable(expandURL(action), this.rootLocation)\n  }\n\n  #shouldInterceptNavigation(element, submitter) {\n    const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n\n    if (element instanceof HTMLFormElement && !this.#formActionIsVisitable(element, submitter)) {\n      return false\n    }\n\n    if (!this.enabled || id == \"_top\") {\n      return false\n    }\n\n    if (id) {\n      const frameElement = getFrameElementById(id);\n      if (frameElement) {\n        return !frameElement.disabled\n      }\n    }\n\n    if (!session.elementIsNavigatable(element)) {\n      return false\n    }\n\n    if (submitter && !session.elementIsNavigatable(submitter)) {\n      return false\n    }\n\n    return true\n  }\n\n  // Computed properties\n\n  get id() {\n    return this.element.id\n  }\n\n  get enabled() {\n    return !this.element.disabled\n  }\n\n  get sourceURL() {\n    if (this.element.src) {\n      return this.element.src\n    }\n  }\n\n  set sourceURL(sourceURL) {\n    this.#ignoringChangesToAttribute(\"src\", () => {\n      this.element.src = sourceURL ?? null;\n    });\n  }\n\n  get loadingStyle() {\n    return this.element.loading\n  }\n\n  get isLoading() {\n    return this.formSubmission !== undefined || this.#resolveVisitPromise() !== undefined\n  }\n\n  get complete() {\n    return this.element.hasAttribute(\"complete\")\n  }\n\n  set complete(value) {\n    if (value) {\n      this.element.setAttribute(\"complete\", \"\");\n    } else {\n      this.element.removeAttribute(\"complete\");\n    }\n  }\n\n  get isActive() {\n    return this.element.isActive && this.#connected\n  }\n\n  get rootLocation() {\n    const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n    const root = meta?.content ?? \"/\";\n    return expandURL(root)\n  }\n\n  #isIgnoringChangesTo(attributeName) {\n    return this.#ignoredAttributes.has(attributeName)\n  }\n\n  #ignoringChangesToAttribute(attributeName, callback) {\n    this.#ignoredAttributes.add(attributeName);\n    callback();\n    this.#ignoredAttributes.delete(attributeName);\n  }\n\n  #withCurrentNavigationElement(element, callback) {\n    this.currentNavigationElement = element;\n    callback();\n    delete this.currentNavigationElement;\n  }\n}\n\nfunction getFrameElementById(id) {\n  if (id != null) {\n    const element = document.getElementById(id);\n    if (element instanceof FrameElement) {\n      return element\n    }\n  }\n}\n\nfunction activateElement(element, currentURL) {\n  if (element) {\n    const src = element.getAttribute(\"src\");\n    if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n      throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`)\n    }\n    if (element.ownerDocument !== document) {\n      element = document.importNode(element, true);\n    }\n\n    if (element instanceof FrameElement) {\n      element.connectedCallback();\n      element.disconnectedCallback();\n      return element\n    }\n  }\n}\n\nconst StreamActions = {\n  after() {\n    this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e.nextSibling));\n  },\n\n  append() {\n    this.removeDuplicateTargetChildren();\n    this.targetElements.forEach((e) => e.append(this.templateContent));\n  },\n\n  before() {\n    this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e));\n  },\n\n  prepend() {\n    this.removeDuplicateTargetChildren();\n    this.targetElements.forEach((e) => e.prepend(this.templateContent));\n  },\n\n  remove() {\n    this.targetElements.forEach((e) => e.remove());\n  },\n\n  replace() {\n    const method = this.getAttribute(\"method\");\n\n    this.targetElements.forEach((targetElement) => {\n      if (method === \"morph\") {\n        morphElements(targetElement, this.templateContent);\n      } else {\n        targetElement.replaceWith(this.templateContent);\n      }\n    });\n  },\n\n  update() {\n    const method = this.getAttribute(\"method\");\n\n    this.targetElements.forEach((targetElement) => {\n      if (method === \"morph\") {\n        morphChildren(targetElement, this.templateContent);\n      } else {\n        targetElement.innerHTML = \"\";\n        targetElement.append(this.templateContent);\n      }\n    });\n  },\n\n  refresh() {\n    session.refresh(this.baseURI, this.requestId);\n  }\n};\n\n// <turbo-stream action=replace target=id><template>...\n\n/**\n * Renders updates to the page from a stream of messages.\n *\n * Using the `action` attribute, this can be configured one of eight ways:\n *\n * - `after` - inserts the result after the target\n * - `append` - appends the result to the target\n * - `before` - inserts the result before the target\n * - `prepend` - prepends the result to the target\n * - `refresh` - initiates a page refresh\n * - `remove` - removes the target\n * - `replace` - replaces the outer HTML of the target\n * - `update` - replaces the inner HTML of the target\n *\n * @customElement turbo-stream\n * @example\n *   <turbo-stream action=\"append\" target=\"dom_id\">\n *     <template>\n *       Content to append to target designated with the dom_id.\n *     </template>\n *   </turbo-stream>\n */\nclass StreamElement extends HTMLElement {\n  static async renderElement(newElement) {\n    await newElement.performAction();\n  }\n\n  async connectedCallback() {\n    try {\n      await this.render();\n    } catch (error) {\n      console.error(error);\n    } finally {\n      this.disconnect();\n    }\n  }\n\n  async render() {\n    return (this.renderPromise ??= (async () => {\n      const event = this.beforeRenderEvent;\n\n      if (this.dispatchEvent(event)) {\n        await nextRepaint();\n        await event.detail.render(this);\n      }\n    })())\n  }\n\n  disconnect() {\n    try {\n      this.remove();\n      // eslint-disable-next-line no-empty\n    } catch {}\n  }\n\n  /**\n   * Removes duplicate children (by ID)\n   */\n  removeDuplicateTargetChildren() {\n    this.duplicateChildren.forEach((c) => c.remove());\n  }\n\n  /**\n   * Gets the list of duplicate children (i.e. those with the same ID)\n   */\n  get duplicateChildren() {\n    const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.getAttribute(\"id\"));\n    const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.getAttribute(\"id\")).map((c) => c.getAttribute(\"id\"));\n\n    return existingChildren.filter((c) => newChildrenIds.includes(c.getAttribute(\"id\")))\n  }\n\n  /**\n   * Gets the action function to be performed.\n   */\n  get performAction() {\n    if (this.action) {\n      const actionFunction = StreamActions[this.action];\n      if (actionFunction) {\n        return actionFunction\n      }\n      this.#raise(\"unknown action\");\n    }\n    this.#raise(\"action attribute is missing\");\n  }\n\n  /**\n   * Gets the target elements which the template will be rendered to.\n   */\n  get targetElements() {\n    if (this.target) {\n      return this.targetElementsById\n    } else if (this.targets) {\n      return this.targetElementsByQuery\n    } else {\n      this.#raise(\"target or targets attribute is missing\");\n    }\n  }\n\n  /**\n   * Gets the contents of the main `<template>`.\n   */\n  get templateContent() {\n    return this.templateElement.content.cloneNode(true)\n  }\n\n  /**\n   * Gets the main `<template>` used for rendering\n   */\n  get templateElement() {\n    if (this.firstElementChild === null) {\n      const template = this.ownerDocument.createElement(\"template\");\n      this.appendChild(template);\n      return template\n    } else if (this.firstElementChild instanceof HTMLTemplateElement) {\n      return this.firstElementChild\n    }\n    this.#raise(\"first child element must be a <template> element\");\n  }\n\n  /**\n   * Gets the current action.\n   */\n  get action() {\n    return this.getAttribute(\"action\")\n  }\n\n  /**\n   * Gets the current target (an element ID) to which the result will\n   * be rendered.\n   */\n  get target() {\n    return this.getAttribute(\"target\")\n  }\n\n  /**\n   * Gets the current \"targets\" selector (a CSS selector)\n   */\n  get targets() {\n    return this.getAttribute(\"targets\")\n  }\n\n  /**\n   * Reads the request-id attribute\n   */\n  get requestId() {\n    return this.getAttribute(\"request-id\")\n  }\n\n  #raise(message) {\n    throw new Error(`${this.description}: ${message}`)\n  }\n\n  get description() {\n    return (this.outerHTML.match(/<[^>]+>/) ?? [])[0] ?? \"<turbo-stream>\"\n  }\n\n  get beforeRenderEvent() {\n    return new CustomEvent(\"turbo:before-stream-render\", {\n      bubbles: true,\n      cancelable: true,\n      detail: { newStream: this, render: StreamElement.renderElement }\n    })\n  }\n\n  get targetElementsById() {\n    const element = this.ownerDocument?.getElementById(this.target);\n\n    if (element !== null) {\n      return [element]\n    } else {\n      return []\n    }\n  }\n\n  get targetElementsByQuery() {\n    const elements = this.ownerDocument?.querySelectorAll(this.targets);\n\n    if (elements.length !== 0) {\n      return Array.prototype.slice.call(elements)\n    } else {\n      return []\n    }\n  }\n}\n\nclass StreamSourceElement extends HTMLElement {\n  streamSource = null\n\n  connectedCallback() {\n    this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n\n    connectStreamSource(this.streamSource);\n  }\n\n  disconnectedCallback() {\n    if (this.streamSource) {\n      this.streamSource.close();\n\n      disconnectStreamSource(this.streamSource);\n    }\n  }\n\n  get src() {\n    return this.getAttribute(\"src\") || \"\"\n  }\n}\n\nFrameElement.delegateConstructor = FrameController;\n\nif (customElements.get(\"turbo-frame\") === undefined) {\n  customElements.define(\"turbo-frame\", FrameElement);\n}\n\nif (customElements.get(\"turbo-stream\") === undefined) {\n  customElements.define(\"turbo-stream\", StreamElement);\n}\n\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n  customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n  let element = document.currentScript;\n  if (!element) return\n  if (element.hasAttribute(\"data-turbo-suppress-warning\")) return\n\n  element = element.parentElement;\n  while (element) {\n    if (element == document.body) {\n      return console.warn(\n        unindent`\n        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n        Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n        For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n        \u2014\u2014\n        Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n      `,\n        element.outerHTML\n      )\n    }\n\n    element = element.parentElement;\n  }\n})();\n\nwindow.Turbo = { ...Turbo, StreamActions };\nstart();\n\nexport { FetchEnctype, FetchMethod, FetchRequest, FetchResponse, FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, config, connectStreamSource, disconnectStreamSource, fetchWithTurboHeaders as fetch, fetchEnctypeFromString, fetchMethodFromString, isSafe, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n  return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n  const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n  return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n  const { subscriptions } = await getConsumer()\n  return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n    if (!obj || typeof obj !== 'object') return obj;\n    if (obj instanceof Date || obj instanceof RegExp) return obj;\n    if (Array.isArray(obj)) return obj.map(walk);\n    return Object.keys(obj).reduce(function (acc, key) {\n        var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n            return '_' + x.toLowerCase();\n        });\n        acc[camel] = walk(obj[key]);\n        return acc;\n    }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n  static observedAttributes = [\"channel\", \"signed-stream-name\"]\n\n  async connectedCallback() {\n    connectStreamSource(this)\n    this.subscription = await subscribeTo(this.channel, {\n      received: this.dispatchMessageEvent.bind(this),\n      connected: this.subscriptionConnected.bind(this),\n      disconnected: this.subscriptionDisconnected.bind(this)\n    })\n  }\n\n  disconnectedCallback() {\n    disconnectStreamSource(this)\n    if (this.subscription) this.subscription.unsubscribe()\n    this.subscriptionDisconnected()\n  }\n\n  attributeChangedCallback() {\n    if (this.subscription) {\n      this.disconnectedCallback()\n      this.connectedCallback()\n    }\n  }\n\n  dispatchMessageEvent(data) {\n    const event = new MessageEvent(\"message\", { data })\n    return this.dispatchEvent(event)\n  }\n\n  subscriptionConnected() {\n    this.setAttribute(\"connected\", \"\")\n  }\n\n  subscriptionDisconnected() {\n    this.removeAttribute(\"connected\")\n  }\n\n  get channel() {\n    const channel = this.getAttribute(\"channel\")\n    const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n    return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n  }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n  customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n  if (event.target instanceof HTMLFormElement) {\n    const { target: form, detail: { fetchOptions } } = event\n\n    form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n      const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n      const method = determineFetchMethod(submitter, body, form)\n\n      if (!/get/i.test(method)) {\n        if (/post/i.test(method)) {\n          body.delete(\"_method\")\n        } else {\n          body.set(\"_method\", method)\n        }\n\n        fetchOptions.method = \"post\"\n      }\n    }, { once: true })\n  }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n  const formMethod = determineFormMethod(submitter)\n  const overrideMethod = body.get(\"_method\")\n  const method = form.getAttribute(\"method\") || \"get\"\n\n  if (typeof formMethod == \"string\") {\n    return formMethod\n  } else if (typeof overrideMethod == \"string\") {\n    return overrideMethod\n  } else {\n    return method\n  }\n}\n\nfunction determineFormMethod(submitter) {\n  if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n    // Rails 7 ActionView::Helpers::FormBuilder#button method has an override\n    // for formmethod if the button does not have name or value attributes\n    // set, which is the default. This means that if you use <%= f.button\n    // formmethod: :delete %>, it will generate a <button name=\"_method\"\n    // value=\"delete\" formmethod=\"post\">. Therefore, if the submitter's name\n    // is already _method, it's value attribute already contains the desired\n    // method.\n    if (submitter.name === '_method') {\n      return submitter.value\n    } else if (submitter.hasAttribute(\"formmethod\")) {\n      return submitter.formMethod\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\nfunction isBodyInit(body) {\n  return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\nwindow.Turbo = Turbo\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\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 { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug    = false\nwindow.Stimulus      = application\n\nexport { application }\n", "// Reconnect ActionCable after switching accounts\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport consumer from \"../channels/consumer\"\n\nexport default class extends Controller {\n  reconnect(event) {\n    if (consumer.connection.isActive()) {\n      consumer.connection.reopen()\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", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Article Editor Controller\n// Provides autocomplete for linking to other articles in the Trix editor\nexport default class extends Controller {\n  static values = {\n    searchUrl: { type: String, default: \"/jobs/knowledge_base/articles/search\" }\n  }\n\n  connect() {\n    this.editor = this.element.querySelector(\"trix-editor\")\n    if (this.editor) {\n      this.editor.addEventListener(\"trix-initialize\", this.setupLinkDialog.bind(this))\n    }\n  }\n\n  disconnect() {\n    if (this.editor) {\n      this.editor.removeEventListener(\"trix-initialize\", this.setupLinkDialog.bind(this))\n    }\n  }\n\n  setupLinkDialog() {\n    // Enhance the link dialog with article search\n    const toolbar = this.editor.toolbarElement\n    if (!toolbar) return\n\n    // Add article search button to toolbar\n    const linkButton = toolbar.querySelector(\"[data-trix-action='link']\")\n    if (linkButton && !toolbar.querySelector(\"[data-article-search]\")) {\n      const searchButton = document.createElement(\"button\")\n      searchButton.type = \"button\"\n      searchButton.className = \"trix-button trix-button--icon trix-button--icon-link\"\n      searchButton.setAttribute(\"data-article-search\", \"true\")\n      searchButton.setAttribute(\"title\", \"Link to Article\")\n      searchButton.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n      </svg>`\n      searchButton.addEventListener(\"click\", this.showArticleSearch.bind(this))\n      linkButton.parentNode.insertBefore(searchButton, linkButton.nextSibling)\n    }\n  }\n\n  async showArticleSearch() {\n    const searchTerm = prompt(\"Search for an article to link:\")\n    if (!searchTerm) return\n\n    try {\n      const response = await fetch(`${this.searchUrlValue}?q=${encodeURIComponent(searchTerm)}`, {\n        headers: {\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": document.querySelector(\"[name='csrf-token']\")?.content\n        }\n      })\n\n      if (!response.ok) throw new Error(\"Search failed\")\n\n      const articles = await response.json()\n\n      if (articles.length === 0) {\n        alert(\"No articles found matching your search.\")\n        return\n      }\n\n      // Show simple selection (could be enhanced with a proper modal)\n      const options = articles.map((a, i) => `${i + 1}. ${a.title} (${a.category})`).join(\"\\n\")\n      const selection = prompt(`Select an article (enter number):\\n\\n${options}`)\n\n      if (selection) {\n        const index = parseInt(selection) - 1\n        if (index >= 0 && index < articles.length) {\n          const article = articles[index]\n          const url = `/help/${article.category.toLowerCase().replace(/\\s+/g, '-')}/${article.slug}`\n          this.insertLink(url, article.title)\n        }\n      }\n    } catch (error) {\n      console.error(\"Article search error:\", error)\n      alert(\"Failed to search articles. Please try again.\")\n    }\n  }\n\n  insertLink(url, text) {\n    const editor = this.editor.editor\n    if (editor.getSelectedRange()[0] === editor.getSelectedRange()[1]) {\n      // No selection, insert text with link\n      editor.insertString(text)\n      const position = editor.getPosition()\n      editor.setSelectedRange([position - text.length, position])\n    }\n    editor.activateAttribute(\"href\", url)\n  }\n}\n", "// Autogrows textareas based on content\n//\n// Example Usage:\n// <%= form.text_area :value, data: {controller: \"autogrow\", action: \"input->autogrow#autogrow\"} %>\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  connect() {\n    this.autogrow()\n  }\n\n  autogrow() {\n    this.element.style.height = 'auto';\n    this.element.style.height = `${this.element.scrollHeight}px`;\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"autosubmit\"\nexport default class extends Controller {\n  disconnect() {\n    clearTimeout(this.timeout)\n  }\n\n  submit() {\n    clearTimeout(this.timeout)\n    this.timeout = setTimeout(() => {\n      this.element.requestSubmit()\n    }, 100)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"dateInput\", \"accountSelect\"]\n\n  connect() {\n    if (!this.dateInputTarget.value) {\n      this.accountSelectTarget.disabled = true\n    }\n  }\n\n  async updateAccounts() {\n    const date = this.dateInputTarget.value\n    if (!date) {\n      this.accountSelectTarget.disabled = true\n      return\n    }\n\n    const response = await fetch(`/jobs/billing_reports?production_date=${date}&format=json`)\n    const accounts = await response.json()\n\n    this.accountSelectTarget.innerHTML = '<option value=\"\">All Accounts</option>'\n    accounts.forEach(account => {\n      const option = document.createElement('option')\n      option.value = account.id\n      option.textContent = account.name\n      this.accountSelectTarget.appendChild(option)\n    })\n\n    this.accountSelectTarget.disabled = false\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Right-side \"N waiting\" drawer. Closes on the \u2715, on Escape, or backdrop click.\nexport default class extends Controller {\n  connect() {\n    this._onKey = (e) => { if (e.key === \"Escape\") this.close() }\n    document.addEventListener(\"keydown\", this._onKey)\n  }\n\n  disconnect() {\n    document.removeEventListener(\"keydown\", this._onKey)\n  }\n\n  // Only when the click lands on the backdrop wrapper itself, not the panel.\n  backdrop(event) {\n    if (event.target === this.element) this.close()\n  }\n\n  stop(event) {\n    event.stopPropagation()\n  }\n\n  close() {\n    this.element.remove()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Bench-station ergonomics: the scan field stays focused (the gun types + Enter),\n// auto-refocuses + clears after every scan, and beeps on success / buzzes on\n// error so the receiver doesn't have to watch the screen.\nexport default class extends Controller {\n  static targets = [\"input\"]\n\n  connect() {\n    this.focusInput()\n  }\n\n  focusInput() {\n    if (this.hasInputTarget) {\n      this.inputTarget.focus()\n      this.inputTarget.select()\n    }\n  }\n\n  // Fired on turbo:submit-end after the scan form posts and #box_panel updates.\n  afterScan() {\n    if (this.hasInputTarget) this.inputTarget.value = \"\"\n    this.focusInput()\n\n    const marker = this.element.querySelector(\"#box_panel [data-scan-status]\")\n    const status = marker ? marker.dataset.scanStatus : null\n    if (status === \"ok\") this.tone(880, 0.08, \"sine\")\n    else if (status === \"error\") this.tone(180, 0.22, \"square\")\n  }\n\n  tone(freq, dur, type) {\n    try {\n      const Ctx = window.AudioContext || window.webkitAudioContext\n      if (!Ctx) return\n      const ctx = new Ctx()\n      const osc = ctx.createOscillator()\n      const gain = ctx.createGain()\n      osc.type = type\n      osc.frequency.value = freq\n      gain.gain.value = 0.07\n      osc.connect(gain)\n      gain.connect(ctx.destination)\n      osc.start()\n      osc.stop(ctx.currentTime + dur)\n      osc.onended = () => ctx.close()\n    } catch (_e) {\n      // Audio unavailable \u2014 silent, never blocks the scan.\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [ \"dropin\", \"form\" ]\n\n  connect() {\n    braintree.dropin.create({\n      authorization: this.data.get(\"clientToken\"),\n      container: this.dropinTarget,\n      card: {\n        overrides: {\n          styles: this.cardStyles\n        }\n      },\n      //threeDSecure: true,\n      paypal: {\n        flow: \"vault\"\n      },\n      // Uncomment this to only display PayPal in the Drop-in UI\n      //paymentOptionPriority: ['paypal']\n    },\n      this.clientCreated.bind(this)\n    )\n  }\n\n  clientCreated(error, instance) {\n    if (error) {\n      console.error(\"Error setting up Braintree dropin:\", error)\n      return\n    }\n\n    this.instance = instance\n  }\n\n  submit(event) {\n    event.preventDefault()\n    this.instance.requestPaymentMethod(this.paymentMethod.bind(this))\n  }\n\n  paymentMethod(error, payload) {\n    if (error) {\n      console.error(\"Error with payment method:\", error)\n      return\n    }\n\n    this.addHiddenField(\"processor\", \"braintree\")\n    this.addHiddenField(\"payment_method_token\", payload.nonce)\n    this.formTarget.submit()\n  }\n\n  addHiddenField(name, value) {\n    let hiddenInput = document.createElement(\"input\")\n    hiddenInput.setAttribute(\"type\", \"hidden\")\n    hiddenInput.setAttribute(\"name\", name)\n    hiddenInput.setAttribute(\"value\", value)\n    this.formTarget.appendChild(hiddenInput)\n  }\n\n  get cardStyles() {\n    let darkMode = document.documentElement.classList.contains(\"dark\");\n    if(darkMode) {\n      return {\n        '.number': {\n          color: 'white'\n        },\n        '.expirationDate': {\n          color: 'white'\n        }\n      }\n    }\n  }\n}\n", "// The BulkController can be used for adding bulk operations to your index views.\n// You can add a Select All checkbox and checkboxes for each record and easily grab\n// the selected records.\n//\n// Usage:\n//\n//   import BulkController from \"controllers/bulk_controller\"\n//\n//   export default class extends BulkController {\n//   }\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\tstatic targets = [ \"checkbox\", \"selectAll\" ]\n\n  // Toggles all checkboxes based upon what is currently checked\n  toggleSelectAll(event) {\n    (!this.allCheckboxesSelected) ? this.selectAll() : this.unselectAll()\n  }\n\n  // Selects all checkboxes\n  selectAll() {\n    this.selectAllTarget.checked = true\n    this.selectAllTarget.indeterminate = false\n    this.unselected.forEach(target => target.checked = true)\n  }\n\n  // Unselects all checkboxes\n  unselectAll() {\n    this.selectAllTarget.checked = false\n    this.selectAllTarget.indeterminate = false\n    this.selected.forEach(target => target.checked = false)\n  }\n\n  // Keep track of SelectAll state based upon how many checkboxes are selected\n  change(event) {\n    if (this.noCheckboxesSelected) {\n      this.selectAllTarget.checked = false\n      this.selectAllTarget.indeterminate = false\n\n    } else if (this.allCheckboxesSelected) {\n      this.selectAllTarget.checked = true\n      this.selectAllTarget.indeterminate = false\n\n    } else {\n      this.selectAllTarget.indeterminate = true\n    }\n  }\n\n  // Returns true if Select All checkbox is checked\n  get selectedAll() {\n    return this.selectAllTarget.checked\n  }\n\n  // Returns all selected checkboxes\n  get selected() {\n    return this.checkboxTargets.filter(target => target.checked)\n  }\n\n  // Returns all unselected checkboxes\n  get unselected() {\n    return this.checkboxTargets.filter(target => !target.checked)\n  }\n\n  // Returns data-id attributes for all selected checkboxes\n  get selectedIds() {\n    return this.selected.map(target => target.dataset.id)\n  }\n\n  // Returns true if all checkboxes are checked\n  get allCheckboxesSelected() {\n    return this.checkboxTargets.every(target => target.checked)\n  }\n\n  // Returns true if no checkboxes are checked\n  get noCheckboxesSelected() {\n    return this.checkboxTargets.every(target => !target.checked)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\n    \"step1\", \"step2\", \"step3\",\n    \"prevButton\", \"nextButton\", \"createButton\",\n    \"combinationCount\", \"customPriceField\", \"skuPattern\", \"previewContainer\",\n    \"inventoryQuantityField\"\n  ]\n  \n  currentStep = 1\n  selectedOptions = new Map()\n  \n  connect() {\n    this.updateCombinationCount()\n    this.updateButtons()\n  }\n  \n  updateCombinationCount() {\n    // Group selected options by variant type\n    this.selectedOptions.clear()\n    \n    const checkboxes = this.step1Target.querySelectorAll('input[type=\"checkbox\"]:checked')\n    checkboxes.forEach(checkbox => {\n      const variantType = checkbox.dataset.variantType\n      const variantTypeName = checkbox.dataset.variantTypeName\n      const optionName = checkbox.dataset.optionName\n      \n      if (!this.selectedOptions.has(variantType)) {\n        this.selectedOptions.set(variantType, {\n          name: variantTypeName,\n          options: []\n        })\n      }\n      \n      this.selectedOptions.get(variantType).options.push({\n        id: checkbox.value,\n        name: optionName\n      })\n    })\n    \n    // Calculate total combinations\n    let combinations = 1\n    this.selectedOptions.forEach((typeData) => {\n      if (typeData.options.length > 0) {\n        combinations *= typeData.options.length\n      }\n    })\n    \n    // If no options selected, show 0\n    if (this.selectedOptions.size === 0) {\n      combinations = 0\n    }\n    \n    this.combinationCountTarget.textContent = combinations\n    \n    // Check if too many combinations\n    if (combinations > 500) {\n      this.combinationCountTarget.classList.add('text-red-600', 'font-semibold')\n      this.combinationCountTarget.textContent = `${combinations} (exceeds maximum of 500)`\n    } else {\n      this.combinationCountTarget.classList.remove('text-red-600', 'font-semibold')\n    }\n  }\n  \n  togglePricingFields(event) {\n    if (event.target.value === 'custom') {\n      this.customPriceFieldTarget.classList.remove('hidden')\n    } else {\n      this.customPriceFieldTarget.classList.add('hidden')\n    }\n  }\n  \n  toggleInventoryField(event) {\n    if (event.target.checked) {\n      this.inventoryQuantityFieldTarget.classList.remove('hidden')\n    } else {\n      this.inventoryQuantityFieldTarget.classList.add('hidden')\n    }\n  }\n  \n  nextStep() {\n    if (this.currentStep === 1 && !this.validateStep1()) {\n      return\n    }\n    \n    if (this.currentStep === 2 && !this.validateStep2()) {\n      return\n    }\n    \n    if (this.currentStep === 2) {\n      // Moving to preview step, generate preview\n      this.preview()\n    }\n    \n    this.currentStep++\n    this.showStep(this.currentStep)\n    this.updateButtons()\n  }\n  \n  previousStep() {\n    this.currentStep--\n    this.showStep(this.currentStep)\n    this.updateButtons()\n  }\n  \n  showStep(step) {\n    // Hide all steps\n    this.step1Target.classList.add('hidden')\n    this.step2Target.classList.add('hidden')\n    this.step3Target.classList.add('hidden')\n    \n    // Show current step\n    switch(step) {\n      case 1:\n        this.step1Target.classList.remove('hidden')\n        break\n      case 2:\n        this.step2Target.classList.remove('hidden')\n        break\n      case 3:\n        this.step3Target.classList.remove('hidden')\n        break\n    }\n  }\n  \n  updateButtons() {\n    // Previous button\n    if (this.currentStep === 1) {\n      this.prevButtonTarget.disabled = true\n      this.prevButtonTarget.classList.add('opacity-50', 'cursor-not-allowed')\n    } else {\n      this.prevButtonTarget.disabled = false\n      this.prevButtonTarget.classList.remove('opacity-50', 'cursor-not-allowed')\n    }\n    \n    // Next button\n    if (this.currentStep === 3) {\n      this.nextButtonTarget.classList.add('hidden')\n    } else {\n      this.nextButtonTarget.classList.remove('hidden')\n    }\n    \n    // Create button\n    if (this.currentStep === 3) {\n      this.createButtonTarget.classList.remove('hidden')\n    } else {\n      this.createButtonTarget.classList.add('hidden')\n    }\n  }\n  \n  validateStep1() {\n    const checkboxes = this.step1Target.querySelectorAll('input[type=\"checkbox\"]:checked')\n    if (checkboxes.length === 0) {\n      alert('Please select at least one variant option')\n      return false\n    }\n    \n    // Check if combination count exceeds limit\n    const count = parseInt(this.combinationCountTarget.textContent)\n    if (count > 500) {\n      alert('Too many combinations. Maximum allowed is 500.')\n      return false\n    }\n    \n    return true\n  }\n  \n  validateStep2() {\n    const skuPattern = this.skuPatternTarget.value.trim()\n    if (!skuPattern) {\n      alert('SKU pattern is required')\n      return false\n    }\n    \n    // If custom pricing is selected, validate price\n    const pricingOption = document.querySelector('input[name=\"pricing_option\"]:checked').value\n    if (pricingOption === 'custom') {\n      const customPrice = this.element.querySelector('[name=\"custom_price_cents\"]').value\n      if (!customPrice || parseFloat(customPrice) <= 0) {\n        alert('Please enter a valid custom price')\n        return false\n      }\n    }\n    \n    return true\n  }\n  \n  async preview(event) {\n    if (event) event.preventDefault()\n    \n    // Show loading spinner\n    this.previewContainerTarget.innerHTML = `\n      <div class=\"flex justify-center py-8\">\n        <svg class=\"animate-spin h-8 w-8 text-blue-600\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n          <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n          <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n        </svg>\n      </div>\n    `\n    \n    // Collect form data\n    const formData = new FormData(this.element)\n    \n    try {\n      const response = await fetch(this.element.action, {\n        method: 'POST',\n        body: formData,\n        headers: {\n          'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content,\n          'Accept': 'application/json'\n        }\n      })\n      \n      const data = await response.json()\n      \n      if (response.ok) {\n        this.displayPreview(data)\n      } else {\n        this.previewContainerTarget.innerHTML = `\n          <div class=\"bg-red-50 border border-red-200 text-red-800 px-4 py-3 rounded-md\">\n            ${data.error || 'An error occurred while generating preview'}\n          </div>\n        `\n      }\n    } catch (error) {\n      this.previewContainerTarget.innerHTML = `\n        <div class=\"bg-red-50 border border-red-200 text-red-800 px-4 py-3 rounded-md\">\n          An error occurred: ${error.message}\n        </div>\n      `\n    }\n  }\n  \n  displayPreview(data) {\n    let html = `\n      <div class=\"bg-blue-50 border border-blue-200 text-blue-800 px-4 py-3 rounded-md mb-4\">\n        <strong>${data.total_count} variants</strong> will be created\n      </div>\n      \n      <div class=\"overflow-x-auto\">\n        <table class=\"min-w-full divide-y divide-gray-200\">\n          <thead class=\"bg-gray-50\">\n            <tr>\n              <th class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">SKU</th>\n              <th class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">Options</th>\n              <th class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">Price</th>\n              <th class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">Pro Price</th>\n              <th class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">Status</th>\n            </tr>\n          </thead>\n          <tbody class=\"bg-white divide-y divide-gray-200\">\n    `\n    \n    data.combinations.forEach(combo => {\n      // Extract option names from variant_options array\n      const optionNames = combo.variant_options ? \n        combo.variant_options.map(opt => opt.name).join(', ') : \n        'N/A'\n      \n      const statusClass = combo.exists ? 'text-yellow-600' : 'text-green-600'\n      const statusText = combo.exists ? 'Already exists' : 'Will be created'\n      const rowClass = combo.exists ? 'bg-yellow-50' : ''\n      \n      html += `\n        <tr class=\"${rowClass}\">\n          <td class=\"px-6 py-4 whitespace-nowrap text-sm font-mono text-gray-900\">${combo.sku}</td>\n          <td class=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900\">${optionNames}</td>\n          <td class=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900\">$${(combo.price_cents / 100).toFixed(2)}</td>\n          <td class=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900\">$${(combo.pro_price_cents / 100).toFixed(2)}</td>\n          <td class=\"px-6 py-4 whitespace-nowrap text-sm font-medium ${statusClass}\">${statusText}</td>\n        </tr>\n      `\n    })\n    \n    html += `\n          </tbody>\n        </table>\n      </div>\n    `\n    \n    this.previewContainerTarget.innerHTML = html\n  }\n  \n  async createVariants(event) {\n    event.preventDefault()\n    \n    if (!confirm('Are you sure you want to create these variants?')) {\n      return\n    }\n    \n    // Disable create button and show loading\n    this.createButtonTarget.disabled = true\n    this.createButtonTarget.innerHTML = `\n      <svg class=\"animate-spin -ml-1 mr-3 h-5 w-5 text-white inline\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n        <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n        <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n      </svg>\n      Creating...\n    `\n    \n    // Collect form data\n    const formData = new FormData(this.element)\n    \n    try {\n      const response = await fetch(this.element.action.replace('bulk_preview', 'bulk_create'), {\n        method: 'POST',\n        body: formData,\n        headers: {\n          'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content,\n          'Accept': 'application/json'\n        }\n      })\n      \n      const data = await response.json()\n      \n      if (response.ok && data.status === 'success') {\n        // Success - reload the page\n        window.location.reload()\n      } else {\n        // Show errors\n        const errors = data.errors || ['An error occurred while creating variants']\n        alert(`Failed to create variants:\\n\\n${errors.join('\\n')}`)\n        \n        // Re-enable button\n        this.createButtonTarget.disabled = false\n        this.createButtonTarget.innerHTML = 'Create Variants'\n      }\n    } catch (error) {\n      alert(`An error occurred: ${error.message}`)\n      \n      // Re-enable button\n      this.createButtonTarget.disabled = false\n      this.createButtonTarget.innerHTML = 'Create Variants'\n    }\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"menu\", \"button\", \"chevron\"]\n\n  initialize() {\n    this.isExpanded = false\n  }\n\n  toggle() {\n    this.isExpanded = !this.isExpanded\n    this.updateView()\n  }\n\n  updateView() {\n    if (this.isExpanded) {\n      this.menuTarget.classList.remove(\"hidden\")\n      this.buttonTarget.setAttribute(\"aria-expanded\", \"true\")\n      this.chevronTarget.classList.add(\"rotate-90\")\n      this.chevronTarget.classList.remove(\"text-[var(--mutedOnDark)]\")\n      this.chevronTarget.classList.add(\"text-white\")\n    } else {\n      this.menuTarget.classList.add(\"hidden\")\n      this.buttonTarget.setAttribute(\"aria-expanded\", \"false\")\n      this.chevronTarget.classList.remove(\"rotate-90\")\n      this.chevronTarget.classList.remove(\"text-white\")\n      this.chevronTarget.classList.add(\"text-[var(--mutedOnDark)]\")\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"mainImage\", \"swatch\"]\n  static values = {\n    defaultImageUrl: String,\n    colorImages: Object\n  }\n\n  connect() {\n    this.defaultImage = this.defaultImageUrlValue\n  }\n\n  showColorImage(event) {\n    const colorId = event.currentTarget.dataset.colorId\n    const imageUrl = this.colorImagesValue[colorId]\n    if (imageUrl && this.hasMainImageTarget) {\n      this.mainImageTarget.src = imageUrl\n    }\n  }\n\n  resetToDefault() {\n    if (this.hasMainImageTarget) {\n      this.mainImageTarget.src = this.defaultImage\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"link\", \"section\"]\n\n  connect() {\n    this.observer = new IntersectionObserver(\n      (entries) => this.handleIntersect(entries),\n      { rootMargin: \"-80px 0px -70% 0px\", threshold: 0 }\n    )\n\n    this.sectionTargets.forEach((section) => this.observer.observe(section))\n  }\n\n  disconnect() {\n    this.observer?.disconnect()\n  }\n\n  handleIntersect(entries) {\n    entries.forEach((entry) => {\n      if (entry.isIntersecting) {\n        const id = entry.target.id\n        this.setActiveLink(id)\n      }\n    })\n  }\n\n  setActiveLink(sectionId) {\n    this.linkTargets.forEach((link) => {\n      if (link.getAttribute(\"href\") === `#${sectionId}`) {\n        link.classList.add(\"text-[var(--pz-purple)]\", \"border-l-2\", \"border-[var(--pz-purple)]\")\n        link.classList.remove(\"text-[rgba(26,21,51,.62)]\")\n      } else {\n        link.classList.remove(\"text-[var(--pz-purple)]\", \"border-l-2\", \"border-[var(--pz-purple)]\")\n        link.classList.add(\"text-[rgba(26,21,51,.62)]\")\n      }\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"checkbox\", \"selectAll\", \"bulkBar\", \"count\"]\n  static values = { url: String }\n\n  toggle() {\n    this.updateUI()\n  }\n\n  toggleAll() {\n    const checked = this.selectAllTarget.checked\n    this.checkboxTargets.forEach(cb => cb.checked = checked)\n    this.updateUI()\n  }\n\n  printLabels() {\n    const selected = this.checkboxTargets\n      .filter(cb => cb.checked)\n      .map(cb => cb.value)\n\n    if (selected.length === 0) return\n\n    // Create a dynamic form that POSTs to bulk_labels and opens in a new tab\n    const form = document.createElement(\"form\")\n    form.method = \"POST\"\n    form.action = this.urlValue\n    form.target = \"_blank\"\n\n    // Add CSRF token\n    const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.content\n    if (csrfToken) {\n      const csrfInput = document.createElement(\"input\")\n      csrfInput.type = \"hidden\"\n      csrfInput.name = \"authenticity_token\"\n      csrfInput.value = csrfToken\n      form.appendChild(csrfInput)\n    }\n\n    // Add selected identifiers\n    selected.forEach(identifier => {\n      const input = document.createElement(\"input\")\n      input.type = \"hidden\"\n      input.name = \"identifiers[]\"\n      input.value = identifier\n      form.appendChild(input)\n    })\n\n    document.body.appendChild(form)\n    form.submit()\n    form.remove()\n  }\n\n  updateUI() {\n    const checkedCount = this.checkboxTargets.filter(cb => cb.checked).length\n    const totalCount = this.checkboxTargets.length\n\n    if (this.hasCountTarget) {\n      this.countTarget.textContent = checkedCount\n    }\n\n    if (this.hasBulkBarTarget) {\n      if (checkedCount > 0) {\n        this.bulkBarTarget.classList.remove(\"hidden\")\n        this.bulkBarTarget.classList.add(\"flex\")\n      } else {\n        this.bulkBarTarget.classList.add(\"hidden\")\n        this.bulkBarTarget.classList.remove(\"flex\")\n      }\n    }\n\n    if (this.hasSelectAllTarget) {\n      this.selectAllTarget.checked = checkedCount === totalCount && totalCount > 0\n      this.selectAllTarget.indeterminate = checkedCount > 0 && checkedCount < totalCount\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport ClipboardJS from \"clipboard\"\nimport tippy from \"tippy.js\";\n\nexport default class extends Controller {\n  static values = {\n    successMessage: { type: String, default: \"Copied!\" },\n    errorMessage: { type: String, default: \"Failed!\" }\n  }\n\n  connect() {\n    this.clipboard = new ClipboardJS(this.element)\n    this.clipboard.on(\"success\", (e) => this.tooltip(this.successMessageValue))\n    this.clipboard.on(\"error\",   (e) => this.tooltip(this.errorMessageValue))\n  }\n\n  tooltip(message) {\n    tippy(this.element, {\n      content: message,\n      showOnCreate: true,\n      onHidden: (instance) => {\n        instance.destroy()\n      }\n    })\n  }\n}\n", "export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];", "export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}", "export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}", "import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };", "import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};", "import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}", "export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;", "export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}", "import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}", "import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}", "import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}", "import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}", "import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}", "import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}", "import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}", "import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}", "export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}", "import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}", "export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}", "import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}", "export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};", "export default function getVariation(placement) {\n  return placement.split('-')[1];\n}", "import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};", "import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};", "var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}", "var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}", "import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}", "import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}", "import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}", "import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}", "import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}", "import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}", "export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}", "import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}", "import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}", "import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}", "import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}", "import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases \u2013 research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};", "import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};", "import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};", "export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}", "import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};", "export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}", "import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}", "import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}", "export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}", "export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}", "import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update \u2013 it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update \u2013 it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";", "export const ROUND_ARROW =\n  '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\n\nexport const BOX_CLASS = `__NAMESPACE_PREFIX__-box`;\nexport const CONTENT_CLASS = `__NAMESPACE_PREFIX__-content`;\nexport const BACKDROP_CLASS = `__NAMESPACE_PREFIX__-backdrop`;\nexport const ARROW_CLASS = `__NAMESPACE_PREFIX__-arrow`;\nexport const SVG_ARROW_CLASS = `__NAMESPACE_PREFIX__-svg-arrow`;\n\nexport const TOUCH_OPTIONS = {passive: true, capture: true};\n\nexport const TIPPY_DEFAULT_APPEND_TO = () => document.body;\n", "import {BasePlacement, Placement} from './types';\n\nexport function hasOwnProperty(\n  obj: Record<string, unknown>,\n  key: string\n): boolean {\n  return {}.hasOwnProperty.call(obj, key);\n}\n\nexport function getValueAtIndexOrReturn<T>(\n  value: T | [T | null, T | null],\n  index: number,\n  defaultValue: T | [T, T]\n): T {\n  if (Array.isArray(value)) {\n    const v = value[index];\n    return v == null\n      ? Array.isArray(defaultValue)\n        ? defaultValue[index]\n        : defaultValue\n      : v;\n  }\n\n  return value;\n}\n\nexport function isType(value: any, type: string): boolean {\n  const str = {}.toString.call(value);\n  return str.indexOf('[object') === 0 && str.indexOf(`${type}]`) > -1;\n}\n\nexport function invokeWithArgsOrReturn(value: any, args: any[]): any {\n  return typeof value === 'function' ? value(...args) : value;\n}\n\nexport function debounce<T>(\n  fn: (arg: T) => void,\n  ms: number\n): (arg: T) => void {\n  // Avoid wrapping in `setTimeout` if ms is 0 anyway\n  if (ms === 0) {\n    return fn;\n  }\n\n  let timeout: any;\n\n  return (arg): void => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => {\n      fn(arg);\n    }, ms);\n  };\n}\n\nexport function removeProperties<T>(obj: T, keys: string[]): Partial<T> {\n  const clone = {...obj};\n  keys.forEach((key) => {\n    delete (clone as any)[key];\n  });\n  return clone;\n}\n\nexport function splitBySpaces(value: string): string[] {\n  return value.split(/\\s+/).filter(Boolean);\n}\n\nexport function normalizeToArray<T>(value: T | T[]): T[] {\n  return ([] as T[]).concat(value);\n}\n\nexport function pushIfUnique<T>(arr: T[], value: T): void {\n  if (arr.indexOf(value) === -1) {\n    arr.push(value);\n  }\n}\n\nexport function appendPxIfNumber(value: string | number): string {\n  return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport function unique<T>(arr: T[]): T[] {\n  return arr.filter((item, index) => arr.indexOf(item) === index);\n}\n\nexport function getNumber(value: string | number): number {\n  return typeof value === 'number' ? value : parseFloat(value);\n}\n\nexport function getBasePlacement(placement: Placement): BasePlacement {\n  return placement.split('-')[0] as BasePlacement;\n}\n\nexport function arrayFrom(value: ArrayLike<any>): any[] {\n  return [].slice.call(value);\n}\n\nexport function removeUndefinedProps(\n  obj: Record<string, unknown>\n): Partial<Record<string, unknown>> {\n  return Object.keys(obj).reduce((acc, key) => {\n    if (obj[key] !== undefined) {\n      (acc as any)[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\n", "import {ReferenceElement, Targets} from './types';\nimport {PopperTreeData} from './types-internal';\nimport {arrayFrom, isType, normalizeToArray, getBasePlacement} from './utils';\n\nexport function div(): HTMLDivElement {\n  return document.createElement('div');\n}\n\nexport function isElement(value: unknown): value is Element | DocumentFragment {\n  return ['Element', 'Fragment'].some((type) => isType(value, type));\n}\n\nexport function isNodeList(value: unknown): value is NodeList {\n  return isType(value, 'NodeList');\n}\n\nexport function isMouseEvent(value: unknown): value is MouseEvent {\n  return isType(value, 'MouseEvent');\n}\n\nexport function isReferenceElement(value: any): value is ReferenceElement {\n  return !!(value && value._tippy && value._tippy.reference === value);\n}\n\nexport function getArrayOfElements(value: Targets): Element[] {\n  if (isElement(value)) {\n    return [value];\n  }\n\n  if (isNodeList(value)) {\n    return arrayFrom(value);\n  }\n\n  if (Array.isArray(value)) {\n    return value;\n  }\n\n  return arrayFrom(document.querySelectorAll(value));\n}\n\nexport function setTransitionDuration(\n  els: (HTMLDivElement | null)[],\n  value: number\n): void {\n  els.forEach((el) => {\n    if (el) {\n      el.style.transitionDuration = `${value}ms`;\n    }\n  });\n}\n\nexport function setVisibilityState(\n  els: (HTMLDivElement | null)[],\n  state: 'visible' | 'hidden'\n): void {\n  els.forEach((el) => {\n    if (el) {\n      el.setAttribute('data-state', state);\n    }\n  });\n}\n\nexport function getOwnerDocument(\n  elementOrElements: Element | Element[]\n): Document {\n  const [element] = normalizeToArray(elementOrElements);\n\n  // Elements created via a <template> have an ownerDocument with no reference to the body\n  return element?.ownerDocument?.body ? element.ownerDocument : document;\n}\n\nexport function isCursorOutsideInteractiveBorder(\n  popperTreeData: PopperTreeData[],\n  event: MouseEvent\n): boolean {\n  const {clientX, clientY} = event;\n\n  return popperTreeData.every(({popperRect, popperState, props}) => {\n    const {interactiveBorder} = props;\n    const basePlacement = getBasePlacement(popperState.placement);\n    const offsetData = popperState.modifiersData.offset;\n\n    if (!offsetData) {\n      return true;\n    }\n\n    const topDistance = basePlacement === 'bottom' ? offsetData.top!.y : 0;\n    const bottomDistance = basePlacement === 'top' ? offsetData.bottom!.y : 0;\n    const leftDistance = basePlacement === 'right' ? offsetData.left!.x : 0;\n    const rightDistance = basePlacement === 'left' ? offsetData.right!.x : 0;\n\n    const exceedsTop =\n      popperRect.top - clientY + topDistance > interactiveBorder;\n    const exceedsBottom =\n      clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n    const exceedsLeft =\n      popperRect.left - clientX + leftDistance > interactiveBorder;\n    const exceedsRight =\n      clientX - popperRect.right - rightDistance > interactiveBorder;\n\n    return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n  });\n}\n\nexport function updateTransitionEndListener(\n  box: HTMLDivElement,\n  action: 'add' | 'remove',\n  listener: (event: TransitionEvent) => void\n): void {\n  const method = `${action}EventListener` as\n    | 'addEventListener'\n    | 'removeEventListener';\n\n  // some browsers apparently support `transition` (unprefixed) but only fire\n  // `webkitTransitionEnd`...\n  ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n    box[method](event, listener as EventListener);\n  });\n}\n\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\nexport function actualContains(parent: Element, child: Element): boolean {\n  let target = child;\n  while (target) {\n    if (parent.contains(target)) {\n      return true;\n    }\n    target = (target.getRootNode?.() as any)?.host;\n  }\n  return false;\n}\n", "import {TOUCH_OPTIONS} from './constants';\nimport {isReferenceElement} from './dom-utils';\n\nexport const currentInput = {isTouch: false};\nlet lastMouseMoveTime = 0;\n\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\nexport function onDocumentTouchStart(): void {\n  if (currentInput.isTouch) {\n    return;\n  }\n\n  currentInput.isTouch = true;\n\n  if (window.performance) {\n    document.addEventListener('mousemove', onDocumentMouseMove);\n  }\n}\n\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\nexport function onDocumentMouseMove(): void {\n  const now = performance.now();\n\n  if (now - lastMouseMoveTime < 20) {\n    currentInput.isTouch = false;\n\n    document.removeEventListener('mousemove', onDocumentMouseMove);\n  }\n\n  lastMouseMoveTime = now;\n}\n\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\nexport function onWindowBlur(): void {\n  const activeElement = document.activeElement as HTMLElement | null;\n\n  if (isReferenceElement(activeElement)) {\n    const instance = activeElement._tippy!;\n\n    if (activeElement.blur && !instance.state.isVisible) {\n      activeElement.blur();\n    }\n  }\n}\n\nexport default function bindGlobalEventListeners(): void {\n  document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n  window.addEventListener('blur', onWindowBlur);\n}\n", "export const isBrowser =\n  typeof window !== 'undefined' && typeof document !== 'undefined';\n\nexport const isIE11 = isBrowser\n  ? // @ts-ignore\n    !!window.msCrypto\n  : false;\n", "import {Targets} from './types';\n\nexport function createMemoryLeakWarning(method: string): string {\n  const txt = method === 'destroy' ? 'n already-' : ' ';\n\n  return [\n    `${method}() was called on a${txt}destroyed instance. This is a no-op but`,\n    'indicates a potential memory leak.',\n  ].join(' ');\n}\n\nexport function clean(value: string): string {\n  const spacesAndTabs = /[ \\t]{2,}/g;\n  const lineStartWithSpaces = /^[ \\t]*/gm;\n\n  return value\n    .replace(spacesAndTabs, ' ')\n    .replace(lineStartWithSpaces, '')\n    .trim();\n}\n\nfunction getDevMessage(message: string): string {\n  return clean(`\n  %ctippy.js\n\n  %c${clean(message)}\n\n  %c👷‍ This is a development-only message. It will be removed in production.\n  `);\n}\n\nexport function getFormattedMessage(message: string): string[] {\n  return [\n    getDevMessage(message),\n    // title\n    'color: #00C584; font-size: 1.3em; font-weight: bold;',\n    // message\n    'line-height: 1.5',\n    // footer\n    'color: #a6a095;',\n  ];\n}\n\n// Assume warnings and errors never have the same message\nlet visitedMessages: Set<string>;\nif (__DEV__) {\n  resetVisitedMessages();\n}\n\nexport function resetVisitedMessages(): void {\n  visitedMessages = new Set();\n}\n\nexport function warnWhen(condition: boolean, message: string): void {\n  if (condition && !visitedMessages.has(message)) {\n    visitedMessages.add(message);\n    console.warn(...getFormattedMessage(message));\n  }\n}\n\nexport function errorWhen(condition: boolean, message: string): void {\n  if (condition && !visitedMessages.has(message)) {\n    visitedMessages.add(message);\n    console.error(...getFormattedMessage(message));\n  }\n}\n\nexport function validateTargets(targets: Targets): void {\n  const didPassFalsyValue = !targets;\n  const didPassPlainObject =\n    Object.prototype.toString.call(targets) === '[object Object]' &&\n    !(targets as any).addEventListener;\n\n  errorWhen(\n    didPassFalsyValue,\n    [\n      'tippy() was passed',\n      '`' + String(targets) + '`',\n      'as its targets (first) argument. Valid types are: String, Element,',\n      'Element[], or NodeList.',\n    ].join(' ')\n  );\n\n  errorWhen(\n    didPassPlainObject,\n    [\n      'tippy() was passed a plain object which is not supported as an argument',\n      'for virtual positioning. Use props.getReferenceClientRect instead.',\n    ].join(' ')\n  );\n}\n", "import {DefaultProps, Plugin, Props, ReferenceElement, Tippy} from './types';\nimport {\n  hasOwnProperty,\n  removeProperties,\n  invokeWithArgsOrReturn,\n} from './utils';\nimport {warnWhen} from './validation';\nimport {TIPPY_DEFAULT_APPEND_TO} from './constants';\n\nconst pluginProps = {\n  animateFill: false,\n  followCursor: false,\n  inlinePositioning: false,\n  sticky: false,\n};\n\nconst renderProps = {\n  allowHTML: false,\n  animation: 'fade',\n  arrow: true,\n  content: '',\n  inertia: false,\n  maxWidth: 350,\n  role: 'tooltip',\n  theme: '',\n  zIndex: 9999,\n};\n\nexport const defaultProps: DefaultProps = {\n  appendTo: TIPPY_DEFAULT_APPEND_TO,\n  aria: {\n    content: 'auto',\n    expanded: 'auto',\n  },\n  delay: 0,\n  duration: [300, 250],\n  getReferenceClientRect: null,\n  hideOnClick: true,\n  ignoreAttributes: false,\n  interactive: false,\n  interactiveBorder: 2,\n  interactiveDebounce: 0,\n  moveTransition: '',\n  offset: [0, 10],\n  onAfterUpdate() {},\n  onBeforeUpdate() {},\n  onCreate() {},\n  onDestroy() {},\n  onHidden() {},\n  onHide() {},\n  onMount() {},\n  onShow() {},\n  onShown() {},\n  onTrigger() {},\n  onUntrigger() {},\n  onClickOutside() {},\n  placement: 'top',\n  plugins: [],\n  popperOptions: {},\n  render: null,\n  showOnCreate: false,\n  touch: true,\n  trigger: 'mouseenter focus',\n  triggerTarget: null,\n  ...pluginProps,\n  ...renderProps,\n};\n\nconst defaultKeys = Object.keys(defaultProps);\n\nexport const setDefaultProps: Tippy['setDefaultProps'] = (partialProps) => {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    validateProps(partialProps, []);\n  }\n\n  const keys = Object.keys(partialProps) as Array<keyof DefaultProps>;\n  keys.forEach((key) => {\n    (defaultProps as any)[key] = partialProps[key];\n  });\n};\n\nexport function getExtendedPassedProps(\n  passedProps: Partial<Props> & Record<string, unknown>\n): Partial<Props> {\n  const plugins = passedProps.plugins || [];\n  const pluginProps = plugins.reduce<Record<string, unknown>>((acc, plugin) => {\n    const {name, defaultValue} = plugin;\n\n    if (name) {\n      acc[name] =\n        passedProps[name] !== undefined\n          ? passedProps[name]\n          : (defaultProps as any)[name] ?? defaultValue;\n    }\n\n    return acc;\n  }, {});\n\n  return {\n    ...passedProps,\n    ...pluginProps,\n  };\n}\n\nexport function getDataAttributeProps(\n  reference: ReferenceElement,\n  plugins: Plugin[]\n): Record<string, unknown> {\n  const propKeys = plugins\n    ? Object.keys(getExtendedPassedProps({...defaultProps, plugins}))\n    : defaultKeys;\n\n  const props = propKeys.reduce(\n    (acc: Partial<Props> & Record<string, unknown>, key) => {\n      const valueAsString = (\n        reference.getAttribute(`data-tippy-${key}`) || ''\n      ).trim();\n\n      if (!valueAsString) {\n        return acc;\n      }\n\n      if (key === 'content') {\n        acc[key] = valueAsString;\n      } else {\n        try {\n          acc[key] = JSON.parse(valueAsString);\n        } catch (e) {\n          acc[key] = valueAsString;\n        }\n      }\n\n      return acc;\n    },\n    {}\n  );\n\n  return props;\n}\n\nexport function evaluateProps(\n  reference: ReferenceElement,\n  props: Props\n): Props {\n  const out = {\n    ...props,\n    content: invokeWithArgsOrReturn(props.content, [reference]),\n    ...(props.ignoreAttributes\n      ? {}\n      : getDataAttributeProps(reference, props.plugins)),\n  };\n\n  out.aria = {\n    ...defaultProps.aria,\n    ...out.aria,\n  };\n\n  out.aria = {\n    expanded:\n      out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n    content:\n      out.aria.content === 'auto'\n        ? props.interactive\n          ? null\n          : 'describedby'\n        : out.aria.content,\n  };\n\n  return out;\n}\n\nexport function validateProps(\n  partialProps: Partial<Props> = {},\n  plugins: Plugin[] = []\n): void {\n  const keys = Object.keys(partialProps) as Array<keyof Props>;\n  keys.forEach((prop) => {\n    const nonPluginProps = removeProperties(\n      defaultProps,\n      Object.keys(pluginProps)\n    );\n\n    let didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop);\n\n    // Check if the prop exists in `plugins`\n    if (didPassUnknownProp) {\n      didPassUnknownProp =\n        plugins.filter((plugin) => plugin.name === prop).length === 0;\n    }\n\n    warnWhen(\n      didPassUnknownProp,\n      [\n        `\\`${prop}\\``,\n        \"is not a valid prop. You may have spelled it incorrectly, or if it's\",\n        'a plugin, forgot to pass it in an array as props.plugins.',\n        '\\n\\n',\n        'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n',\n        'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/',\n      ].join(' ')\n    );\n  });\n}\n", "import {\n  ARROW_CLASS,\n  BACKDROP_CLASS,\n  BOX_CLASS,\n  CONTENT_CLASS,\n  SVG_ARROW_CLASS,\n} from './constants';\nimport {div, isElement} from './dom-utils';\nimport {Instance, PopperElement, Props} from './types';\nimport {PopperChildren} from './types-internal';\nimport {arrayFrom} from './utils';\n\n// Firefox extensions don't allow .innerHTML = \"...\" property. This tricks it.\nconst innerHTML = (): 'innerHTML' => 'innerHTML';\n\nfunction dangerouslySetInnerHTML(element: Element, html: string): void {\n  element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value: Props['arrow']): HTMLDivElement {\n  const arrow = div();\n\n  if (value === true) {\n    arrow.className = ARROW_CLASS;\n  } else {\n    arrow.className = SVG_ARROW_CLASS;\n\n    if (isElement(value)) {\n      arrow.appendChild(value);\n    } else {\n      dangerouslySetInnerHTML(arrow, value as string);\n    }\n  }\n\n  return arrow;\n}\n\nexport function setContent(content: HTMLDivElement, props: Props): void {\n  if (isElement(props.content)) {\n    dangerouslySetInnerHTML(content, '');\n    content.appendChild(props.content);\n  } else if (typeof props.content !== 'function') {\n    if (props.allowHTML) {\n      dangerouslySetInnerHTML(content, props.content);\n    } else {\n      content.textContent = props.content;\n    }\n  }\n}\n\nexport function getChildren(popper: PopperElement): PopperChildren {\n  const box = popper.firstElementChild as HTMLDivElement;\n  const boxChildren = arrayFrom(box.children);\n\n  return {\n    box,\n    content: boxChildren.find((node) => node.classList.contains(CONTENT_CLASS)),\n    arrow: boxChildren.find(\n      (node) =>\n        node.classList.contains(ARROW_CLASS) ||\n        node.classList.contains(SVG_ARROW_CLASS)\n    ),\n    backdrop: boxChildren.find((node) =>\n      node.classList.contains(BACKDROP_CLASS)\n    ),\n  };\n}\n\nexport function render(\n  instance: Instance\n): {\n  popper: PopperElement;\n  onUpdate?: (prevProps: Props, nextProps: Props) => void;\n} {\n  const popper = div();\n\n  const box = div();\n  box.className = BOX_CLASS;\n  box.setAttribute('data-state', 'hidden');\n  box.setAttribute('tabindex', '-1');\n\n  const content = div();\n  content.className = CONTENT_CLASS;\n  content.setAttribute('data-state', 'hidden');\n\n  setContent(content, instance.props);\n\n  popper.appendChild(box);\n  box.appendChild(content);\n\n  onUpdate(instance.props, instance.props);\n\n  function onUpdate(prevProps: Props, nextProps: Props): void {\n    const {box, content, arrow} = getChildren(popper);\n\n    if (nextProps.theme) {\n      box.setAttribute('data-theme', nextProps.theme);\n    } else {\n      box.removeAttribute('data-theme');\n    }\n\n    if (typeof nextProps.animation === 'string') {\n      box.setAttribute('data-animation', nextProps.animation);\n    } else {\n      box.removeAttribute('data-animation');\n    }\n\n    if (nextProps.inertia) {\n      box.setAttribute('data-inertia', '');\n    } else {\n      box.removeAttribute('data-inertia');\n    }\n\n    box.style.maxWidth =\n      typeof nextProps.maxWidth === 'number'\n        ? `${nextProps.maxWidth}px`\n        : nextProps.maxWidth;\n\n    if (nextProps.role) {\n      box.setAttribute('role', nextProps.role);\n    } else {\n      box.removeAttribute('role');\n    }\n\n    if (\n      prevProps.content !== nextProps.content ||\n      prevProps.allowHTML !== nextProps.allowHTML\n    ) {\n      setContent(content, instance.props);\n    }\n\n    if (nextProps.arrow) {\n      if (!arrow) {\n        box.appendChild(createArrowElement(nextProps.arrow));\n      } else if (prevProps.arrow !== nextProps.arrow) {\n        box.removeChild(arrow);\n        box.appendChild(createArrowElement(nextProps.arrow));\n      }\n    } else if (arrow) {\n      box.removeChild(arrow!);\n    }\n  }\n\n  return {\n    popper,\n    onUpdate,\n  };\n}\n\n// Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\nrender.$$tippy = true;\n", "import {createPopper, StrictModifiers, Modifier} from '@popperjs/core';\nimport {currentInput} from './bindGlobalEventListeners';\nimport {isIE11} from './browser';\nimport {TIPPY_DEFAULT_APPEND_TO, TOUCH_OPTIONS} from './constants';\nimport {\n  actualContains,\n  div,\n  getOwnerDocument,\n  isCursorOutsideInteractiveBorder,\n  isMouseEvent,\n  setTransitionDuration,\n  setVisibilityState,\n  updateTransitionEndListener,\n} from './dom-utils';\nimport {defaultProps, evaluateProps, getExtendedPassedProps} from './props';\nimport {getChildren} from './template';\nimport {\n  Content,\n  Instance,\n  LifecycleHooks,\n  PopperElement,\n  Props,\n  ReferenceElement,\n} from './types';\nimport {ListenerObject, PopperTreeData, PopperChildren} from './types-internal';\nimport {\n  arrayFrom,\n  debounce,\n  getValueAtIndexOrReturn,\n  invokeWithArgsOrReturn,\n  normalizeToArray,\n  pushIfUnique,\n  splitBySpaces,\n  unique,\n  removeUndefinedProps,\n} from './utils';\nimport {createMemoryLeakWarning, errorWhen, warnWhen} from './validation';\n\nlet idCounter = 1;\nlet mouseMoveListeners: ((event: MouseEvent) => void)[] = [];\n\n// Used by `hideAll()`\nexport let mountedInstances: Instance[] = [];\n\nexport default function createTippy(\n  reference: ReferenceElement,\n  passedProps: Partial<Props>\n): Instance {\n  const props = evaluateProps(reference, {\n    ...defaultProps,\n    ...getExtendedPassedProps(removeUndefinedProps(passedProps)),\n  });\n\n  // ===========================================================================\n  // 🔒 Private members\n  // ===========================================================================\n  let showTimeout: any;\n  let hideTimeout: any;\n  let scheduleHideAnimationFrame: number;\n  let isVisibleFromClick = false;\n  let didHideDueToDocumentMouseDown = false;\n  let didTouchMove = false;\n  let ignoreOnFirstUpdate = false;\n  let lastTriggerEvent: Event | undefined;\n  let currentTransitionEndListener: (event: TransitionEvent) => void;\n  let onFirstUpdate: () => void;\n  let listeners: ListenerObject[] = [];\n  let debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n  let currentTarget: Element;\n\n  // ===========================================================================\n  // 🔑 Public members\n  // ===========================================================================\n  const id = idCounter++;\n  const popperInstance = null;\n  const plugins = unique(props.plugins);\n\n  const state = {\n    // Is the instance currently enabled?\n    isEnabled: true,\n    // Is the tippy currently showing and not transitioning out?\n    isVisible: false,\n    // Has the instance been destroyed?\n    isDestroyed: false,\n    // Is the tippy currently mounted to the DOM?\n    isMounted: false,\n    // Has the tippy finished transitioning in?\n    isShown: false,\n  };\n\n  const instance: Instance = {\n    // properties\n    id,\n    reference,\n    popper: div(),\n    popperInstance,\n    props,\n    state,\n    plugins,\n    // methods\n    clearDelayTimeouts,\n    setProps,\n    setContent,\n    show,\n    hide,\n    hideWithInteractivity,\n    enable,\n    disable,\n    unmount,\n    destroy,\n  };\n\n  // TODO: Investigate why this early return causes a TDZ error in the tests —\n  // it doesn't seem to happen in the browser\n  /* istanbul ignore if */\n  if (!props.render) {\n    if (__DEV__) {\n      errorWhen(true, 'render() function has not been supplied.');\n    }\n\n    return instance;\n  }\n\n  // ===========================================================================\n  // Initial mutations\n  // ===========================================================================\n  const {popper, onUpdate} = props.render(instance);\n\n  popper.setAttribute('data-__NAMESPACE_PREFIX__-root', '');\n  popper.id = `__NAMESPACE_PREFIX__-${instance.id}`;\n\n  instance.popper = popper;\n  reference._tippy = instance;\n  popper._tippy = instance;\n\n  const pluginsHooks = plugins.map((plugin) => plugin.fn(instance));\n  const hasAriaExpanded = reference.hasAttribute('aria-expanded');\n\n  addListeners();\n  handleAriaExpandedAttribute();\n  handleStyles();\n\n  invokeHook('onCreate', [instance]);\n\n  if (props.showOnCreate) {\n    scheduleShow();\n  }\n\n  // Prevent a tippy with a delay from hiding if the cursor left then returned\n  // before it started hiding\n  popper.addEventListener('mouseenter', () => {\n    if (instance.props.interactive && instance.state.isVisible) {\n      instance.clearDelayTimeouts();\n    }\n  });\n\n  popper.addEventListener('mouseleave', () => {\n    if (\n      instance.props.interactive &&\n      instance.props.trigger.indexOf('mouseenter') >= 0\n    ) {\n      getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n    }\n  });\n\n  return instance;\n\n  // ===========================================================================\n  // 🔒 Private methods\n  // ===========================================================================\n  function getNormalizedTouchSettings(): [string | boolean, number] {\n    const {touch} = instance.props;\n    return Array.isArray(touch) ? touch : [touch, 0];\n  }\n\n  function getIsCustomTouchBehavior(): boolean {\n    return getNormalizedTouchSettings()[0] === 'hold';\n  }\n\n  function getIsDefaultRenderFn(): boolean {\n    // @ts-ignore\n    return !!instance.props.render?.$$tippy;\n  }\n\n  function getCurrentTarget(): Element {\n    return currentTarget || reference;\n  }\n\n  function getDocument(): Document {\n    const parent = getCurrentTarget().parentNode as Element;\n    return parent ? getOwnerDocument(parent) : document;\n  }\n\n  function getDefaultTemplateChildren(): PopperChildren {\n    return getChildren(popper);\n  }\n\n  function getDelay(isShow: boolean): number {\n    // For touch or keyboard input, force `0` delay for UX reasons\n    // Also if the instance is mounted but not visible (transitioning out),\n    // ignore delay\n    if (\n      (instance.state.isMounted && !instance.state.isVisible) ||\n      currentInput.isTouch ||\n      (lastTriggerEvent && lastTriggerEvent.type === 'focus')\n    ) {\n      return 0;\n    }\n\n    return getValueAtIndexOrReturn(\n      instance.props.delay,\n      isShow ? 0 : 1,\n      defaultProps.delay\n    );\n  }\n\n  function handleStyles(fromHide = false): void {\n    popper.style.pointerEvents =\n      instance.props.interactive && !fromHide ? '' : 'none';\n    popper.style.zIndex = `${instance.props.zIndex}`;\n  }\n\n  function invokeHook(\n    hook: keyof LifecycleHooks,\n    args: [Instance, any?],\n    shouldInvokePropsHook = true\n  ): void {\n    pluginsHooks.forEach((pluginHooks) => {\n      if (pluginHooks[hook]) {\n        pluginHooks[hook]!(...args);\n      }\n    });\n\n    if (shouldInvokePropsHook) {\n      instance.props[hook](...args);\n    }\n  }\n\n  function handleAriaContentAttribute(): void {\n    const {aria} = instance.props;\n\n    if (!aria.content) {\n      return;\n    }\n\n    const attr = `aria-${aria.content}`;\n    const id = popper.id;\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n\n    nodes.forEach((node) => {\n      const currentValue = node.getAttribute(attr);\n\n      if (instance.state.isVisible) {\n        node.setAttribute(attr, currentValue ? `${currentValue} ${id}` : id);\n      } else {\n        const nextValue = currentValue && currentValue.replace(id, '').trim();\n\n        if (nextValue) {\n          node.setAttribute(attr, nextValue);\n        } else {\n          node.removeAttribute(attr);\n        }\n      }\n    });\n  }\n\n  function handleAriaExpandedAttribute(): void {\n    if (hasAriaExpanded || !instance.props.aria.expanded) {\n      return;\n    }\n\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n\n    nodes.forEach((node) => {\n      if (instance.props.interactive) {\n        node.setAttribute(\n          'aria-expanded',\n          instance.state.isVisible && node === getCurrentTarget()\n            ? 'true'\n            : 'false'\n        );\n      } else {\n        node.removeAttribute('aria-expanded');\n      }\n    });\n  }\n\n  function cleanupInteractiveMouseListeners(): void {\n    getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n    mouseMoveListeners = mouseMoveListeners.filter(\n      (listener) => listener !== debouncedOnMouseMove\n    );\n  }\n\n  function onDocumentPress(event: MouseEvent | TouchEvent): void {\n    // Moved finger to scroll instead of an intentional tap outside\n    if (currentInput.isTouch) {\n      if (didTouchMove || event.type === 'mousedown') {\n        return;\n      }\n    }\n\n    const actualTarget =\n      (event.composedPath && event.composedPath()[0]) || event.target;\n\n    // Clicked on interactive popper\n    if (\n      instance.props.interactive &&\n      actualContains(popper, actualTarget as Element)\n    ) {\n      return;\n    }\n\n    // Clicked on the event listeners target\n    if (\n      normalizeToArray(instance.props.triggerTarget || reference).some((el) =>\n        actualContains(el, actualTarget as Element)\n      )\n    ) {\n      if (currentInput.isTouch) {\n        return;\n      }\n\n      if (\n        instance.state.isVisible &&\n        instance.props.trigger.indexOf('click') >= 0\n      ) {\n        return;\n      }\n    } else {\n      invokeHook('onClickOutside', [instance, event]);\n    }\n\n    if (instance.props.hideOnClick === true) {\n      instance.clearDelayTimeouts();\n      instance.hide();\n\n      // `mousedown` event is fired right before `focus` if pressing the\n      // currentTarget. This lets a tippy with `focus` trigger know that it\n      // should not show\n      didHideDueToDocumentMouseDown = true;\n      setTimeout(() => {\n        didHideDueToDocumentMouseDown = false;\n      });\n\n      // The listener gets added in `scheduleShow()`, but this may be hiding it\n      // before it shows, and hide()'s early bail-out behavior can prevent it\n      // from being cleaned up\n      if (!instance.state.isMounted) {\n        removeDocumentPress();\n      }\n    }\n  }\n\n  function onTouchMove(): void {\n    didTouchMove = true;\n  }\n\n  function onTouchStart(): void {\n    didTouchMove = false;\n  }\n\n  function addDocumentPress(): void {\n    const doc = getDocument();\n    doc.addEventListener('mousedown', onDocumentPress, true);\n    doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n    doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n    doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n  }\n\n  function removeDocumentPress(): void {\n    const doc = getDocument();\n    doc.removeEventListener('mousedown', onDocumentPress, true);\n    doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n    doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n    doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n  }\n\n  function onTransitionedOut(duration: number, callback: () => void): void {\n    onTransitionEnd(duration, () => {\n      if (\n        !instance.state.isVisible &&\n        popper.parentNode &&\n        popper.parentNode.contains(popper)\n      ) {\n        callback();\n      }\n    });\n  }\n\n  function onTransitionedIn(duration: number, callback: () => void): void {\n    onTransitionEnd(duration, callback);\n  }\n\n  function onTransitionEnd(duration: number, callback: () => void): void {\n    const box = getDefaultTemplateChildren().box;\n\n    function listener(event: TransitionEvent): void {\n      if (event.target === box) {\n        updateTransitionEndListener(box, 'remove', listener);\n        callback();\n      }\n    }\n\n    // Make callback synchronous if duration is 0\n    // `transitionend` won't fire otherwise\n    if (duration === 0) {\n      return callback();\n    }\n\n    updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n    updateTransitionEndListener(box, 'add', listener);\n\n    currentTransitionEndListener = listener;\n  }\n\n  function on(\n    eventType: string,\n    handler: EventListener,\n    options: boolean | Record<string, unknown> = false\n  ): void {\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n    nodes.forEach((node) => {\n      node.addEventListener(eventType, handler, options);\n      listeners.push({node, eventType, handler, options});\n    });\n  }\n\n  function addListeners(): void {\n    if (getIsCustomTouchBehavior()) {\n      on('touchstart', onTrigger, {passive: true});\n      on('touchend', onMouseLeave as EventListener, {passive: true});\n    }\n\n    splitBySpaces(instance.props.trigger).forEach((eventType) => {\n      if (eventType === 'manual') {\n        return;\n      }\n\n      on(eventType, onTrigger);\n\n      switch (eventType) {\n        case 'mouseenter':\n          on('mouseleave', onMouseLeave as EventListener);\n          break;\n        case 'focus':\n          on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut as EventListener);\n          break;\n        case 'focusin':\n          on('focusout', onBlurOrFocusOut as EventListener);\n          break;\n      }\n    });\n  }\n\n  function removeListeners(): void {\n    listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n      node.removeEventListener(eventType, handler, options);\n    });\n    listeners = [];\n  }\n\n  function onTrigger(event: Event): void {\n    let shouldScheduleClickHide = false;\n\n    if (\n      !instance.state.isEnabled ||\n      isEventListenerStopped(event) ||\n      didHideDueToDocumentMouseDown\n    ) {\n      return;\n    }\n\n    const wasFocused = lastTriggerEvent?.type === 'focus';\n\n    lastTriggerEvent = event;\n    currentTarget = event.currentTarget as Element;\n\n    handleAriaExpandedAttribute();\n\n    if (!instance.state.isVisible && isMouseEvent(event)) {\n      // If scrolling, `mouseenter` events can be fired if the cursor lands\n      // over a new target, but `mousemove` events don't get fired. This\n      // causes interactive tooltips to get stuck open until the cursor is\n      // moved\n      mouseMoveListeners.forEach((listener) => listener(event));\n    }\n\n    // Toggle show/hide when clicking click-triggered tooltips\n    if (\n      event.type === 'click' &&\n      (instance.props.trigger.indexOf('mouseenter') < 0 ||\n        isVisibleFromClick) &&\n      instance.props.hideOnClick !== false &&\n      instance.state.isVisible\n    ) {\n      shouldScheduleClickHide = true;\n    } else {\n      scheduleShow(event);\n    }\n\n    if (event.type === 'click') {\n      isVisibleFromClick = !shouldScheduleClickHide;\n    }\n\n    if (shouldScheduleClickHide && !wasFocused) {\n      scheduleHide(event);\n    }\n  }\n\n  function onMouseMove(event: MouseEvent): void {\n    const target = event.target as Node;\n    const isCursorOverReferenceOrPopper =\n      getCurrentTarget().contains(target) || popper.contains(target);\n\n    if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n      return;\n    }\n\n    const popperTreeData = getNestedPopperTree()\n      .concat(popper)\n      .map((popper) => {\n        const instance = popper._tippy!;\n        const state = instance.popperInstance?.state;\n\n        if (state) {\n          return {\n            popperRect: popper.getBoundingClientRect(),\n            popperState: state,\n            props,\n          };\n        }\n\n        return null;\n      })\n      .filter(Boolean) as PopperTreeData[];\n\n    if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n      cleanupInteractiveMouseListeners();\n      scheduleHide(event);\n    }\n  }\n\n  function onMouseLeave(event: MouseEvent): void {\n    const shouldBail =\n      isEventListenerStopped(event) ||\n      (instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick);\n\n    if (shouldBail) {\n      return;\n    }\n\n    if (instance.props.interactive) {\n      instance.hideWithInteractivity(event);\n      return;\n    }\n\n    scheduleHide(event);\n  }\n\n  function onBlurOrFocusOut(event: FocusEvent): void {\n    if (\n      instance.props.trigger.indexOf('focusin') < 0 &&\n      event.target !== getCurrentTarget()\n    ) {\n      return;\n    }\n\n    // If focus was moved to within the popper\n    if (\n      instance.props.interactive &&\n      event.relatedTarget &&\n      popper.contains(event.relatedTarget as Element)\n    ) {\n      return;\n    }\n\n    scheduleHide(event);\n  }\n\n  function isEventListenerStopped(event: Event): boolean {\n    return currentInput.isTouch\n      ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0\n      : false;\n  }\n\n  function createPopperInstance(): void {\n    destroyPopperInstance();\n\n    const {\n      popperOptions,\n      placement,\n      offset,\n      getReferenceClientRect,\n      moveTransition,\n    } = instance.props;\n\n    const arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n\n    const computedReference = getReferenceClientRect\n      ? {\n          getBoundingClientRect: getReferenceClientRect,\n          contextElement:\n            getReferenceClientRect.contextElement || getCurrentTarget(),\n        }\n      : reference;\n\n    const tippyModifier: Modifier<'$$tippy', Record<string, unknown>> = {\n      name: '$$tippy',\n      enabled: true,\n      phase: 'beforeWrite',\n      requires: ['computeStyles'],\n      fn({state}) {\n        if (getIsDefaultRenderFn()) {\n          const {box} = getDefaultTemplateChildren();\n\n          ['placement', 'reference-hidden', 'escaped'].forEach((attr) => {\n            if (attr === 'placement') {\n              box.setAttribute('data-placement', state.placement);\n            } else {\n              if (state.attributes.popper[`data-popper-${attr}`]) {\n                box.setAttribute(`data-${attr}`, '');\n              } else {\n                box.removeAttribute(`data-${attr}`);\n              }\n            }\n          });\n\n          state.attributes.popper = {};\n        }\n      },\n    };\n\n    type TippyModifier = Modifier<'$$tippy', Record<string, unknown>>;\n    type ExtendedModifiers = StrictModifiers | Partial<TippyModifier>;\n\n    const modifiers: Array<ExtendedModifiers> = [\n      {\n        name: 'offset',\n        options: {\n          offset,\n        },\n      },\n      {\n        name: 'preventOverflow',\n        options: {\n          padding: {\n            top: 2,\n            bottom: 2,\n            left: 5,\n            right: 5,\n          },\n        },\n      },\n      {\n        name: 'flip',\n        options: {\n          padding: 5,\n        },\n      },\n      {\n        name: 'computeStyles',\n        options: {\n          adaptive: !moveTransition,\n        },\n      },\n      tippyModifier,\n    ];\n\n    if (getIsDefaultRenderFn() && arrow) {\n      modifiers.push({\n        name: 'arrow',\n        options: {\n          element: arrow,\n          padding: 3,\n        },\n      });\n    }\n\n    modifiers.push(...(popperOptions?.modifiers || []));\n\n    instance.popperInstance = createPopper<ExtendedModifiers>(\n      computedReference,\n      popper,\n      {\n        ...popperOptions,\n        placement,\n        onFirstUpdate,\n        modifiers,\n      }\n    );\n  }\n\n  function destroyPopperInstance(): void {\n    if (instance.popperInstance) {\n      instance.popperInstance.destroy();\n      instance.popperInstance = null;\n    }\n  }\n\n  function mount(): void {\n    const {appendTo} = instance.props;\n\n    let parentNode: any;\n\n    // By default, we'll append the popper to the triggerTargets's parentNode so\n    // it's directly after the reference element so the elements inside the\n    // tippy can be tabbed to\n    // If there are clipping issues, the user can specify a different appendTo\n    // and ensure focus management is handled correctly manually\n    const node = getCurrentTarget();\n\n    if (\n      (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO) ||\n      appendTo === 'parent'\n    ) {\n      parentNode = node.parentNode;\n    } else {\n      parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n    }\n\n    // The popper element needs to exist on the DOM before its position can be\n    // updated as Popper needs to read its dimensions\n    if (!parentNode.contains(popper)) {\n      parentNode.appendChild(popper);\n    }\n\n    instance.state.isMounted = true;\n\n    createPopperInstance();\n\n    /* istanbul ignore else */\n    if (__DEV__) {\n      // Accessibility check\n      warnWhen(\n        instance.props.interactive &&\n          appendTo === defaultProps.appendTo &&\n          node.nextElementSibling !== popper,\n        [\n          'Interactive tippy element may not be accessible via keyboard',\n          'navigation because it is not directly after the reference element',\n          'in the DOM source order.',\n          '\\n\\n',\n          'Using a wrapper <div> or <span> tag around the reference element',\n          'solves this by creating a new parentNode context.',\n          '\\n\\n',\n          'Specifying `appendTo: document.body` silences this warning, but it',\n          'assumes you are using a focus management solution to handle',\n          'keyboard navigation.',\n          '\\n\\n',\n          'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity',\n        ].join(' ')\n      );\n    }\n  }\n\n  function getNestedPopperTree(): PopperElement[] {\n    return arrayFrom(\n      popper.querySelectorAll('[data-__NAMESPACE_PREFIX__-root]')\n    );\n  }\n\n  function scheduleShow(event?: Event): void {\n    instance.clearDelayTimeouts();\n\n    if (event) {\n      invokeHook('onTrigger', [instance, event]);\n    }\n\n    addDocumentPress();\n\n    let delay = getDelay(true);\n    const [touchValue, touchDelay] = getNormalizedTouchSettings();\n\n    if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n      delay = touchDelay;\n    }\n\n    if (delay) {\n      showTimeout = setTimeout(() => {\n        instance.show();\n      }, delay);\n    } else {\n      instance.show();\n    }\n  }\n\n  function scheduleHide(event: Event): void {\n    instance.clearDelayTimeouts();\n\n    invokeHook('onUntrigger', [instance, event]);\n\n    if (!instance.state.isVisible) {\n      removeDocumentPress();\n\n      return;\n    }\n\n    // For interactive tippies, scheduleHide is added to a document.body handler\n    // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n    // events when trigger contains mouseenter and click, and the tip is\n    // currently shown as a result of a click.\n    if (\n      instance.props.trigger.indexOf('mouseenter') >= 0 &&\n      instance.props.trigger.indexOf('click') >= 0 &&\n      ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 &&\n      isVisibleFromClick\n    ) {\n      return;\n    }\n\n    const delay = getDelay(false);\n\n    if (delay) {\n      hideTimeout = setTimeout(() => {\n        if (instance.state.isVisible) {\n          instance.hide();\n        }\n      }, delay);\n    } else {\n      // Fixes a `transitionend` problem when it fires 1 frame too\n      // late sometimes, we don't want hide() to be called.\n      scheduleHideAnimationFrame = requestAnimationFrame(() => {\n        instance.hide();\n      });\n    }\n  }\n\n  // ===========================================================================\n  // 🔑 Public methods\n  // ===========================================================================\n  function enable(): void {\n    instance.state.isEnabled = true;\n  }\n\n  function disable(): void {\n    // Disabling the instance should also hide it\n    // https://github.com/atomiks/tippy.js-react/issues/106\n    instance.hide();\n    instance.state.isEnabled = false;\n  }\n\n  function clearDelayTimeouts(): void {\n    clearTimeout(showTimeout);\n    clearTimeout(hideTimeout);\n    cancelAnimationFrame(scheduleHideAnimationFrame);\n  }\n\n  function setProps(partialProps: Partial<Props>): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n    }\n\n    if (instance.state.isDestroyed) {\n      return;\n    }\n\n    invokeHook('onBeforeUpdate', [instance, partialProps]);\n\n    removeListeners();\n\n    const prevProps = instance.props;\n    const nextProps = evaluateProps(reference, {\n      ...prevProps,\n      ...removeUndefinedProps(partialProps),\n      ignoreAttributes: true,\n    });\n\n    instance.props = nextProps;\n\n    addListeners();\n\n    if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n      cleanupInteractiveMouseListeners();\n      debouncedOnMouseMove = debounce(\n        onMouseMove,\n        nextProps.interactiveDebounce\n      );\n    }\n\n    // Ensure stale aria-expanded attributes are removed\n    if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n      normalizeToArray(prevProps.triggerTarget).forEach((node) => {\n        node.removeAttribute('aria-expanded');\n      });\n    } else if (nextProps.triggerTarget) {\n      reference.removeAttribute('aria-expanded');\n    }\n\n    handleAriaExpandedAttribute();\n    handleStyles();\n\n    if (onUpdate) {\n      onUpdate(prevProps, nextProps);\n    }\n\n    if (instance.popperInstance) {\n      createPopperInstance();\n\n      // Fixes an issue with nested tippies if they are all getting re-rendered,\n      // and the nested ones get re-rendered first.\n      // https://github.com/atomiks/tippyjs-react/issues/177\n      // TODO: find a cleaner / more efficient solution(!)\n      getNestedPopperTree().forEach((nestedPopper) => {\n        // React (and other UI libs likely) requires a rAF wrapper as it flushes\n        // its work in one\n        requestAnimationFrame(nestedPopper._tippy!.popperInstance!.forceUpdate);\n      });\n    }\n\n    invokeHook('onAfterUpdate', [instance, partialProps]);\n  }\n\n  function setContent(content: Content): void {\n    instance.setProps({content});\n  }\n\n  function show(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n    }\n\n    // Early bail-out\n    const isAlreadyVisible = instance.state.isVisible;\n    const isDestroyed = instance.state.isDestroyed;\n    const isDisabled = !instance.state.isEnabled;\n    const isTouchAndTouchDisabled =\n      currentInput.isTouch && !instance.props.touch;\n    const duration = getValueAtIndexOrReturn(\n      instance.props.duration,\n      0,\n      defaultProps.duration\n    );\n\n    if (\n      isAlreadyVisible ||\n      isDestroyed ||\n      isDisabled ||\n      isTouchAndTouchDisabled\n    ) {\n      return;\n    }\n\n    // Normalize `disabled` behavior across browsers.\n    // Firefox allows events on disabled elements, but Chrome doesn't.\n    // Using a wrapper element (i.e. <span>) is recommended.\n    if (getCurrentTarget().hasAttribute('disabled')) {\n      return;\n    }\n\n    invokeHook('onShow', [instance], false);\n    if (instance.props.onShow(instance) === false) {\n      return;\n    }\n\n    instance.state.isVisible = true;\n\n    if (getIsDefaultRenderFn()) {\n      popper.style.visibility = 'visible';\n    }\n\n    handleStyles();\n    addDocumentPress();\n\n    if (!instance.state.isMounted) {\n      popper.style.transition = 'none';\n    }\n\n    // If flipping to the opposite side after hiding at least once, the\n    // animation will use the wrong placement without resetting the duration\n    if (getIsDefaultRenderFn()) {\n      const {box, content} = getDefaultTemplateChildren();\n      setTransitionDuration([box, content], 0);\n    }\n\n    onFirstUpdate = (): void => {\n      if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n        return;\n      }\n\n      ignoreOnFirstUpdate = true;\n\n      // reflow\n      void popper.offsetHeight;\n\n      popper.style.transition = instance.props.moveTransition;\n\n      if (getIsDefaultRenderFn() && instance.props.animation) {\n        const {box, content} = getDefaultTemplateChildren();\n        setTransitionDuration([box, content], duration);\n        setVisibilityState([box, content], 'visible');\n      }\n\n      handleAriaContentAttribute();\n      handleAriaExpandedAttribute();\n\n      pushIfUnique(mountedInstances, instance);\n\n      // certain modifiers (e.g. `maxSize`) require a second update after the\n      // popper has been positioned for the first time\n      instance.popperInstance?.forceUpdate();\n\n      invokeHook('onMount', [instance]);\n\n      if (instance.props.animation && getIsDefaultRenderFn()) {\n        onTransitionedIn(duration, () => {\n          instance.state.isShown = true;\n          invokeHook('onShown', [instance]);\n        });\n      }\n    };\n\n    mount();\n  }\n\n  function hide(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n    }\n\n    // Early bail-out\n    const isAlreadyHidden = !instance.state.isVisible;\n    const isDestroyed = instance.state.isDestroyed;\n    const isDisabled = !instance.state.isEnabled;\n    const duration = getValueAtIndexOrReturn(\n      instance.props.duration,\n      1,\n      defaultProps.duration\n    );\n\n    if (isAlreadyHidden || isDestroyed || isDisabled) {\n      return;\n    }\n\n    invokeHook('onHide', [instance], false);\n    if (instance.props.onHide(instance) === false) {\n      return;\n    }\n\n    instance.state.isVisible = false;\n    instance.state.isShown = false;\n    ignoreOnFirstUpdate = false;\n    isVisibleFromClick = false;\n\n    if (getIsDefaultRenderFn()) {\n      popper.style.visibility = 'hidden';\n    }\n\n    cleanupInteractiveMouseListeners();\n    removeDocumentPress();\n    handleStyles(true);\n\n    if (getIsDefaultRenderFn()) {\n      const {box, content} = getDefaultTemplateChildren();\n\n      if (instance.props.animation) {\n        setTransitionDuration([box, content], duration);\n        setVisibilityState([box, content], 'hidden');\n      }\n    }\n\n    handleAriaContentAttribute();\n    handleAriaExpandedAttribute();\n\n    if (instance.props.animation) {\n      if (getIsDefaultRenderFn()) {\n        onTransitionedOut(duration, instance.unmount);\n      }\n    } else {\n      instance.unmount();\n    }\n  }\n\n  function hideWithInteractivity(event: MouseEvent): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(\n        instance.state.isDestroyed,\n        createMemoryLeakWarning('hideWithInteractivity')\n      );\n    }\n\n    getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n    pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n    debouncedOnMouseMove(event);\n  }\n\n  function unmount(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n    }\n\n    if (instance.state.isVisible) {\n      instance.hide();\n    }\n\n    if (!instance.state.isMounted) {\n      return;\n    }\n\n    destroyPopperInstance();\n\n    // If a popper is not interactive, it will be appended outside the popper\n    // tree by default. This seems mainly for interactive tippies, but we should\n    // find a workaround if possible\n    getNestedPopperTree().forEach((nestedPopper) => {\n      nestedPopper._tippy!.unmount();\n    });\n\n    if (popper.parentNode) {\n      popper.parentNode.removeChild(popper);\n    }\n\n    mountedInstances = mountedInstances.filter((i) => i !== instance);\n\n    instance.state.isMounted = false;\n    invokeHook('onHidden', [instance]);\n  }\n\n  function destroy(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n    }\n\n    if (instance.state.isDestroyed) {\n      return;\n    }\n\n    instance.clearDelayTimeouts();\n    instance.unmount();\n\n    removeListeners();\n\n    delete reference._tippy;\n\n    instance.state.isDestroyed = true;\n\n    invokeHook('onDestroy', [instance]);\n  }\n}\n", "import bindGlobalEventListeners, {\n  currentInput,\n} from './bindGlobalEventListeners';\nimport createTippy, {mountedInstances} from './createTippy';\nimport {getArrayOfElements, isElement, isReferenceElement} from './dom-utils';\nimport {defaultProps, setDefaultProps, validateProps} from './props';\nimport {HideAll, HideAllOptions, Instance, Props, Targets} from './types';\nimport {validateTargets, warnWhen} from './validation';\n\nfunction tippy(\n  targets: Targets,\n  optionalProps: Partial<Props> = {}\n): Instance | Instance[] {\n  const plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n\n  /* istanbul ignore else */\n  if (__DEV__) {\n    validateTargets(targets);\n    validateProps(optionalProps, plugins);\n  }\n\n  bindGlobalEventListeners();\n\n  const passedProps: Partial<Props> = {...optionalProps, plugins};\n\n  const elements = getArrayOfElements(targets);\n\n  /* istanbul ignore else */\n  if (__DEV__) {\n    const isSingleContentElement = isElement(passedProps.content);\n    const isMoreThanOneReferenceElement = elements.length > 1;\n    warnWhen(\n      isSingleContentElement && isMoreThanOneReferenceElement,\n      [\n        'tippy() was passed an Element as the `content` prop, but more than',\n        'one tippy instance was created by this invocation. This means the',\n        'content element will only be appended to the last tippy instance.',\n        '\\n\\n',\n        'Instead, pass the .innerHTML of the element, or use a function that',\n        'returns a cloned version of the element instead.',\n        '\\n\\n',\n        '1) content: element.innerHTML\\n',\n        '2) content: () => element.cloneNode(true)',\n      ].join(' ')\n    );\n  }\n\n  const instances = elements.reduce<Instance[]>(\n    (acc, reference): Instance[] => {\n      const instance = reference && createTippy(reference, passedProps);\n\n      if (instance) {\n        acc.push(instance);\n      }\n\n      return acc;\n    },\n    []\n  );\n\n  return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\n\nexport default tippy;\n\nexport const hideAll: HideAll = ({\n  exclude: excludedReferenceOrInstance,\n  duration,\n}: HideAllOptions = {}) => {\n  mountedInstances.forEach((instance) => {\n    let isExcluded = false;\n\n    if (excludedReferenceOrInstance) {\n      isExcluded = isReferenceElement(excludedReferenceOrInstance)\n        ? instance.reference === excludedReferenceOrInstance\n        : instance.popper === (excludedReferenceOrInstance as Instance).popper;\n    }\n\n    if (!isExcluded) {\n      const originalDuration = instance.props.duration;\n\n      instance.setProps({duration});\n      instance.hide();\n\n      if (!instance.state.isDestroyed) {\n        instance.setProps({duration: originalDuration});\n      }\n    }\n  });\n};\n", "import tippy from '..';\nimport {div} from '../dom-utils';\nimport {\n  CreateSingleton,\n  Plugin,\n  CreateSingletonProps,\n  ReferenceElement,\n  CreateSingletonInstance,\n  Instance,\n  Props,\n} from '../types';\nimport {normalizeToArray, removeProperties} from '../utils';\nimport {errorWhen} from '../validation';\nimport {applyStyles, Modifier} from '@popperjs/core';\n\n// The default `applyStyles` modifier has a cleanup function that gets called\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\nconst applyStylesModifier: Modifier<'applyStyles', Record<string, unknown>> = {\n  ...applyStyles,\n  effect({state}) {\n    const initialStyles = {\n      popper: {\n        position: state.options.strategy,\n        left: '0',\n        top: '0',\n        margin: '0',\n      },\n      arrow: {\n        position: 'absolute',\n      },\n      reference: {},\n    };\n\n    Object.assign(state.elements.popper.style, initialStyles.popper);\n    state.styles = initialStyles;\n\n    if (state.elements.arrow) {\n      Object.assign(state.elements.arrow.style, initialStyles.arrow);\n    }\n\n    // intentionally return no cleanup function\n    // return () => { ... }\n  },\n};\n\nconst createSingleton: CreateSingleton = (\n  tippyInstances,\n  optionalProps = {}\n) => {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    errorWhen(\n      !Array.isArray(tippyInstances),\n      [\n        'The first argument passed to createSingleton() must be an array of',\n        'tippy instances. The passed value was',\n        String(tippyInstances),\n      ].join(' ')\n    );\n  }\n\n  let individualInstances = tippyInstances;\n  let references: Array<ReferenceElement> = [];\n  let triggerTargets: Array<Element> = [];\n  let currentTarget: Element | null;\n  let overrides = optionalProps.overrides;\n  let interceptSetPropsCleanups: Array<() => void> = [];\n  let shownOnCreate = false;\n\n  function setTriggerTargets(): void {\n    triggerTargets = individualInstances\n      .map((instance) =>\n        normalizeToArray(instance.props.triggerTarget || instance.reference)\n      )\n      .reduce((acc, item) => acc.concat(item), []);\n  }\n\n  function setReferences(): void {\n    references = individualInstances.map((instance) => instance.reference);\n  }\n\n  function enableInstances(isEnabled: boolean): void {\n    individualInstances.forEach((instance) => {\n      if (isEnabled) {\n        instance.enable();\n      } else {\n        instance.disable();\n      }\n    });\n  }\n\n  function interceptSetProps(singleton: Instance): Array<() => void> {\n    return individualInstances.map((instance) => {\n      const originalSetProps = instance.setProps;\n\n      instance.setProps = (props): void => {\n        originalSetProps(props);\n\n        if (instance.reference === currentTarget) {\n          singleton.setProps(props);\n        }\n      };\n\n      return (): void => {\n        instance.setProps = originalSetProps;\n      };\n    });\n  }\n\n  // have to pass singleton, as it maybe undefined on first call\n  function prepareInstance(\n    singleton: Instance,\n    target: ReferenceElement\n  ): void {\n    const index = triggerTargets.indexOf(target);\n\n    // bail-out\n    if (target === currentTarget) {\n      return;\n    }\n\n    currentTarget = target;\n\n    const overrideProps: Partial<Props> = (overrides || [])\n      .concat('content')\n      .reduce((acc, prop) => {\n        (acc as any)[prop] = individualInstances[index].props[prop];\n        return acc;\n      }, {});\n\n    singleton.setProps({\n      ...overrideProps,\n      getReferenceClientRect:\n        typeof overrideProps.getReferenceClientRect === 'function'\n          ? overrideProps.getReferenceClientRect\n          : (): ClientRect => references[index]?.getBoundingClientRect(),\n    });\n  }\n\n  enableInstances(false);\n  setReferences();\n  setTriggerTargets();\n\n  const plugin: Plugin = {\n    fn() {\n      return {\n        onDestroy(): void {\n          enableInstances(true);\n        },\n        onHidden(): void {\n          currentTarget = null;\n        },\n        onClickOutside(instance): void {\n          if (instance.props.showOnCreate && !shownOnCreate) {\n            shownOnCreate = true;\n            currentTarget = null;\n          }\n        },\n        onShow(instance): void {\n          if (instance.props.showOnCreate && !shownOnCreate) {\n            shownOnCreate = true;\n            prepareInstance(instance, references[0]);\n          }\n        },\n        onTrigger(instance, event): void {\n          prepareInstance(instance, event.currentTarget as Element);\n        },\n      };\n    },\n  };\n\n  const singleton = tippy(div(), {\n    ...removeProperties(optionalProps, ['overrides']),\n    plugins: [plugin, ...(optionalProps.plugins || [])],\n    triggerTarget: triggerTargets,\n    popperOptions: {\n      ...optionalProps.popperOptions,\n      modifiers: [\n        ...(optionalProps.popperOptions?.modifiers || []),\n        applyStylesModifier,\n      ],\n    },\n  }) as CreateSingletonInstance<CreateSingletonProps>;\n\n  const originalShow = singleton.show;\n\n  singleton.show = (target?: ReferenceElement | Instance | number): void => {\n    originalShow();\n\n    // first time, showOnCreate or programmatic call with no params\n    // default to showing first instance\n    if (!currentTarget && target == null) {\n      return prepareInstance(singleton, references[0]);\n    }\n\n    // triggered from event (do nothing as prepareInstance already called by onTrigger)\n    // programmatic call with no params when already visible (do nothing again)\n    if (currentTarget && target == null) {\n      return;\n    }\n\n    // target is index of instance\n    if (typeof target === 'number') {\n      return (\n        references[target] && prepareInstance(singleton, references[target])\n      );\n    }\n\n    // target is a child tippy instance\n    if (individualInstances.indexOf(target as Instance) >= 0) {\n      const ref = (target as Instance).reference;\n      return prepareInstance(singleton, ref);\n    }\n\n    // target is a ReferenceElement\n    if (references.indexOf(target as ReferenceElement) >= 0) {\n      return prepareInstance(singleton, target as ReferenceElement);\n    }\n  };\n\n  singleton.showNext = (): void => {\n    const first = references[0];\n    if (!currentTarget) {\n      return singleton.show(0);\n    }\n    const index = references.indexOf(currentTarget);\n    singleton.show(references[index + 1] || first);\n  };\n\n  singleton.showPrevious = (): void => {\n    const last = references[references.length - 1];\n    if (!currentTarget) {\n      return singleton.show(last);\n    }\n    const index = references.indexOf(currentTarget);\n    const target = references[index - 1] || last;\n    singleton.show(target);\n  };\n\n  const originalSetProps = singleton.setProps;\n\n  singleton.setProps = (props): void => {\n    overrides = props.overrides || overrides;\n    originalSetProps(props);\n  };\n\n  singleton.setInstances = (nextInstances): void => {\n    enableInstances(true);\n    interceptSetPropsCleanups.forEach((fn) => fn());\n\n    individualInstances = nextInstances;\n\n    enableInstances(false);\n    setReferences();\n    setTriggerTargets();\n    interceptSetPropsCleanups = interceptSetProps(singleton);\n\n    singleton.setProps({triggerTarget: triggerTargets});\n  };\n\n  interceptSetPropsCleanups = interceptSetProps(singleton);\n\n  return singleton;\n};\n\nexport default createSingleton;\n", "import tippy from '..';\nimport {TOUCH_OPTIONS} from '../constants';\nimport {defaultProps} from '../props';\nimport {Instance, Props, Targets} from '../types';\nimport {ListenerObject} from '../types-internal';\nimport {normalizeToArray, removeProperties} from '../utils';\nimport {errorWhen} from '../validation';\n\nconst BUBBLING_EVENTS_MAP = {\n  mouseover: 'mouseenter',\n  focusin: 'focus',\n  click: 'click',\n};\n\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\nfunction delegate(\n  targets: Targets,\n  props: Partial<Props> & {target: string}\n): Instance | Instance[] {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    errorWhen(\n      !(props && props.target),\n      [\n        'You must specity a `target` prop indicating a CSS selector string matching',\n        'the target elements that should receive a tippy.',\n      ].join(' ')\n    );\n  }\n\n  let listeners: ListenerObject[] = [];\n  let childTippyInstances: Instance[] = [];\n  let disabled = false;\n\n  const {target} = props;\n\n  const nativeProps = removeProperties(props, ['target']);\n  const parentProps = {...nativeProps, trigger: 'manual', touch: false};\n  const childProps = {\n    touch: defaultProps.touch,\n    ...nativeProps,\n    showOnCreate: true,\n  };\n\n  const returnValue = tippy(targets, parentProps);\n  const normalizedReturnValue = normalizeToArray(returnValue);\n\n  function onTrigger(event: Event): void {\n    if (!event.target || disabled) {\n      return;\n    }\n\n    const targetNode = (event.target as Element).closest(target);\n\n    if (!targetNode) {\n      return;\n    }\n\n    // Get relevant trigger with fallbacks:\n    // 1. Check `data-tippy-trigger` attribute on target node\n    // 2. Fallback to `trigger` passed to `delegate()`\n    // 3. Fallback to `defaultProps.trigger`\n    const trigger =\n      targetNode.getAttribute('data-tippy-trigger') ||\n      props.trigger ||\n      defaultProps.trigger;\n\n    // @ts-ignore\n    if (targetNode._tippy) {\n      return;\n    }\n\n    if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n      return;\n    }\n\n    if (\n      event.type !== 'touchstart' &&\n      trigger.indexOf((BUBBLING_EVENTS_MAP as any)[event.type]) < 0\n    ) {\n      return;\n    }\n\n    const instance = tippy(targetNode, childProps);\n\n    if (instance) {\n      childTippyInstances = childTippyInstances.concat(instance);\n    }\n  }\n\n  function on(\n    node: Element,\n    eventType: string,\n    handler: EventListener,\n    options: boolean | Record<string, unknown> = false\n  ): void {\n    node.addEventListener(eventType, handler, options);\n    listeners.push({node, eventType, handler, options});\n  }\n\n  function addEventListeners(instance: Instance): void {\n    const {reference} = instance;\n\n    on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n    on(reference, 'mouseover', onTrigger);\n    on(reference, 'focusin', onTrigger);\n    on(reference, 'click', onTrigger);\n  }\n\n  function removeEventListeners(): void {\n    listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n      node.removeEventListener(eventType, handler, options);\n    });\n    listeners = [];\n  }\n\n  function applyMutations(instance: Instance): void {\n    const originalDestroy = instance.destroy;\n    const originalEnable = instance.enable;\n    const originalDisable = instance.disable;\n\n    instance.destroy = (shouldDestroyChildInstances = true): void => {\n      if (shouldDestroyChildInstances) {\n        childTippyInstances.forEach((instance) => {\n          instance.destroy();\n        });\n      }\n\n      childTippyInstances = [];\n\n      removeEventListeners();\n      originalDestroy();\n    };\n\n    instance.enable = (): void => {\n      originalEnable();\n      childTippyInstances.forEach((instance) => instance.enable());\n      disabled = false;\n    };\n\n    instance.disable = (): void => {\n      originalDisable();\n      childTippyInstances.forEach((instance) => instance.disable());\n      disabled = true;\n    };\n\n    addEventListeners(instance);\n  }\n\n  normalizedReturnValue.forEach(applyMutations);\n\n  return returnValue;\n}\n\nexport default delegate;\n", "import {BACKDROP_CLASS} from '../constants';\nimport {div, setVisibilityState} from '../dom-utils';\nimport {getChildren} from '../template';\nimport {AnimateFill} from '../types';\nimport {errorWhen} from '../validation';\n\nconst animateFill: AnimateFill = {\n  name: 'animateFill',\n  defaultValue: false,\n  fn(instance) {\n    // @ts-ignore\n    if (!instance.props.render?.$$tippy) {\n      if (__DEV__) {\n        errorWhen(\n          instance.props.animateFill,\n          'The `animateFill` plugin requires the default render function.'\n        );\n      }\n\n      return {};\n    }\n\n    const {box, content} = getChildren(instance.popper);\n\n    const backdrop = instance.props.animateFill\n      ? createBackdropElement()\n      : null;\n\n    return {\n      onCreate(): void {\n        if (backdrop) {\n          box.insertBefore(backdrop, box.firstElementChild!);\n          box.setAttribute('data-animatefill', '');\n          box.style.overflow = 'hidden';\n\n          instance.setProps({arrow: false, animation: 'shift-away'});\n        }\n      },\n      onMount(): void {\n        if (backdrop) {\n          const {transitionDuration} = box.style;\n          const duration = Number(transitionDuration.replace('ms', ''));\n\n          // The content should fade in after the backdrop has mostly filled the\n          // tooltip element. `clip-path` is the other alternative but is not\n          // well-supported and is buggy on some devices.\n          content.style.transitionDelay = `${Math.round(duration / 10)}ms`;\n\n          backdrop.style.transitionDuration = transitionDuration;\n          setVisibilityState([backdrop], 'visible');\n        }\n      },\n      onShow(): void {\n        if (backdrop) {\n          backdrop.style.transitionDuration = '0ms';\n        }\n      },\n      onHide(): void {\n        if (backdrop) {\n          setVisibilityState([backdrop], 'hidden');\n        }\n      },\n    };\n  },\n};\n\nexport default animateFill;\n\nfunction createBackdropElement(): HTMLDivElement {\n  const backdrop = div();\n  backdrop.className = BACKDROP_CLASS;\n  setVisibilityState([backdrop], 'hidden');\n  return backdrop;\n}\n", "import {getOwnerDocument, isMouseEvent} from '../dom-utils';\nimport {FollowCursor, Instance} from '../types';\n\nlet mouseCoords = {clientX: 0, clientY: 0};\nlet activeInstances: Array<{instance: Instance; doc: Document}> = [];\n\nfunction storeMouseCoords({clientX, clientY}: MouseEvent): void {\n  mouseCoords = {clientX, clientY};\n}\n\nfunction addMouseCoordsListener(doc: Document): void {\n  doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc: Document): void {\n  doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nconst followCursor: FollowCursor = {\n  name: 'followCursor',\n  defaultValue: false,\n  fn(instance) {\n    const reference = instance.reference;\n    const doc = getOwnerDocument(instance.props.triggerTarget || reference);\n\n    let isInternalUpdate = false;\n    let wasFocusEvent = false;\n    let isUnmounted = true;\n    let prevProps = instance.props;\n\n    function getIsInitialBehavior(): boolean {\n      return (\n        instance.props.followCursor === 'initial' && instance.state.isVisible\n      );\n    }\n\n    function addListener(): void {\n      doc.addEventListener('mousemove', onMouseMove);\n    }\n\n    function removeListener(): void {\n      doc.removeEventListener('mousemove', onMouseMove);\n    }\n\n    function unsetGetReferenceClientRect(): void {\n      isInternalUpdate = true;\n      instance.setProps({getReferenceClientRect: null});\n      isInternalUpdate = false;\n    }\n\n    function onMouseMove(event: MouseEvent): void {\n      // If the instance is interactive, avoid updating the position unless it's\n      // over the reference element\n      const isCursorOverReference = event.target\n        ? reference.contains(event.target as Node)\n        : true;\n      const {followCursor} = instance.props;\n      const {clientX, clientY} = event;\n\n      const rect = reference.getBoundingClientRect();\n      const relativeX = clientX - rect.left;\n      const relativeY = clientY - rect.top;\n\n      if (isCursorOverReference || !instance.props.interactive) {\n        instance.setProps({\n          // @ts-ignore - unneeded DOMRect properties\n          getReferenceClientRect() {\n            const rect = reference.getBoundingClientRect();\n\n            let x = clientX;\n            let y = clientY;\n\n            if (followCursor === 'initial') {\n              x = rect.left + relativeX;\n              y = rect.top + relativeY;\n            }\n\n            const top = followCursor === 'horizontal' ? rect.top : y;\n            const right = followCursor === 'vertical' ? rect.right : x;\n            const bottom = followCursor === 'horizontal' ? rect.bottom : y;\n            const left = followCursor === 'vertical' ? rect.left : x;\n\n            return {\n              width: right - left,\n              height: bottom - top,\n              top,\n              right,\n              bottom,\n              left,\n            };\n          },\n        });\n      }\n    }\n\n    function create(): void {\n      if (instance.props.followCursor) {\n        activeInstances.push({instance, doc});\n        addMouseCoordsListener(doc);\n      }\n    }\n\n    function destroy(): void {\n      activeInstances = activeInstances.filter(\n        (data) => data.instance !== instance\n      );\n\n      if (activeInstances.filter((data) => data.doc === doc).length === 0) {\n        removeMouseCoordsListener(doc);\n      }\n    }\n\n    return {\n      onCreate: create,\n      onDestroy: destroy,\n      onBeforeUpdate(): void {\n        prevProps = instance.props;\n      },\n      onAfterUpdate(_, {followCursor}): void {\n        if (isInternalUpdate) {\n          return;\n        }\n\n        if (\n          followCursor !== undefined &&\n          prevProps.followCursor !== followCursor\n        ) {\n          destroy();\n\n          if (followCursor) {\n            create();\n\n            if (\n              instance.state.isMounted &&\n              !wasFocusEvent &&\n              !getIsInitialBehavior()\n            ) {\n              addListener();\n            }\n          } else {\n            removeListener();\n            unsetGetReferenceClientRect();\n          }\n        }\n      },\n      onMount(): void {\n        if (instance.props.followCursor && !wasFocusEvent) {\n          if (isUnmounted) {\n            onMouseMove(mouseCoords as MouseEvent);\n            isUnmounted = false;\n          }\n\n          if (!getIsInitialBehavior()) {\n            addListener();\n          }\n        }\n      },\n      onTrigger(_, event): void {\n        if (isMouseEvent(event)) {\n          mouseCoords = {clientX: event.clientX, clientY: event.clientY};\n        }\n        wasFocusEvent = event.type === 'focus';\n      },\n      onHidden(): void {\n        if (instance.props.followCursor) {\n          unsetGetReferenceClientRect();\n          removeListener();\n          isUnmounted = true;\n        }\n      },\n    };\n  },\n};\n\nexport default followCursor;\n", "import {Modifier, Placement} from '@popperjs/core';\nimport {isMouseEvent} from '../dom-utils';\nimport {BasePlacement, InlinePositioning, Props} from '../types';\nimport {arrayFrom, getBasePlacement} from '../utils';\n\nfunction getProps(props: Props, modifier: Modifier<any, any>): Partial<Props> {\n  return {\n    popperOptions: {\n      ...props.popperOptions,\n      modifiers: [\n        ...(props.popperOptions?.modifiers || []).filter(\n          ({name}) => name !== modifier.name\n        ),\n        modifier,\n      ],\n    },\n  };\n}\n\nconst inlinePositioning: InlinePositioning = {\n  name: 'inlinePositioning',\n  defaultValue: false,\n  fn(instance) {\n    const {reference} = instance;\n\n    function isEnabled(): boolean {\n      return !!instance.props.inlinePositioning;\n    }\n\n    let placement: Placement;\n    let cursorRectIndex = -1;\n    let isInternalUpdate = false;\n    let triedPlacements: Array<string> = [];\n\n    const modifier: Modifier<\n      'tippyInlinePositioning',\n      Record<string, unknown>\n    > = {\n      name: 'tippyInlinePositioning',\n      enabled: true,\n      phase: 'afterWrite',\n      fn({state}) {\n        if (isEnabled()) {\n          if (triedPlacements.indexOf(state.placement) !== -1) {\n            triedPlacements = [];\n          }\n\n          if (\n            placement !== state.placement &&\n            triedPlacements.indexOf(state.placement) === -1\n          ) {\n            triedPlacements.push(state.placement);\n            instance.setProps({\n              // @ts-ignore - unneeded DOMRect properties\n              getReferenceClientRect: () =>\n                getReferenceClientRect(state.placement),\n            });\n          }\n\n          placement = state.placement;\n        }\n      },\n    };\n\n    function getReferenceClientRect(placement: Placement): Partial<DOMRect> {\n      return getInlineBoundingClientRect(\n        getBasePlacement(placement),\n        reference.getBoundingClientRect(),\n        arrayFrom(reference.getClientRects()),\n        cursorRectIndex\n      );\n    }\n\n    function setInternalProps(partialProps: Partial<Props>): void {\n      isInternalUpdate = true;\n      instance.setProps(partialProps);\n      isInternalUpdate = false;\n    }\n\n    function addModifier(): void {\n      if (!isInternalUpdate) {\n        setInternalProps(getProps(instance.props, modifier));\n      }\n    }\n\n    return {\n      onCreate: addModifier,\n      onAfterUpdate: addModifier,\n      onTrigger(_, event): void {\n        if (isMouseEvent(event)) {\n          const rects = arrayFrom(instance.reference.getClientRects());\n          const cursorRect = rects.find(\n            (rect) =>\n              rect.left - 2 <= event.clientX &&\n              rect.right + 2 >= event.clientX &&\n              rect.top - 2 <= event.clientY &&\n              rect.bottom + 2 >= event.clientY\n          );\n          const index = rects.indexOf(cursorRect);\n          cursorRectIndex = index > -1 ? index : cursorRectIndex;\n        }\n      },\n      onHidden(): void {\n        cursorRectIndex = -1;\n      },\n    };\n  },\n};\n\nexport default inlinePositioning;\n\nexport function getInlineBoundingClientRect(\n  currentBasePlacement: BasePlacement | null,\n  boundingRect: DOMRect,\n  clientRects: DOMRect[],\n  cursorRectIndex: number\n): {\n  top: number;\n  bottom: number;\n  left: number;\n  right: number;\n  width: number;\n  height: number;\n} {\n  // Not an inline element, or placement is not yet known\n  if (clientRects.length < 2 || currentBasePlacement === null) {\n    return boundingRect;\n  }\n\n  // There are two rects and they are disjoined\n  if (\n    clientRects.length === 2 &&\n    cursorRectIndex >= 0 &&\n    clientRects[0].left > clientRects[1].right\n  ) {\n    return clientRects[cursorRectIndex] || boundingRect;\n  }\n\n  switch (currentBasePlacement) {\n    case 'top':\n    case 'bottom': {\n      const firstRect = clientRects[0];\n      const lastRect = clientRects[clientRects.length - 1];\n      const isTop = currentBasePlacement === 'top';\n\n      const top = firstRect.top;\n      const bottom = lastRect.bottom;\n      const left = isTop ? firstRect.left : lastRect.left;\n      const right = isTop ? firstRect.right : lastRect.right;\n      const width = right - left;\n      const height = bottom - top;\n\n      return {top, bottom, left, right, width, height};\n    }\n    case 'left':\n    case 'right': {\n      const minLeft = Math.min(...clientRects.map((rects) => rects.left));\n      const maxRight = Math.max(...clientRects.map((rects) => rects.right));\n      const measureRects = clientRects.filter((rect) =>\n        currentBasePlacement === 'left'\n          ? rect.left === minLeft\n          : rect.right === maxRight\n      );\n\n      const top = measureRects[0].top;\n      const bottom = measureRects[measureRects.length - 1].bottom;\n      const left = minLeft;\n      const right = maxRight;\n      const width = right - left;\n      const height = bottom - top;\n\n      return {top, bottom, left, right, width, height};\n    }\n    default: {\n      return boundingRect;\n    }\n  }\n}\n", "import {VirtualElement} from '@popperjs/core';\nimport {ReferenceElement, Sticky} from '../types';\n\nconst sticky: Sticky = {\n  name: 'sticky',\n  defaultValue: false,\n  fn(instance) {\n    const {reference, popper} = instance;\n\n    function getReference(): ReferenceElement | VirtualElement {\n      return instance.popperInstance\n        ? instance.popperInstance.state.elements.reference\n        : reference;\n    }\n\n    function shouldCheck(value: 'reference' | 'popper'): boolean {\n      return instance.props.sticky === true || instance.props.sticky === value;\n    }\n\n    let prevRefRect: ClientRect | null = null;\n    let prevPopRect: ClientRect | null = null;\n\n    function updatePosition(): void {\n      const currentRefRect = shouldCheck('reference')\n        ? getReference().getBoundingClientRect()\n        : null;\n      const currentPopRect = shouldCheck('popper')\n        ? popper.getBoundingClientRect()\n        : null;\n\n      if (\n        (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect)) ||\n        (currentPopRect && areRectsDifferent(prevPopRect, currentPopRect))\n      ) {\n        if (instance.popperInstance) {\n          instance.popperInstance.update();\n        }\n      }\n\n      prevRefRect = currentRefRect;\n      prevPopRect = currentPopRect;\n\n      if (instance.state.isMounted) {\n        requestAnimationFrame(updatePosition);\n      }\n    }\n\n    return {\n      onMount(): void {\n        if (instance.props.sticky) {\n          updatePosition();\n        }\n      },\n    };\n  },\n};\n\nexport default sticky;\n\nfunction areRectsDifferent(\n  rectA: ClientRect | null,\n  rectB: ClientRect | null\n): boolean {\n  if (rectA && rectB) {\n    return (\n      rectA.top !== rectB.top ||\n      rectA.right !== rectB.right ||\n      rectA.bottom !== rectB.bottom ||\n      rectA.left !== rectB.left\n    );\n  }\n\n  return true;\n}\n", "import tippy from '../src';\nimport {render} from '../src/template';\n\ntippy.setDefaultProps({render});\n\nexport {default, hideAll} from '../src';\nexport {default as createSingleton} from '../src/addons/createSingleton';\nexport {default as delegate} from '../src/addons/delegate';\nexport {default as animateFill} from '../src/plugins/animateFill';\nexport {default as followCursor} from '../src/plugins/followCursor';\nexport {default as inlinePositioning} from '../src/plugins/inlinePositioning';\nexport {default as sticky} from '../src/plugins/sticky';\nexport {ROUND_ARROW as roundArrow} from '../src/constants';\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"content\", \"label\", \"icon\"]\n\n  toggle(event) {\n    event.preventDefault()\n    this.contentTarget.classList.toggle(\"hidden\")\n    \n    // Update icon rotation if icon target exists\n    if (this.hasIconTarget) {\n      this.iconTarget.classList.toggle(\"rotate-180\")\n    }\n    \n    // Update button text if label target exists\n    if (this.hasLabelTarget) {\n      this.labelTarget.textContent = this.contentTarget.classList.contains(\"hidden\") ? \"Show\" : \"Hide\"\n    } else {\n      // For backwards compatibility with elements that don't use the label target\n      const button = event.currentTarget\n      if (button.tagName === \"BUTTON\" && !this.hasIconTarget) {\n        button.textContent = this.contentTarget.classList.contains(\"hidden\") ? \"Show\" : \"Hide\"\n      }\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"swatch\", \"sizeGroup\"]\n  static values = { activeColor: String }\n\n  selectColor(event) {\n    const colorId = event.params.colorId.toString()\n\n    if (this.activeColorValue === colorId) {\n      // Toggle off if clicking the same swatch\n      this.activeColorValue = \"\"\n    } else {\n      this.activeColorValue = colorId\n    }\n\n    this.#updateDisplay()\n  }\n\n  #updateDisplay() {\n    // Update swatch ring indicators\n    this.swatchTargets.forEach((swatch) => {\n      if (swatch.dataset.colorSwatchColorIdParam === this.activeColorValue) {\n        swatch.classList.add(\"ring-2\", \"ring-indigo-500\", \"ring-offset-1\")\n      } else {\n        swatch.classList.remove(\"ring-2\", \"ring-indigo-500\", \"ring-offset-1\")\n      }\n    })\n\n    // Show/hide size groups\n    this.sizeGroupTargets.forEach((group) => {\n      if (group.dataset.colorId === this.activeColorValue) {\n        group.classList.remove(\"hidden\")\n      } else {\n        group.classList.add(\"hidden\")\n      }\n    })\n  }\n}\n", "// Customizable command palette for advanced users\n// Opens with cmd+k or ctrl+k by default\n// https://github.com/excid3/ninja-keys\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport \"@gorails/ninja-keys\"\n\nexport default class extends Controller {\n  connect() {\n    this.element.data = [\n      {\n        id: \"Home\",\n        title: \"Home\",\n        hotkey: \"ctrl+H\",\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ninja-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\" /></svg>',\n        handler: () => {\n          Turbo.visit(\"/\")\n        }\n      },\n      {\n        id: \"Accounts\",\n        title: \"Accounts\",\n        hotkey: \"ctrl+A\",\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ninja-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z\" /></svg>',\n        handler: () => {\n          Turbo.visit(\"/accounts\")\n        }\n      },\n      {\n        id: \"Profile\",\n        title: \"Profile\",\n        hotkey: \"ctrl+P\",\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ninja-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z\" /></svg>',\n        handler: () => {\n          Turbo.visit(\"/users/edit\")\n        }\n      },\n      {\n        id: \"Notifications\",\n        title: \"Notifications\",\n        hotkey: \"ctrl+N\",\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ninja-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\" /></svg>',\n        handler: () => {\n          Turbo.visit(\"/notifications\")\n        }\n      },\n    ];\n  }\n}\n", "/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nconst NODE_MODE = false;\nconst global = NODE_MODE ? globalThis : window;\n\n/**\n * Whether the current browser supports `adoptedStyleSheets`.\n */\nexport const supportsAdoptingStyleSheets: boolean =\n  global.ShadowRoot &&\n  (global.ShadyCSS === undefined || global.ShadyCSS.nativeShadow) &&\n  'adoptedStyleSheets' in Document.prototype &&\n  'replace' in CSSStyleSheet.prototype;\n\n/**\n * A CSSResult or native CSSStyleSheet.\n *\n * In browsers that support constructible CSS style sheets, CSSStyleSheet\n * object can be used for styling along side CSSResult from the `css`\n * template tag.\n */\nexport type CSSResultOrNative = CSSResult | CSSStyleSheet;\n\nexport type CSSResultArray = Array<CSSResultOrNative | CSSResultArray>;\n\n/**\n * A single CSSResult, CSSStyleSheet, or an array or nested arrays of those.\n */\nexport type CSSResultGroup = CSSResultOrNative | CSSResultArray;\n\nconst constructionToken = Symbol();\n\nconst cssTagCache = new WeakMap<TemplateStringsArray, CSSStyleSheet>();\n\n/**\n * A container for a string of CSS text, that may be used to create a CSSStyleSheet.\n *\n * CSSResult is the return value of `css`-tagged template literals and\n * `unsafeCSS()`. In order to ensure that CSSResults are only created via the\n * `css` tag and `unsafeCSS()`, CSSResult cannot be constructed directly.\n */\nexport class CSSResult {\n  // This property needs to remain unminified.\n  ['_$cssResult$'] = true;\n  readonly cssText: string;\n  private _styleSheet?: CSSStyleSheet;\n  private _strings: TemplateStringsArray | undefined;\n\n  private constructor(\n    cssText: string,\n    strings: TemplateStringsArray | undefined,\n    safeToken: symbol\n  ) {\n    if (safeToken !== constructionToken) {\n      throw new Error(\n        'CSSResult is not constructable. Use `unsafeCSS` or `css` instead.'\n      );\n    }\n    this.cssText = cssText;\n    this._strings = strings;\n  }\n\n  // This is a getter so that it's lazy. In practice, this means stylesheets\n  // are not created until the first element instance is made.\n  get styleSheet(): CSSStyleSheet | undefined {\n    // If `supportsAdoptingStyleSheets` is true then we assume CSSStyleSheet is\n    // constructable.\n    let styleSheet = this._styleSheet;\n    const strings = this._strings;\n    if (supportsAdoptingStyleSheets && styleSheet === undefined) {\n      const cacheable = strings !== undefined && strings.length === 1;\n      if (cacheable) {\n        styleSheet = cssTagCache.get(strings);\n      }\n      if (styleSheet === undefined) {\n        (this._styleSheet = styleSheet = new CSSStyleSheet()).replaceSync(\n          this.cssText\n        );\n        if (cacheable) {\n          cssTagCache.set(strings, styleSheet);\n        }\n      }\n    }\n    return styleSheet;\n  }\n\n  toString(): string {\n    return this.cssText;\n  }\n}\n\ntype ConstructableCSSResult = CSSResult & {\n  new (\n    cssText: string,\n    strings: TemplateStringsArray | undefined,\n    safeToken: symbol\n  ): CSSResult;\n};\n\nconst textFromCSSResult = (value: CSSResultGroup | number) => {\n  // This property needs to remain unminified.\n  if ((value as CSSResult)['_$cssResult$'] === true) {\n    return (value as CSSResult).cssText;\n  } else if (typeof value === 'number') {\n    return value;\n  } else {\n    throw new Error(\n      `Value passed to 'css' function must be a 'css' function result: ` +\n        `${value}. Use 'unsafeCSS' to pass non-literal values, but take care ` +\n        `to ensure page security.`\n    );\n  }\n};\n\n/**\n * Wrap a value for interpolation in a {@linkcode css} tagged template literal.\n *\n * This is unsafe because untrusted CSS text can be used to phone home\n * or exfiltrate data to an attacker controlled site. Take care to only use\n * this with trusted input.\n */\nexport const unsafeCSS = (value: unknown) =>\n  new (CSSResult as ConstructableCSSResult)(\n    typeof value === 'string' ? value : String(value),\n    undefined,\n    constructionToken\n  );\n\n/**\n * A template literal tag which can be used with LitElement's\n * {@linkcode LitElement.styles} property to set element styles.\n *\n * For security reasons, only literal string values and number may be used in\n * embedded expressions. To incorporate non-literal values {@linkcode unsafeCSS}\n * may be used inside an expression.\n */\nexport const css = (\n  strings: TemplateStringsArray,\n  ...values: (CSSResultGroup | number)[]\n): CSSResult => {\n  const cssText =\n    strings.length === 1\n      ? strings[0]\n      : values.reduce(\n          (acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1],\n          strings[0]\n        );\n  return new (CSSResult as ConstructableCSSResult)(\n    cssText,\n    strings,\n    constructionToken\n  );\n};\n\n/**\n * Applies the given styles to a `shadowRoot`. When Shadow DOM is\n * available but `adoptedStyleSheets` is not, styles are appended to the\n * `shadowRoot` to [mimic spec behavior](https://wicg.github.io/construct-stylesheets/#using-constructed-stylesheets).\n * Note, when shimming is used, any styles that are subsequently placed into\n * the shadowRoot should be placed *before* any shimmed adopted styles. This\n * will match spec behavior that gives adopted sheets precedence over styles in\n * shadowRoot.\n */\nexport const adoptStyles = (\n  renderRoot: ShadowRoot,\n  styles: Array<CSSResultOrNative>\n) => {\n  if (supportsAdoptingStyleSheets) {\n    (renderRoot as ShadowRoot).adoptedStyleSheets = styles.map((s) =>\n      s instanceof CSSStyleSheet ? s : s.styleSheet!\n    );\n  } else {\n    styles.forEach((s) => {\n      const style = document.createElement('style');\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const nonce = (global as any)['litNonce'];\n      if (nonce !== undefined) {\n        style.setAttribute('nonce', nonce);\n      }\n      style.textContent = (s as CSSResult).cssText;\n      renderRoot.appendChild(style);\n    });\n  }\n};\n\nconst cssResultFromStyleSheet = (sheet: CSSStyleSheet) => {\n  let cssText = '';\n  for (const rule of sheet.cssRules) {\n    cssText += rule.cssText;\n  }\n  return unsafeCSS(cssText);\n};\n\nexport const getCompatibleStyle =\n  supportsAdoptingStyleSheets ||\n  (NODE_MODE && global.CSSStyleSheet === undefined)\n    ? (s: CSSResultOrNative) => s\n    : (s: CSSResultOrNative) =>\n        s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Use this module if you want to create your own base class extending\n * {@link ReactiveElement}.\n * @packageDocumentation\n */\n\nimport {\n  getCompatibleStyle,\n  adoptStyles,\n  CSSResultGroup,\n  CSSResultOrNative,\n} from './css-tag.js';\nimport type {\n  ReactiveController,\n  ReactiveControllerHost,\n} from './reactive-controller.js';\n\n// In the Node build, this import will be injected by Rollup:\n// import {HTMLElement, customElements} from '@lit-labs/ssr-dom-shim';\n\nexport * from './css-tag.js';\nexport type {\n  ReactiveController,\n  ReactiveControllerHost,\n} from './reactive-controller.js';\n\nconst NODE_MODE = false;\nconst global = NODE_MODE ? globalThis : window;\n\nif (NODE_MODE) {\n  global.customElements ??= customElements;\n}\n\nconst DEV_MODE = true;\n\nlet requestUpdateThenable: (name: string) => {\n  then: (\n    onfulfilled?: (value: boolean) => void,\n    _onrejected?: () => void\n  ) => void;\n};\n\nlet issueWarning: (code: string, warning: string) => void;\n\nconst trustedTypes = (global as unknown as {trustedTypes?: {emptyScript: ''}})\n  .trustedTypes;\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n  ? (trustedTypes.emptyScript as unknown as '')\n  : '';\n\nconst polyfillSupport = DEV_MODE\n  ? global.reactiveElementPolyfillSupportDevMode\n  : global.reactiveElementPolyfillSupport;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  const issuedWarnings: Set<string | undefined> = (global.litIssuedWarnings ??=\n    new Set());\n\n  // Issue a warning, if we haven't already.\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (!issuedWarnings.has(warning)) {\n      console.warn(warning);\n      issuedWarnings.add(warning);\n    }\n  };\n\n  issueWarning(\n    'dev-mode',\n    `Lit is in dev mode. Not recommended for production!`\n  );\n\n  // Issue polyfill support warning.\n  if (global.ShadyDOM?.inUse && polyfillSupport === undefined) {\n    issueWarning(\n      'polyfill-support-missing',\n      `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but ` +\n        `the \\`polyfill-support\\` module has not been loaded.`\n    );\n  }\n\n  requestUpdateThenable = (name) => ({\n    then: (\n      onfulfilled?: (value: boolean) => void,\n      _onrejected?: () => void\n    ) => {\n      issueWarning(\n        'request-update-promise',\n        `The \\`requestUpdate\\` method should no longer return a Promise but ` +\n          `does so on \\`${name}\\`. Use \\`updateComplete\\` instead.`\n      );\n      if (onfulfilled !== undefined) {\n        onfulfilled(false);\n      }\n    },\n  });\n}\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ReactiveUnstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry = Update;\n    export interface Update {\n      kind: 'update';\n    }\n  }\n}\n\ninterface DebugLoggingWindow {\n  // Even in dev mode, we generally don't want to emit these events, as that's\n  // another level of cost, so only emit them when DEV_MODE is true _and_ when\n  // window.emitLitDebugEvents is true.\n  emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n  ? (event: ReactiveUnstable.DebugLog.Entry) => {\n      const shouldEmit = (global as unknown as DebugLoggingWindow)\n        .emitLitDebugLogEvents;\n      if (!shouldEmit) {\n        return;\n      }\n      global.dispatchEvent(\n        new CustomEvent<ReactiveUnstable.DebugLog.Entry>('lit-debug', {\n          detail: event,\n        })\n      );\n    }\n  : undefined;\n\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n  prop: P,\n  _obj: unknown\n): P => prop;\n\n/**\n * Converts property values to and from attribute values.\n */\nexport interface ComplexAttributeConverter<Type = unknown, TypeHint = unknown> {\n  /**\n   * Called to convert an attribute value to a property\n   * value.\n   */\n  fromAttribute?(value: string | null, type?: TypeHint): Type;\n\n  /**\n   * Called to convert a property value to an attribute\n   * value.\n   *\n   * It returns unknown instead of string, to be compatible with\n   * https://github.com/WICG/trusted-types (and similar efforts).\n   */\n  toAttribute?(value: Type, type?: TypeHint): unknown;\n}\n\ntype AttributeConverter<Type = unknown, TypeHint = unknown> =\n  | ComplexAttributeConverter<Type>\n  | ((value: string | null, type?: TypeHint) => Type);\n\n/**\n * Defines options for a property accessor.\n */\nexport interface PropertyDeclaration<Type = unknown, TypeHint = unknown> {\n  /**\n   * When set to `true`, indicates the property is internal private state. The\n   * property should not be set by users. When using TypeScript, this property\n   * should be marked as `private` or `protected`, and it is also a common\n   * practice to use a leading `_` in the name. The property is not added to\n   * `observedAttributes`.\n   */\n  readonly state?: boolean;\n\n  /**\n   * Indicates how and whether the property becomes an observed attribute.\n   * If the value is `false`, the property is not added to `observedAttributes`.\n   * If true or absent, the lowercased property name is observed (e.g. `fooBar`\n   * becomes `foobar`). If a string, the string value is observed (e.g\n   * `attribute: 'foo-bar'`).\n   */\n  readonly attribute?: boolean | string;\n\n  /**\n   * Indicates the type of the property. This is used only as a hint for the\n   * `converter` to determine how to convert the attribute\n   * to/from a property.\n   */\n  readonly type?: TypeHint;\n\n  /**\n   * Indicates how to convert the attribute to/from a property. If this value\n   * is a function, it is used to convert the attribute value a the property\n   * value. If it's an object, it can have keys for `fromAttribute` and\n   * `toAttribute`. If no `toAttribute` function is provided and\n   * `reflect` is set to `true`, the property value is set directly to the\n   * attribute. A default `converter` is used if none is provided; it supports\n   * `Boolean`, `String`, `Number`, `Object`, and `Array`. Note,\n   * when a property changes and the converter is used to update the attribute,\n   * the property is never updated again as a result of the attribute changing,\n   * and vice versa.\n   */\n  readonly converter?: AttributeConverter<Type, TypeHint>;\n\n  /**\n   * Indicates if the property should reflect to an attribute.\n   * If `true`, when the property is set, the attribute is set using the\n   * attribute name determined according to the rules for the `attribute`\n   * property option and the value of the property converted using the rules\n   * from the `converter` property option.\n   */\n  readonly reflect?: boolean;\n\n  /**\n   * A function that indicates if a property should be considered changed when\n   * it is set. The function should take the `newValue` and `oldValue` and\n   * return `true` if an update should be requested.\n   */\n  hasChanged?(value: Type, oldValue: Type): boolean;\n\n  /**\n   * Indicates whether an accessor will be created for this property. By\n   * default, an accessor will be generated for this property that requests an\n   * update when set. If this flag is `true`, no accessor will be created, and\n   * it will be the user's responsibility to call\n   * `this.requestUpdate(propertyName, oldValue)` to request an update when\n   * the property changes.\n   */\n  readonly noAccessor?: boolean;\n}\n\n/**\n * Map of properties to PropertyDeclaration options. For each property an\n * accessor is made, and the property is processed according to the\n * PropertyDeclaration options.\n */\nexport interface PropertyDeclarations {\n  readonly [key: string]: PropertyDeclaration;\n}\n\ntype PropertyDeclarationMap = Map<PropertyKey, PropertyDeclaration>;\n\ntype AttributeMap = Map<string, PropertyKey>;\n\n/**\n * A Map of property keys to values.\n *\n * Takes an optional type parameter T, which when specified as a non-any,\n * non-unknown type, will make the Map more strongly-typed, associating the map\n * keys with their corresponding value type on T.\n *\n * Use `PropertyValues<this>` when overriding ReactiveElement.update() and\n * other lifecycle methods in order to get stronger type-checking on keys\n * and values.\n */\n// This type is conditional so that if the parameter T is not specified, or\n// is `any`, the type will include `Map<PropertyKey, unknown>`. Since T is not\n// given in the uses of PropertyValues in this file, all uses here fallback to\n// meaning `Map<PropertyKey, unknown>`, but if a developer uses\n// `PropertyValues<this>` (or any other value for T) they will get a\n// strongly-typed Map type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PropertyValues<T = any> = T extends object\n  ? PropertyValueMap<T>\n  : Map<PropertyKey, unknown>;\n\n/**\n * Do not use, instead prefer {@linkcode PropertyValues}.\n */\n// This type must be exported such that JavaScript generated by the Google\n// Closure Compiler can import a type reference.\nexport interface PropertyValueMap<T> extends Map<PropertyKey, unknown> {\n  get<K extends keyof T>(k: K): T[K];\n  set<K extends keyof T>(key: K, value: T[K]): this;\n  has<K extends keyof T>(k: K): boolean;\n  delete<K extends keyof T>(k: K): boolean;\n}\n\nexport const defaultConverter: ComplexAttributeConverter = {\n  toAttribute(value: unknown, type?: unknown): unknown {\n    switch (type) {\n      case Boolean:\n        value = value ? emptyStringForBooleanAttribute : null;\n        break;\n      case Object:\n      case Array:\n        // if the value is `null` or `undefined` pass this through\n        // to allow removing/no change behavior.\n        value = value == null ? value : JSON.stringify(value);\n        break;\n    }\n    return value;\n  },\n\n  fromAttribute(value: string | null, type?: unknown) {\n    let fromValue: unknown = value;\n    switch (type) {\n      case Boolean:\n        fromValue = value !== null;\n        break;\n      case Number:\n        fromValue = value === null ? null : Number(value);\n        break;\n      case Object:\n      case Array:\n        // Do *not* generate exception when invalid JSON is set as elements\n        // don't normally complain on being mis-configured.\n        // TODO(sorvell): Do generate exception in *dev mode*.\n        try {\n          // Assert to adhere to Bazel's \"must type assert JSON parse\" rule.\n          fromValue = JSON.parse(value!) as unknown;\n        } catch (e) {\n          fromValue = null;\n        }\n        break;\n    }\n    return fromValue;\n  },\n};\n\nexport interface HasChanged {\n  (value: unknown, old: unknown): boolean;\n}\n\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nexport const notEqual: HasChanged = (value: unknown, old: unknown): boolean => {\n  // This ensures (old==NaN, value==NaN) always returns false\n  return old !== value && (old === old || value === value);\n};\n\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n  attribute: true,\n  type: String,\n  converter: defaultConverter,\n  reflect: false,\n  hasChanged: notEqual,\n};\n\n/**\n * The Closure JS Compiler doesn't currently have good support for static\n * property semantics where \"this\" is dynamic (e.g.\n * https://github.com/google/closure-compiler/issues/3177 and others) so we use\n * this hack to bypass any rewriting by the compiler.\n */\nconst finalized = 'finalized';\n\n/**\n * A string representing one of the supported dev mode warning categories.\n */\nexport type WarningKind = 'change-in-update' | 'migration';\n\nexport type Initializer = (element: ReactiveElement) => void;\n\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclassers to render updates as desired.\n * @noInheritDoc\n */\nexport abstract class ReactiveElement\n  // In the Node build, this `extends` clause will be substituted with\n  // `(globalThis.HTMLElement ?? HTMLElement)`.\n  //\n  // This way, we will first prefer any global `HTMLElement` polyfill that the\n  // user has assigned, and then fall back to the `HTMLElement` shim which has\n  // been imported (see note at the top of this file about how this import is\n  // generated by Rollup). Note that the `HTMLElement` variable has been\n  // shadowed by this import, so it no longer refers to the global.\n  extends HTMLElement\n  implements ReactiveControllerHost\n{\n  // Note: these are patched in only in DEV_MODE.\n  /**\n   * Read or set all the enabled warning categories for this class.\n   *\n   * This property is only used in development builds.\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static enabledWarnings?: WarningKind[];\n\n  /**\n   * Enable the given warning category for this class.\n   *\n   * This method only exists in development builds, so it should be accessed\n   * with a guard like:\n   *\n   * ```ts\n   * // Enable for all ReactiveElement subclasses\n   * ReactiveElement.enableWarning?.('migration');\n   *\n   * // Enable for only MyElement and subclasses\n   * MyElement.enableWarning?.('migration');\n   * ```\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static enableWarning?: (warningKind: WarningKind) => void;\n\n  /**\n   * Disable the given warning category for this class.\n   *\n   * This method only exists in development builds, so it should be accessed\n   * with a guard like:\n   *\n   * ```ts\n   * // Disable for all ReactiveElement subclasses\n   * ReactiveElement.disableWarning?.('migration');\n   *\n   * // Disable for only MyElement and subclasses\n   * MyElement.disableWarning?.('migration');\n   * ```\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static disableWarning?: (warningKind: WarningKind) => void;\n\n  /**\n   * Adds an initializer function to the class that is called during instance\n   * construction.\n   *\n   * This is useful for code that runs against a `ReactiveElement`\n   * subclass, such as a decorator, that needs to do work for each\n   * instance, such as setting up a `ReactiveController`.\n   *\n   * ```ts\n   * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n   *   target.addInitializer((instance: ReactiveElement) => {\n   *     // This is run during construction of the element\n   *     new MyController(instance);\n   *   });\n   * }\n   * ```\n   *\n   * Decorating a field will then cause each instance to run an initializer\n   * that adds a controller:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   @myDecorator foo;\n   * }\n   * ```\n   *\n   * Initializers are stored per-constructor. Adding an initializer to a\n   * subclass does not add it to a superclass. Since initializers are run in\n   * constructors, initializers will run in order of the class hierarchy,\n   * starting with superclasses and progressing to the instance's class.\n   *\n   * @nocollapse\n   */\n  static addInitializer(initializer: Initializer) {\n    this.finalize();\n    (this._initializers ??= []).push(initializer);\n  }\n\n  static _initializers?: Initializer[];\n\n  /*\n   * Due to closure compiler ES6 compilation bugs, @nocollapse is required on\n   * all static methods and properties with initializers.  Reference:\n   * - https://github.com/google/closure-compiler/issues/1776\n   */\n\n  /**\n   * Maps attribute names to properties; for example `foobar` attribute to\n   * `fooBar` property. Created lazily on user subclasses when finalizing the\n   * class.\n   * @nocollapse\n   */\n  private static __attributeToPropertyMap: AttributeMap;\n\n  /**\n   * Marks class as having finished creating properties.\n   */\n  protected static [finalized] = true;\n\n  /**\n   * Memoized list of all element properties, including any superclass properties.\n   * Created lazily on user subclasses when finalizing the class.\n   * @nocollapse\n   * @category properties\n   */\n  static elementProperties: PropertyDeclarationMap = new Map();\n\n  /**\n   * User-supplied object that maps property names to `PropertyDeclaration`\n   * objects containing options for configuring reactive properties. When\n   * a reactive property is set the element will update and render.\n   *\n   * By default properties are public fields, and as such, they should be\n   * considered as primarily settable by element users, either via attribute or\n   * the property itself.\n   *\n   * Generally, properties that are changed by the element should be private or\n   * protected fields and should use the `state: true` option. Properties\n   * marked as `state` do not reflect from the corresponding attribute\n   *\n   * However, sometimes element code does need to set a public property. This\n   * should typically only be done in response to user interaction, and an event\n   * should be fired informing the user; for example, a checkbox sets its\n   * `checked` property when clicked and fires a `changed` event. Mutating\n   * public properties should typically not be done for non-primitive (object or\n   * array) properties. In other cases when an element needs to manage state, a\n   * private property set with the `state: true` option should be used. When\n   * needed, state properties can be initialized via public properties to\n   * facilitate complex interactions.\n   * @nocollapse\n   * @category properties\n   */\n  static properties: PropertyDeclarations;\n\n  /**\n   * Memoized list of all element styles.\n   * Created lazily on user subclasses when finalizing the class.\n   * @nocollapse\n   * @category styles\n   */\n  static elementStyles: Array<CSSResultOrNative> = [];\n\n  /**\n   * Array of styles to apply to the element. The styles should be defined\n   * using the {@linkcode css} tag function, via constructible stylesheets, or\n   * imported from native CSS module scripts.\n   *\n   * Note on Content Security Policy:\n   *\n   * Element styles are implemented with `<style>` tags when the browser doesn't\n   * support adopted StyleSheets. To use such `<style>` tags with the style-src\n   * CSP directive, the style-src value must either include 'unsafe-inline' or\n   * `nonce-<base64-value>` with `<base64-value>` replaced be a server-generated\n   * nonce.\n   *\n   * To provide a nonce to use on generated `<style>` elements, set\n   * `window.litNonce` to a server-generated nonce in your page's HTML, before\n   * loading application code:\n   *\n   * ```html\n   * <script>\n   *   // Generated and unique per request:\n   *   window.litNonce = 'a1b2c3d4';\n   * </script>\n   * ```\n   * @nocollapse\n   * @category styles\n   */\n  static styles?: CSSResultGroup;\n\n  /**\n   * The set of properties defined by this class that caused an accessor to be\n   * added during `createProperty`.\n   * @nocollapse\n   */\n  private static __reactivePropertyKeys?: Set<PropertyKey>;\n\n  /**\n   * Returns a list of attributes corresponding to the registered properties.\n   * @nocollapse\n   * @category attributes\n   */\n  static get observedAttributes() {\n    // note: piggy backing on this to ensure we're finalized.\n    this.finalize();\n    const attributes: string[] = [];\n    // Use forEach so this works even if for/of loops are compiled to for loops\n    // expecting arrays\n    this.elementProperties.forEach((v, p) => {\n      const attr = this.__attributeNameForProperty(p, v);\n      if (attr !== undefined) {\n        this.__attributeToPropertyMap.set(attr, p);\n        attributes.push(attr);\n      }\n    });\n    return attributes;\n  }\n\n  /**\n   * Creates a property accessor on the element prototype if one does not exist\n   * and stores a {@linkcode PropertyDeclaration} for the property with the\n   * given options. The property setter calls the property's `hasChanged`\n   * property option or uses a strict identity check to determine whether or not\n   * to request an update.\n   *\n   * This method may be overridden to customize properties; however,\n   * when doing so, it's important to call `super.createProperty` to ensure\n   * the property is setup correctly. This method calls\n   * `getPropertyDescriptor` internally to get a descriptor to install.\n   * To customize what properties do when they are get or set, override\n   * `getPropertyDescriptor`. To customize the options for a property,\n   * implement `createProperty` like this:\n   *\n   * ```ts\n   * static createProperty(name, options) {\n   *   options = Object.assign(options, {myOption: true});\n   *   super.createProperty(name, options);\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  static createProperty(\n    name: PropertyKey,\n    options: PropertyDeclaration = defaultPropertyDeclaration\n  ) {\n    // if this is a state property, force the attribute to false.\n    if (options.state) {\n      // Cast as any since this is readonly.\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      (options as any).attribute = false;\n    }\n    // Note, since this can be called by the `@property` decorator which\n    // is called before `finalize`, we ensure finalization has been kicked off.\n    this.finalize();\n    this.elementProperties.set(name, options);\n    // Do not generate an accessor if the prototype already has one, since\n    // it would be lost otherwise and that would never be the user's intention;\n    // Instead, we expect users to call `requestUpdate` themselves from\n    // user-defined accessors. Note that if the super has an accessor we will\n    // still overwrite it\n    if (!options.noAccessor && !this.prototype.hasOwnProperty(name)) {\n      const key = typeof name === 'symbol' ? Symbol() : `__${name}`;\n      const descriptor = this.getPropertyDescriptor(name, key, options);\n      if (descriptor !== undefined) {\n        Object.defineProperty(this.prototype, name, descriptor);\n        if (DEV_MODE) {\n          // If this class doesn't have its own set, create one and initialize\n          // with the values in the set from the nearest ancestor class, if any.\n          if (!this.hasOwnProperty('__reactivePropertyKeys')) {\n            this.__reactivePropertyKeys = new Set(\n              this.__reactivePropertyKeys ?? []\n            );\n          }\n          this.__reactivePropertyKeys!.add(name);\n        }\n      }\n    }\n  }\n\n  /**\n   * Returns a property descriptor to be defined on the given named property.\n   * If no descriptor is returned, the property will not become an accessor.\n   * For example,\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   static getPropertyDescriptor(name, key, options) {\n   *     const defaultDescriptor =\n   *         super.getPropertyDescriptor(name, key, options);\n   *     const setter = defaultDescriptor.set;\n   *     return {\n   *       get: defaultDescriptor.get,\n   *       set(value) {\n   *         setter.call(this, value);\n   *         // custom action.\n   *       },\n   *       configurable: true,\n   *       enumerable: true\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  protected static getPropertyDescriptor(\n    name: PropertyKey,\n    key: string | symbol,\n    options: PropertyDeclaration\n  ): PropertyDescriptor | undefined {\n    return {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      get(): any {\n        return (this as {[key: string]: unknown})[key as string];\n      },\n      set(this: ReactiveElement, value: unknown) {\n        const oldValue = (this as {} as {[key: string]: unknown})[\n          name as string\n        ];\n        (this as {} as {[key: string]: unknown})[key as string] = value;\n        (this as unknown as ReactiveElement).requestUpdate(\n          name,\n          oldValue,\n          options\n        );\n      },\n      configurable: true,\n      enumerable: true,\n    };\n  }\n\n  /**\n   * Returns the property options associated with the given property.\n   * These options are defined with a `PropertyDeclaration` via the `properties`\n   * object or the `@property` decorator and are registered in\n   * `createProperty(...)`.\n   *\n   * Note, this method should be considered \"final\" and not overridden. To\n   * customize the options for a given property, override\n   * {@linkcode createProperty}.\n   *\n   * @nocollapse\n   * @final\n   * @category properties\n   */\n  static getPropertyOptions(name: PropertyKey) {\n    return this.elementProperties.get(name) || defaultPropertyDeclaration;\n  }\n\n  /**\n   * Creates property accessors for registered properties, sets up element\n   * styling, and ensures any superclasses are also finalized. Returns true if\n   * the element was finalized.\n   * @nocollapse\n   */\n  protected static finalize() {\n    if (this.hasOwnProperty(finalized)) {\n      return false;\n    }\n    this[finalized] = true;\n    // finalize any superclasses\n    const superCtor = Object.getPrototypeOf(this) as typeof ReactiveElement;\n    superCtor.finalize();\n    // Create own set of initializers for this class if any exist on the\n    // superclass and copy them down. Note, for a small perf boost, avoid\n    // creating initializers unless needed.\n    if (superCtor._initializers !== undefined) {\n      this._initializers = [...superCtor._initializers];\n    }\n    this.elementProperties = new Map(superCtor.elementProperties);\n    // initialize Map populated in observedAttributes\n    this.__attributeToPropertyMap = new Map();\n    // make any properties\n    // Note, only process \"own\" properties since this element will inherit\n    // any properties defined on the superClass, and finalization ensures\n    // the entire prototype chain is finalized.\n    if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n      const props = this.properties;\n      // support symbols in properties (IE11 does not support this)\n      const propKeys = [\n        ...Object.getOwnPropertyNames(props),\n        ...Object.getOwnPropertySymbols(props),\n      ];\n      // This for/of is ok because propKeys is an array\n      for (const p of propKeys) {\n        // note, use of `any` is due to TypeScript lack of support for symbol in\n        // index types\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this.createProperty(p, (props as any)[p]);\n      }\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n    // DEV mode warnings\n    if (DEV_MODE) {\n      const warnRemovedOrRenamed = (name: string, renamed = false) => {\n        if (this.prototype.hasOwnProperty(name)) {\n          issueWarning(\n            renamed ? 'renamed-api' : 'removed-api',\n            `\\`${name}\\` is implemented on class ${this.name}. It ` +\n              `has been ${renamed ? 'renamed' : 'removed'} ` +\n              `in this version of LitElement.`\n          );\n        }\n      };\n      warnRemovedOrRenamed('initialize');\n      warnRemovedOrRenamed('requestUpdateInternal');\n      warnRemovedOrRenamed('_getUpdateComplete', true);\n    }\n    return true;\n  }\n\n  /**\n   * Options used when calling `attachShadow`. Set this property to customize\n   * the options for the shadowRoot; for example, to create a closed\n   * shadowRoot: `{mode: 'closed'}`.\n   *\n   * Note, these options are used in `createRenderRoot`. If this method\n   * is customized, options should be respected if possible.\n   * @nocollapse\n   * @category rendering\n   */\n  static shadowRootOptions: ShadowRootInit = {mode: 'open'};\n\n  /**\n   * Takes the styles the user supplied via the `static styles` property and\n   * returns the array of styles to apply to the element.\n   * Override this method to integrate into a style management system.\n   *\n   * Styles are deduplicated preserving the _last_ instance in the list. This\n   * is a performance optimization to avoid duplicated styles that can occur\n   * especially when composing via subclassing. The last item is kept to try\n   * to preserve the cascade order with the assumption that it's most important\n   * that last added styles override previous styles.\n   *\n   * @nocollapse\n   * @category styles\n   */\n  protected static finalizeStyles(\n    styles?: CSSResultGroup\n  ): Array<CSSResultOrNative> {\n    const elementStyles = [];\n    if (Array.isArray(styles)) {\n      // Dedupe the flattened array in reverse order to preserve the last items.\n      // Casting to Array<unknown> works around TS error that\n      // appears to come from trying to flatten a type CSSResultArray.\n      const set = new Set((styles as Array<unknown>).flat(Infinity).reverse());\n      // Then preserve original order by adding the set items in reverse order.\n      for (const s of set) {\n        elementStyles.unshift(getCompatibleStyle(s as CSSResultOrNative));\n      }\n    } else if (styles !== undefined) {\n      elementStyles.push(getCompatibleStyle(styles));\n    }\n    return elementStyles;\n  }\n\n  /**\n   * Node or ShadowRoot into which element DOM should be rendered. Defaults\n   * to an open shadowRoot.\n   * @category rendering\n   */\n  readonly renderRoot!: HTMLElement | ShadowRoot;\n\n  /**\n   * Returns the property name for the given attribute `name`.\n   * @nocollapse\n   */\n  private static __attributeNameForProperty(\n    name: PropertyKey,\n    options: PropertyDeclaration\n  ) {\n    const attribute = options.attribute;\n    return attribute === false\n      ? undefined\n      : typeof attribute === 'string'\n      ? attribute\n      : typeof name === 'string'\n      ? name.toLowerCase()\n      : undefined;\n  }\n\n  private __instanceProperties?: PropertyValues = new Map();\n  // Initialize to an unresolved Promise so we can make sure the element has\n  // connected before first update.\n  private __updatePromise!: Promise<boolean>;\n\n  /**\n   * True if there is a pending update as a result of calling `requestUpdate()`.\n   * Should only be read.\n   * @category updates\n   */\n  isUpdatePending = false;\n\n  /**\n   * Is set to `true` after the first update. The element code cannot assume\n   * that `renderRoot` exists before the element `hasUpdated`.\n   * @category updates\n   */\n  hasUpdated = false;\n\n  /**\n   * Map with keys for any properties that have changed since the last\n   * update cycle with previous values.\n   *\n   * @internal\n   */\n  _$changedProperties!: PropertyValues;\n\n  /**\n   * Map with keys of properties that should be reflected when updated.\n   */\n  private __reflectingProperties?: Map<PropertyKey, PropertyDeclaration>;\n\n  /**\n   * Name of currently reflecting property\n   */\n  private __reflectingProperty: PropertyKey | null = null;\n\n  /**\n   * Set of controllers.\n   */\n  private __controllers?: ReactiveController[];\n\n  constructor() {\n    super();\n    this.__initialize();\n  }\n\n  /**\n   * Internal only override point for customizing work done when elements\n   * are constructed.\n   */\n  private __initialize() {\n    this.__updatePromise = new Promise<boolean>(\n      (res) => (this.enableUpdating = res)\n    );\n    this._$changedProperties = new Map();\n    this.__saveInstanceProperties();\n    // ensures first update will be caught by an early access of\n    // `updateComplete`\n    this.requestUpdate();\n    (this.constructor as typeof ReactiveElement)._initializers?.forEach((i) =>\n      i(this)\n    );\n  }\n\n  /**\n   * Registers a `ReactiveController` to participate in the element's reactive\n   * update cycle. The element automatically calls into any registered\n   * controllers during its lifecycle callbacks.\n   *\n   * If the element is connected when `addController()` is called, the\n   * controller's `hostConnected()` callback will be immediately called.\n   * @category controllers\n   */\n  addController(controller: ReactiveController) {\n    (this.__controllers ??= []).push(controller);\n    // If a controller is added after the element has been connected,\n    // call hostConnected. Note, re-using existence of `renderRoot` here\n    // (which is set in connectedCallback) to avoid the need to track a\n    // first connected state.\n    if (this.renderRoot !== undefined && this.isConnected) {\n      controller.hostConnected?.();\n    }\n  }\n\n  /**\n   * Removes a `ReactiveController` from the element.\n   * @category controllers\n   */\n  removeController(controller: ReactiveController) {\n    // Note, if the indexOf is -1, the >>> will flip the sign which makes the\n    // splice do nothing.\n    this.__controllers?.splice(this.__controllers.indexOf(controller) >>> 0, 1);\n  }\n\n  /**\n   * Fixes any properties set on the instance before upgrade time.\n   * Otherwise these would shadow the accessor and break these properties.\n   * The properties are stored in a Map which is played back after the\n   * constructor runs. Note, on very old versions of Safari (<=9) or Chrome\n   * (<=41), properties created for native platform properties like (`id` or\n   * `name`) may not have default values set in the element constructor. On\n   * these browsers native properties appear on instances and therefore their\n   * default value will overwrite any element default (e.g. if the element sets\n   * this.id = 'id' in the constructor, the 'id' will become '' since this is\n   * the native platform default).\n   */\n  private __saveInstanceProperties() {\n    // Use forEach so this works even if for/of loops are compiled to for loops\n    // expecting arrays\n    (this.constructor as typeof ReactiveElement).elementProperties.forEach(\n      (_v, p) => {\n        if (this.hasOwnProperty(p)) {\n          this.__instanceProperties!.set(p, this[p as keyof this]);\n          delete this[p as keyof this];\n        }\n      }\n    );\n  }\n\n  /**\n   * Returns the node into which the element should render and by default\n   * creates and returns an open shadowRoot. Implement to customize where the\n   * element's DOM is rendered. For example, to render into the element's\n   * childNodes, return `this`.\n   *\n   * @return Returns a node into which to render.\n   * @category rendering\n   */\n  protected createRenderRoot(): Element | ShadowRoot {\n    const renderRoot =\n      this.shadowRoot ??\n      this.attachShadow(\n        (this.constructor as typeof ReactiveElement).shadowRootOptions\n      );\n    adoptStyles(\n      renderRoot,\n      (this.constructor as typeof ReactiveElement).elementStyles\n    );\n    return renderRoot;\n  }\n\n  /**\n   * On first connection, creates the element's renderRoot, sets up\n   * element styling, and enables updating.\n   * @category lifecycle\n   */\n  connectedCallback() {\n    // create renderRoot before first update.\n    if (this.renderRoot === undefined) {\n      (\n        this as {\n          renderRoot: Element | DocumentFragment;\n        }\n      ).renderRoot = this.createRenderRoot();\n    }\n    this.enableUpdating(true);\n    this.__controllers?.forEach((c) => c.hostConnected?.());\n  }\n\n  /**\n   * Note, this method should be considered final and not overridden. It is\n   * overridden on the element instance with a function that triggers the first\n   * update.\n   * @category updates\n   */\n  protected enableUpdating(_requestedUpdate: boolean) {}\n\n  /**\n   * Allows for `super.disconnectedCallback()` in extensions while\n   * reserving the possibility of making non-breaking feature additions\n   * when disconnecting at some point in the future.\n   * @category lifecycle\n   */\n  disconnectedCallback() {\n    this.__controllers?.forEach((c) => c.hostDisconnected?.());\n  }\n\n  /**\n   * Synchronizes property values when attributes change.\n   *\n   * Specifically, when an attribute is set, the corresponding property is set.\n   * You should rarely need to implement this callback. If this method is\n   * overridden, `super.attributeChangedCallback(name, _old, value)` must be\n   * called.\n   *\n   * See [using the lifecycle callbacks](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks)\n   * on MDN for more information about the `attributeChangedCallback`.\n   * @category attributes\n   */\n  attributeChangedCallback(\n    name: string,\n    _old: string | null,\n    value: string | null\n  ) {\n    this._$attributeToProperty(name, value);\n  }\n\n  private __propertyToAttribute(\n    name: PropertyKey,\n    value: unknown,\n    options: PropertyDeclaration = defaultPropertyDeclaration\n  ) {\n    const attr = (\n      this.constructor as typeof ReactiveElement\n    ).__attributeNameForProperty(name, options);\n    if (attr !== undefined && options.reflect === true) {\n      const converter =\n        (options.converter as ComplexAttributeConverter)?.toAttribute !==\n        undefined\n          ? (options.converter as ComplexAttributeConverter)\n          : defaultConverter;\n      const attrValue = converter.toAttribute!(value, options.type);\n      if (\n        DEV_MODE &&\n        (this.constructor as typeof ReactiveElement).enabledWarnings!.indexOf(\n          'migration'\n        ) >= 0 &&\n        attrValue === undefined\n      ) {\n        issueWarning(\n          'undefined-attribute-value',\n          `The attribute value for the ${name as string} property is ` +\n            `undefined on element ${this.localName}. The attribute will be ` +\n            `removed, but in the previous version of \\`ReactiveElement\\`, ` +\n            `the attribute would not have changed.`\n        );\n      }\n      // Track if the property is being reflected to avoid\n      // setting the property again via `attributeChangedCallback`. Note:\n      // 1. this takes advantage of the fact that the callback is synchronous.\n      // 2. will behave incorrectly if multiple attributes are in the reaction\n      // stack at time of calling. However, since we process attributes\n      // in `update` this should not be possible (or an extreme corner case\n      // that we'd like to discover).\n      // mark state reflecting\n      this.__reflectingProperty = name;\n      if (attrValue == null) {\n        this.removeAttribute(attr);\n      } else {\n        this.setAttribute(attr, attrValue as string);\n      }\n      // mark state not reflecting\n      this.__reflectingProperty = null;\n    }\n  }\n\n  /** @internal */\n  _$attributeToProperty(name: string, value: string | null) {\n    const ctor = this.constructor as typeof ReactiveElement;\n    // Note, hint this as an `AttributeMap` so closure clearly understands\n    // the type; it has issues with tracking types through statics\n    const propName = (ctor.__attributeToPropertyMap as AttributeMap).get(name);\n    // Use tracking info to avoid reflecting a property value to an attribute\n    // if it was just set because the attribute changed.\n    if (propName !== undefined && this.__reflectingProperty !== propName) {\n      const options = ctor.getPropertyOptions(propName);\n      const converter =\n        typeof options.converter === 'function'\n          ? {fromAttribute: options.converter}\n          : options.converter?.fromAttribute !== undefined\n          ? options.converter\n          : defaultConverter;\n      // mark state reflecting\n      this.__reflectingProperty = propName;\n      this[propName as keyof this] = converter.fromAttribute!(\n        value,\n        options.type\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      ) as any;\n      // mark state not reflecting\n      this.__reflectingProperty = null;\n    }\n  }\n\n  /**\n   * Requests an update which is processed asynchronously. This should be called\n   * when an element should update based on some state not triggered by setting\n   * a reactive property. In this case, pass no arguments. It should also be\n   * called when manually implementing a property setter. In this case, pass the\n   * property `name` and `oldValue` to ensure that any configured property\n   * options are honored.\n   *\n   * @param name name of requesting property\n   * @param oldValue old value of requesting property\n   * @param options property options to use instead of the previously\n   *     configured options\n   * @category updates\n   */\n  requestUpdate(\n    name?: PropertyKey,\n    oldValue?: unknown,\n    options?: PropertyDeclaration\n  ): void {\n    let shouldRequestUpdate = true;\n    // If we have a property key, perform property update steps.\n    if (name !== undefined) {\n      options =\n        options ||\n        (this.constructor as typeof ReactiveElement).getPropertyOptions(name);\n      const hasChanged = options.hasChanged || notEqual;\n      if (hasChanged(this[name as keyof this], oldValue)) {\n        if (!this._$changedProperties.has(name)) {\n          this._$changedProperties.set(name, oldValue);\n        }\n        // Add to reflecting properties set.\n        // Note, it's important that every change has a chance to add the\n        // property to `_reflectingProperties`. This ensures setting\n        // attribute + property reflects correctly.\n        if (options.reflect === true && this.__reflectingProperty !== name) {\n          if (this.__reflectingProperties === undefined) {\n            this.__reflectingProperties = new Map();\n          }\n          this.__reflectingProperties.set(name, options);\n        }\n      } else {\n        // Abort the request if the property should not be considered changed.\n        shouldRequestUpdate = false;\n      }\n    }\n    if (!this.isUpdatePending && shouldRequestUpdate) {\n      this.__updatePromise = this.__enqueueUpdate();\n    }\n    // Note, since this no longer returns a promise, in dev mode we return a\n    // thenable which warns if it's called.\n    return DEV_MODE\n      ? (requestUpdateThenable(this.localName) as unknown as void)\n      : undefined;\n  }\n\n  /**\n   * Sets up the element to asynchronously update.\n   */\n  private async __enqueueUpdate() {\n    this.isUpdatePending = true;\n    try {\n      // Ensure any previous update has resolved before updating.\n      // This `await` also ensures that property changes are batched.\n      await this.__updatePromise;\n    } catch (e) {\n      // Refire any previous errors async so they do not disrupt the update\n      // cycle. Errors are refired so developers have a chance to observe\n      // them, and this can be done by implementing\n      // `window.onunhandledrejection`.\n      Promise.reject(e);\n    }\n    const result = this.scheduleUpdate();\n    // If `scheduleUpdate` returns a Promise, we await it. This is done to\n    // enable coordinating updates with a scheduler. Note, the result is\n    // checked to avoid delaying an additional microtask unless we need to.\n    if (result != null) {\n      await result;\n    }\n    return !this.isUpdatePending;\n  }\n\n  /**\n   * Schedules an element update. You can override this method to change the\n   * timing of updates by returning a Promise. The update will await the\n   * returned Promise, and you should resolve the Promise to allow the update\n   * to proceed. If this method is overridden, `super.scheduleUpdate()`\n   * must be called.\n   *\n   * For instance, to schedule updates to occur just before the next frame:\n   *\n   * ```ts\n   * override protected async scheduleUpdate(): Promise<unknown> {\n   *   await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n   *   super.scheduleUpdate();\n   * }\n   * ```\n   * @category updates\n   */\n  protected scheduleUpdate(): void | Promise<unknown> {\n    return this.performUpdate();\n  }\n\n  /**\n   * Performs an element update. Note, if an exception is thrown during the\n   * update, `firstUpdated` and `updated` will not be called.\n   *\n   * Call `performUpdate()` to immediately process a pending update. This should\n   * generally not be needed, but it can be done in rare cases when you need to\n   * update synchronously.\n   *\n   * Note: To ensure `performUpdate()` synchronously completes a pending update,\n   * it should not be overridden. In LitElement 2.x it was suggested to override\n   * `performUpdate()` to also customizing update scheduling. Instead, you should now\n   * override `scheduleUpdate()`. For backwards compatibility with LitElement 2.x,\n   * scheduling updates via `performUpdate()` continues to work, but will make\n   * also calling `performUpdate()` to synchronously process updates difficult.\n   *\n   * @category updates\n   */\n  protected performUpdate(): void | Promise<unknown> {\n    // Abort any update if one is not pending when this is called.\n    // This can happen if `performUpdate` is called early to \"flush\"\n    // the update.\n    if (!this.isUpdatePending) {\n      return;\n    }\n    debugLogEvent?.({kind: 'update'});\n    // create renderRoot before first update.\n    if (!this.hasUpdated) {\n      // Produce warning if any class properties are shadowed by class fields\n      if (DEV_MODE) {\n        const shadowedProperties: string[] = [];\n        (\n          this.constructor as typeof ReactiveElement\n        ).__reactivePropertyKeys?.forEach((p) => {\n          if (this.hasOwnProperty(p) && !this.__instanceProperties?.has(p)) {\n            shadowedProperties.push(p as string);\n          }\n        });\n        if (shadowedProperties.length) {\n          throw new Error(\n            `The following properties on element ${this.localName} will not ` +\n              `trigger updates as expected because they are set using class ` +\n              `fields: ${shadowedProperties.join(', ')}. ` +\n              `Native class fields and some compiled output will overwrite ` +\n              `accessors used for detecting changes. See ` +\n              `https://lit.dev/msg/class-field-shadowing ` +\n              `for more information.`\n          );\n        }\n      }\n    }\n    // Mixin instance properties once, if they exist.\n    if (this.__instanceProperties) {\n      // Use forEach so this works even if for/of loops are compiled to for loops\n      // expecting arrays\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.__instanceProperties!.forEach((v, p) => ((this as any)[p] = v));\n      this.__instanceProperties = undefined;\n    }\n    let shouldUpdate = false;\n    const changedProperties = this._$changedProperties;\n    try {\n      shouldUpdate = this.shouldUpdate(changedProperties);\n      if (shouldUpdate) {\n        this.willUpdate(changedProperties);\n        this.__controllers?.forEach((c) => c.hostUpdate?.());\n        this.update(changedProperties);\n      } else {\n        this.__markUpdated();\n      }\n    } catch (e) {\n      // Prevent `firstUpdated` and `updated` from running when there's an\n      // update exception.\n      shouldUpdate = false;\n      // Ensure element can accept additional updates after an exception.\n      this.__markUpdated();\n      throw e;\n    }\n    // The update is no longer considered pending and further updates are now allowed.\n    if (shouldUpdate) {\n      this._$didUpdate(changedProperties);\n    }\n  }\n\n  /**\n   * Invoked before `update()` to compute values needed during the update.\n   *\n   * Implement `willUpdate` to compute property values that depend on other\n   * properties and are used in the rest of the update process.\n   *\n   * ```ts\n   * willUpdate(changedProperties) {\n   *   // only need to check changed properties for an expensive computation.\n   *   if (changedProperties.has('firstName') || changedProperties.has('lastName')) {\n   *     this.sha = computeSHA(`${this.firstName} ${this.lastName}`);\n   *   }\n   * }\n   *\n   * render() {\n   *   return html`SHA: ${this.sha}`;\n   * }\n   * ```\n   *\n   * @category updates\n   */\n  protected willUpdate(_changedProperties: PropertyValues): void {}\n\n  // Note, this is an override point for polyfill-support.\n  // @internal\n  _$didUpdate(changedProperties: PropertyValues) {\n    this.__controllers?.forEach((c) => c.hostUpdated?.());\n    if (!this.hasUpdated) {\n      this.hasUpdated = true;\n      this.firstUpdated(changedProperties);\n    }\n    this.updated(changedProperties);\n    if (\n      DEV_MODE &&\n      this.isUpdatePending &&\n      (this.constructor as typeof ReactiveElement).enabledWarnings!.indexOf(\n        'change-in-update'\n      ) >= 0\n    ) {\n      issueWarning(\n        'change-in-update',\n        `Element ${this.localName} scheduled an update ` +\n          `(generally because a property was set) ` +\n          `after an update completed, causing a new update to be scheduled. ` +\n          `This is inefficient and should be avoided unless the next update ` +\n          `can only be scheduled as a side effect of the previous update.`\n      );\n    }\n  }\n\n  private __markUpdated() {\n    this._$changedProperties = new Map();\n    this.isUpdatePending = false;\n  }\n\n  /**\n   * Returns a Promise that resolves when the element has completed updating.\n   * The Promise value is a boolean that is `true` if the element completed the\n   * update without triggering another update. The Promise result is `false` if\n   * a property was set inside `updated()`. If the Promise is rejected, an\n   * exception was thrown during the update.\n   *\n   * To await additional asynchronous work, override the `getUpdateComplete`\n   * method. For example, it is sometimes useful to await a rendered element\n   * before fulfilling this Promise. To do this, first await\n   * `super.getUpdateComplete()`, then any subsequent state.\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  get updateComplete(): Promise<boolean> {\n    return this.getUpdateComplete();\n  }\n\n  /**\n   * Override point for the `updateComplete` promise.\n   *\n   * It is not safe to override the `updateComplete` getter directly due to a\n   * limitation in TypeScript which means it is not possible to call a\n   * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n   * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n   * This method should be overridden instead. For example:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   override async getUpdateComplete() {\n   *     const result = await super.getUpdateComplete();\n   *     await this._myChild.updateComplete;\n   *     return result;\n   *   }\n   * }\n   * ```\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  protected getUpdateComplete(): Promise<boolean> {\n    return this.__updatePromise;\n  }\n\n  /**\n   * Controls whether or not `update()` should be called when the element requests\n   * an update. By default, this method always returns `true`, but this can be\n   * customized to control when to update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n    return true;\n  }\n\n  /**\n   * Updates the element. This method reflects property values to attributes.\n   * It can be overridden to render and keep updated element DOM.\n   * Setting properties inside this method will *not* trigger\n   * another update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected update(_changedProperties: PropertyValues) {\n    if (this.__reflectingProperties !== undefined) {\n      // Use forEach so this works even if for/of loops are compiled to for\n      // loops expecting arrays\n      this.__reflectingProperties.forEach((v, k) =>\n        this.__propertyToAttribute(k, this[k as keyof this], v)\n      );\n      this.__reflectingProperties = undefined;\n    }\n    this.__markUpdated();\n  }\n\n  /**\n   * Invoked whenever the element is updated. Implement to perform\n   * post-updating tasks via DOM APIs, for example, focusing an element.\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected updated(_changedProperties: PropertyValues) {}\n\n  /**\n   * Invoked when the element is first updated. Implement to perform one time\n   * work on the element after update.\n   *\n   * ```ts\n   * firstUpdated() {\n   *   this.renderRoot.getElementById('my-text-area').focus();\n   * }\n   * ```\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected firstUpdated(_changedProperties: PropertyValues) {}\n}\n\n// Apply polyfills if available\npolyfillSupport?.({ReactiveElement});\n\n// Dev mode warnings...\nif (DEV_MODE) {\n  // Default warning set.\n  ReactiveElement.enabledWarnings = ['change-in-update'];\n  const ensureOwnWarnings = function (ctor: typeof ReactiveElement) {\n    if (\n      !ctor.hasOwnProperty(JSCompiler_renameProperty('enabledWarnings', ctor))\n    ) {\n      ctor.enabledWarnings = ctor.enabledWarnings!.slice();\n    }\n  };\n  ReactiveElement.enableWarning = function (\n    this: typeof ReactiveElement,\n    warning: WarningKind\n  ) {\n    ensureOwnWarnings(this);\n    if (this.enabledWarnings!.indexOf(warning) < 0) {\n      this.enabledWarnings!.push(warning);\n    }\n  };\n  ReactiveElement.disableWarning = function (\n    this: typeof ReactiveElement,\n    warning: WarningKind\n  ) {\n    ensureOwnWarnings(this);\n    const i = this.enabledWarnings!.indexOf(warning);\n    if (i >= 0) {\n      this.enabledWarnings!.splice(i, 1);\n    }\n  };\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for ReactiveElement usage.\n(global.reactiveElementVersions ??= []).push('1.6.3');\nif (DEV_MODE && global.reactiveElementVersions.length > 1) {\n  issueWarning!(\n    'multiple-versions',\n    `Multiple versions of Lit loaded. Loading multiple versions ` +\n      `is not recommended.`\n  );\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n// IMPORTANT: these imports must be type-only\nimport type {Directive, DirectiveResult, PartInfo} from './directive.js';\n\nconst DEV_MODE = true;\nconst ENABLE_EXTRA_SECURITY_HOOKS = true;\nconst ENABLE_SHADYDOM_NOPATCH = true;\nconst NODE_MODE = false;\n// Use window for browser builds because IE11 doesn't have globalThis.\nconst global = NODE_MODE ? globalThis : window;\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LitUnstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry =\n      | TemplatePrep\n      | TemplateInstantiated\n      | TemplateInstantiatedAndUpdated\n      | TemplateUpdating\n      | BeginRender\n      | EndRender\n      | CommitPartEntry\n      | SetPartValue;\n    export interface TemplatePrep {\n      kind: 'template prep';\n      template: Template;\n      strings: TemplateStringsArray;\n      clonableTemplate: HTMLTemplateElement;\n      parts: TemplatePart[];\n    }\n    export interface BeginRender {\n      kind: 'begin render';\n      id: number;\n      value: unknown;\n      container: HTMLElement | DocumentFragment;\n      options: RenderOptions | undefined;\n      part: ChildPart | undefined;\n    }\n    export interface EndRender {\n      kind: 'end render';\n      id: number;\n      value: unknown;\n      container: HTMLElement | DocumentFragment;\n      options: RenderOptions | undefined;\n      part: ChildPart;\n    }\n    export interface TemplateInstantiated {\n      kind: 'template instantiated';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      fragment: Node;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface TemplateInstantiatedAndUpdated {\n      kind: 'template instantiated and updated';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      fragment: Node;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface TemplateUpdating {\n      kind: 'template updating';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface SetPartValue {\n      kind: 'set part';\n      part: Part;\n      value: unknown;\n      valueIndex: number;\n      values: unknown[];\n      templateInstance: TemplateInstance;\n    }\n\n    export type CommitPartEntry =\n      | CommitNothingToChildEntry\n      | CommitText\n      | CommitNode\n      | CommitAttribute\n      | CommitProperty\n      | CommitBooleanAttribute\n      | CommitEventListener\n      | CommitToElementBinding;\n\n    export interface CommitNothingToChildEntry {\n      kind: 'commit nothing to child';\n      start: ChildNode;\n      end: ChildNode | null;\n      parent: Disconnectable | undefined;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitText {\n      kind: 'commit text';\n      node: Text;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitNode {\n      kind: 'commit node';\n      start: Node;\n      parent: Disconnectable | undefined;\n      value: Node;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitAttribute {\n      kind: 'commit attribute';\n      element: Element;\n      name: string;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitProperty {\n      kind: 'commit property';\n      element: Element;\n      name: string;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitBooleanAttribute {\n      kind: 'commit boolean attribute';\n      element: Element;\n      name: string;\n      value: boolean;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitEventListener {\n      kind: 'commit event listener';\n      element: Element;\n      name: string;\n      value: unknown;\n      oldListener: unknown;\n      options: RenderOptions | undefined;\n      // True if we're removing the old event listener (e.g. because settings changed, or value is nothing)\n      removeListener: boolean;\n      // True if we're adding a new event listener (e.g. because first render, or settings changed)\n      addListener: boolean;\n    }\n\n    export interface CommitToElementBinding {\n      kind: 'commit to element binding';\n      element: Element;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n  }\n}\n\ninterface DebugLoggingWindow {\n  // Even in dev mode, we generally don't want to emit these events, as that's\n  // another level of cost, so only emit them when DEV_MODE is true _and_ when\n  // window.emitLitDebugEvents is true.\n  emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n  ? (event: LitUnstable.DebugLog.Entry) => {\n      const shouldEmit = (global as unknown as DebugLoggingWindow)\n        .emitLitDebugLogEvents;\n      if (!shouldEmit) {\n        return;\n      }\n      global.dispatchEvent(\n        new CustomEvent<LitUnstable.DebugLog.Entry>('lit-debug', {\n          detail: event,\n        })\n      );\n    }\n  : undefined;\n// Used for connecting beginRender and endRender events when there are nested\n// renders when errors are thrown preventing an endRender event from being\n// called.\nlet debugLogRenderId = 0;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  global.litIssuedWarnings ??= new Set();\n\n  // Issue a warning, if we haven't already.\n  issueWarning = (code: string, warning: string) => {\n    warning += code\n      ? ` See https://lit.dev/msg/${code} for more information.`\n      : '';\n    if (!global.litIssuedWarnings!.has(warning)) {\n      console.warn(warning);\n      global.litIssuedWarnings!.add(warning);\n    }\n  };\n\n  issueWarning(\n    'dev-mode',\n    `Lit is in dev mode. Not recommended for production!`\n  );\n}\n\nconst wrap =\n  ENABLE_SHADYDOM_NOPATCH &&\n  global.ShadyDOM?.inUse &&\n  global.ShadyDOM?.noPatch === true\n    ? global.ShadyDOM!.wrap\n    : (node: Node) => node;\n\nconst trustedTypes = (global as unknown as Partial<Window>).trustedTypes;\n\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = trustedTypes\n  ? trustedTypes.createPolicy('lit-html', {\n      createHTML: (s) => s,\n    })\n  : undefined;\n\n/**\n * Used to sanitize any value before it is written into the DOM. This can be\n * used to implement a security policy of allowed and disallowed values in\n * order to prevent XSS attacks.\n *\n * One way of using this callback would be to check attributes and properties\n * against a list of high risk fields, and require that values written to such\n * fields be instances of a class which is safe by construction. Closure's Safe\n * HTML Types is one implementation of this technique (\n * https://github.com/google/safe-html-types/blob/master/doc/safehtml-types.md).\n * The TrustedTypes polyfill in API-only mode could also be used as a basis\n * for this technique (https://github.com/WICG/trusted-types).\n *\n * @param node The HTML node (usually either a #text node or an Element) that\n *     is being written to. Note that this is just an exemplar node, the write\n *     may take place against another instance of the same class of node.\n * @param name The name of an attribute or property (for example, 'href').\n * @param type Indicates whether the write that's about to be performed will\n *     be to a property or a node.\n * @return A function that will sanitize this class of writes.\n */\nexport type SanitizerFactory = (\n  node: Node,\n  name: string,\n  type: 'property' | 'attribute'\n) => ValueSanitizer;\n\n/**\n * A function which can sanitize values that will be written to a specific kind\n * of DOM sink.\n *\n * See SanitizerFactory.\n *\n * @param value The value to sanitize. Will be the actual value passed into\n *     the lit-html template literal, so this could be of any type.\n * @return The value to write to the DOM. Usually the same as the input value,\n *     unless sanitization is needed.\n */\nexport type ValueSanitizer = (value: unknown) => unknown;\n\nconst identityFunction: ValueSanitizer = (value: unknown) => value;\nconst noopSanitizer: SanitizerFactory = (\n  _node: Node,\n  _name: string,\n  _type: 'property' | 'attribute'\n) => identityFunction;\n\n/** Sets the global sanitizer factory. */\nconst setSanitizer = (newSanitizer: SanitizerFactory) => {\n  if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n    return;\n  }\n  if (sanitizerFactoryInternal !== noopSanitizer) {\n    throw new Error(\n      `Attempted to overwrite existing lit-html security policy.` +\n        ` setSanitizeDOMValueFactory should be called at most once.`\n    );\n  }\n  sanitizerFactoryInternal = newSanitizer;\n};\n\n/**\n * Only used in internal tests, not a part of the public API.\n */\nconst _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n  sanitizerFactoryInternal = noopSanitizer;\n};\n\nconst createSanitizer: SanitizerFactory = (node, name, type) => {\n  return sanitizerFactoryInternal(node, name, type);\n};\n\n// Added to an attribute name to mark the attribute as bound so we can find\n// it easily.\nconst boundAttributeSuffix = '$lit$';\n\n// This marker is used in many syntactic positions in HTML, so it must be\n// a valid element name and attribute name. We don't support dynamic names (yet)\n// but this at least ensures that the parse tree is closer to the template\n// intention.\nconst marker = `lit$${String(Math.random()).slice(9)}$`;\n\n// String used to tell if a comment is a marker comment\nconst markerMatch = '?' + marker;\n\n// Text used to insert a comment marker node. We use processing instruction\n// syntax because it's slightly smaller, but parses as a comment node.\nconst nodeMarker = `<${markerMatch}>`;\n\nconst d =\n  NODE_MODE && global.document === undefined\n    ? ({\n        createTreeWalker() {\n          return {};\n        },\n      } as unknown as Document)\n    : document;\n\n// Creates a dynamic marker. We never have to search for these in the DOM.\nconst createMarker = () => d.createComment('');\n\n// https://tc39.github.io/ecma262/#sec-typeof-operator\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\nconst isPrimitive = (value: unknown): value is Primitive =>\n  value === null || (typeof value != 'object' && typeof value != 'function');\nconst isArray = Array.isArray;\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n  isArray(value) ||\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  typeof (value as any)?.[Symbol.iterator] === 'function';\n\nconst SPACE_CHAR = `[ \\t\\n\\f\\r]`;\nconst ATTR_VALUE_CHAR = `[^ \\t\\n\\f\\r\"'\\`<>=]`;\nconst NAME_CHAR = `[^\\\\s\"'>=/]`;\n\n// These regexes represent the five parsing states that we care about in the\n// Template's HTML scanner. They match the *end* of the state they're named\n// after.\n// Depending on the match, we transition to a new state. If there's no match,\n// we stay in the same state.\n// Note that the regexes are stateful. We utilize lastIndex and sync it\n// across the multiple regexes used. In addition to the five regexes below\n// we also dynamically create a regex to find the matching end tags for raw\n// text elements.\n\n/**\n * End of text is: `<` followed by:\n *   (comment start) or (tag) or (dynamic tag binding)\n */\nconst textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nconst COMMENT_START = 1;\nconst TAG_NAME = 2;\nconst DYNAMIC_TAG_NAME = 3;\n\nconst commentEndRegex = /-->/g;\n/**\n * Comments not started with <!--, like </{, can be ended by a single `>`\n */\nconst comment2EndRegex = />/g;\n\n/**\n * The tagEnd regex matches the end of the \"inside an opening\" tag syntax\n * position. It either matches a `>`, an attribute-like sequence, or the end\n * of the string after a space (attribute-name position ending).\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\t\\n\\f\\r\" are HTML space characters:\n * https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * So an attribute is:\n *  * The name: any character except a whitespace character, (\"), ('), \">\",\n *    \"=\", or \"/\". Note: this is different from the HTML spec which also excludes control characters.\n *  * Followed by zero or more space characters\n *  * Followed by \"=\"\n *  * Followed by zero or more space characters\n *  * Followed by:\n *    * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n *    * (\") then any non-(\"), or\n *    * (') then any non-(')\n */\nconst tagEndRegex = new RegExp(\n  `>|${SPACE_CHAR}(?:(${NAME_CHAR}+)(${SPACE_CHAR}*=${SPACE_CHAR}*(?:${ATTR_VALUE_CHAR}|(\"|')|))|$)`,\n  'g'\n);\nconst ENTIRE_MATCH = 0;\nconst ATTRIBUTE_NAME = 1;\nconst SPACES_AND_EQUALS = 2;\nconst QUOTE_CHAR = 3;\n\nconst singleQuoteAttrEndRegex = /'/g;\nconst doubleQuoteAttrEndRegex = /\"/g;\n/**\n * Matches the raw text elements.\n *\n * Comments are not parsed within raw text elements, so we need to search their\n * text content for marker strings.\n */\nconst rawTextElement = /^(?:script|style|textarea|title)$/i;\n\n/** TemplateResult types */\nconst HTML_RESULT = 1;\nconst SVG_RESULT = 2;\n\ntype ResultType = typeof HTML_RESULT | typeof SVG_RESULT;\n\n// TemplatePart types\n// IMPORTANT: these must match the values in PartType\nconst ATTRIBUTE_PART = 1;\nconst CHILD_PART = 2;\nconst PROPERTY_PART = 3;\nconst BOOLEAN_ATTRIBUTE_PART = 4;\nconst EVENT_PART = 5;\nconst ELEMENT_PART = 6;\nconst COMMENT_PART = 7;\n\n/**\n * The return type of the template tag functions, {@linkcode html} and\n * {@linkcode svg}.\n *\n * A `TemplateResult` object holds all the information about a template\n * expression required to render it: the template strings, expression values,\n * and type of template (html or svg).\n *\n * `TemplateResult` objects do not create any DOM on their own. To create or\n * update DOM you need to render the `TemplateResult`. See\n * [Rendering](https://lit.dev/docs/components/rendering) for more information.\n *\n */\nexport type TemplateResult<T extends ResultType = ResultType> = {\n  // This property needs to remain unminified.\n  ['_$litType$']: T;\n  strings: TemplateStringsArray;\n  values: unknown[];\n};\n\nexport type HTMLTemplateResult = TemplateResult<typeof HTML_RESULT>;\n\nexport type SVGTemplateResult = TemplateResult<typeof SVG_RESULT>;\n\nexport interface CompiledTemplateResult {\n  // This is a factory in order to make template initialization lazy\n  // and allow ShadyRenderOptions scope to be passed in.\n  // This property needs to remain unminified.\n  ['_$litType$']: CompiledTemplate;\n  values: unknown[];\n}\n\nexport interface CompiledTemplate extends Omit<Template, 'el'> {\n  // el is overridden to be optional. We initialize it on first render\n  el?: HTMLTemplateElement;\n\n  // The prepared HTML string to create a template element from.\n  // The type is a TemplateStringsArray to guarantee that the value came from\n  // source code, preventing a JSON injection attack.\n  h: TemplateStringsArray;\n}\n\n/**\n * Generates a template literal tag function that returns a TemplateResult with\n * the given result type.\n */\nconst tag =\n  <T extends ResultType>(type: T) =>\n  (strings: TemplateStringsArray, ...values: unknown[]): TemplateResult<T> => {\n    // Warn against templates octal escape sequences\n    // We do this here rather than in render so that the warning is closer to the\n    // template definition.\n    if (DEV_MODE && strings.some((s) => s === undefined)) {\n      console.warn(\n        'Some template strings are undefined.\\n' +\n          'This is probably caused by illegal octal escape sequences.'\n      );\n    }\n    return {\n      // This property needs to remain unminified.\n      ['_$litType$']: type,\n      strings,\n      values,\n    };\n  };\n\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n *\n * ```ts\n * const header = (title: string) => html`<h1>${title}</h1>`;\n * ```\n *\n * The `html` tag returns a description of the DOM to render as a value. It is\n * lazy, meaning no work is done until the template is rendered. When rendering,\n * if a template comes from the same expression as a previously rendered result,\n * it's efficiently updated instead of replaced.\n */\nexport const html = tag(HTML_RESULT);\n\n/**\n * Interprets a template literal as an SVG fragment that can efficiently\n * render to and update a container.\n *\n * ```ts\n * const rect = svg`<rect width=\"10\" height=\"10\"></rect>`;\n *\n * const myImage = html`\n *   <svg viewBox=\"0 0 10 10\" xmlns=\"http://www.w3.org/2000/svg\">\n *     ${rect}\n *   </svg>`;\n * ```\n *\n * The `svg` *tag function* should only be used for SVG fragments, or elements\n * that would be contained **inside** an `<svg>` HTML element. A common error is\n * placing an `<svg>` *element* in a template tagged with the `svg` tag\n * function. The `<svg>` element is an HTML element and should be used within a\n * template tagged with the {@linkcode html} tag function.\n *\n * In LitElement usage, it's invalid to return an SVG fragment from the\n * `render()` method, as the SVG fragment will be contained within the element's\n * shadow root and thus cannot be used within an `<svg>` HTML element.\n */\nexport const svg = tag(SVG_RESULT);\n\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nexport const noChange = Symbol.for('lit-noChange');\n\n/**\n * A sentinel value that signals a ChildPart to fully clear its content.\n *\n * ```ts\n * const button = html`${\n *  user.isAdmin\n *    ? html`<button>DELETE</button>`\n *    : nothing\n * }`;\n * ```\n *\n * Prefer using `nothing` over other falsy values as it provides a consistent\n * behavior between various expression binding contexts.\n *\n * In child expressions, `undefined`, `null`, `''`, and `nothing` all behave the\n * same and render no nodes. In attribute expressions, `nothing` _removes_ the\n * attribute, while `undefined` and `null` will render an empty string. In\n * property expressions `nothing` becomes `undefined`.\n */\nexport const nothing = Symbol.for('lit-nothing');\n\n/**\n * The cache of prepared templates, keyed by the tagged TemplateStringsArray\n * and _not_ accounting for the specific template tag used. This means that\n * template tags cannot be dynamic - the must statically be one of html, svg,\n * or attr. This restriction simplifies the cache lookup, which is on the hot\n * path for rendering.\n */\nconst templateCache = new WeakMap<TemplateStringsArray, Template>();\n\n/**\n * Object specifying options for controlling lit-html rendering. Note that\n * while `render` may be called multiple times on the same `container` (and\n * `renderBefore` reference node) to efficiently update the rendered content,\n * only the options passed in during the first render are respected during\n * the lifetime of renders to that unique `container` + `renderBefore`\n * combination.\n */\nexport interface RenderOptions {\n  /**\n   * An object to use as the `this` value for event listeners. It's often\n   * useful to set this to the host component rendering a template.\n   */\n  host?: object;\n  /**\n   * A DOM node before which to render content in the container.\n   */\n  renderBefore?: ChildNode | null;\n  /**\n   * Node used for cloning the template (`importNode` will be called on this\n   * node). This controls the `ownerDocument` of the rendered DOM, along with\n   * any inherited context. Defaults to the global `document`.\n   */\n  creationScope?: {importNode(node: Node, deep?: boolean): Node};\n  /**\n   * The initial connected state for the top-level part being rendered. If no\n   * `isConnected` option is set, `AsyncDirective`s will be connected by\n   * default. Set to `false` if the initial render occurs in a disconnected tree\n   * and `AsyncDirective`s should see `isConnected === false` for their initial\n   * render. The `part.setConnected()` method must be used subsequent to initial\n   * render to change the connected state of the part.\n   */\n  isConnected?: boolean;\n}\n\nconst walker = d.createTreeWalker(\n  d,\n  129 /* NodeFilter.SHOW_{ELEMENT|COMMENT} */,\n  null,\n  false\n);\n\nlet sanitizerFactoryInternal: SanitizerFactory = noopSanitizer;\n\n//\n// Classes only below here, const variable declarations only above here...\n//\n// Keeping variable declarations and classes together improves minification.\n// Interfaces and type aliases can be interleaved freely.\n//\n\n// Type for classes that have a `_directive` or `_directives[]` field, used by\n// `resolveDirective`\nexport interface DirectiveParent {\n  _$parent?: DirectiveParent;\n  _$isConnected: boolean;\n  __directive?: Directive;\n  __directives?: Array<Directive | undefined>;\n}\n\nfunction trustFromTemplateString(\n  tsa: TemplateStringsArray,\n  stringFromTSA: string\n): TrustedHTML {\n  // A security check to prevent spoofing of Lit template results.\n  // In the future, we may be able to replace this with Array.isTemplateObject,\n  // though we might need to make that check inside of the html and svg\n  // functions, because precompiled templates don't come in as\n  // TemplateStringArray objects.\n  if (!Array.isArray(tsa) || !tsa.hasOwnProperty('raw')) {\n    let message = 'invalid template strings array';\n    if (DEV_MODE) {\n      message = `\n          Internal Error: expected template strings to be an array\n          with a 'raw' field. Faking a template strings array by\n          calling html or svg like an ordinary function is effectively\n          the same as calling unsafeHtml and can lead to major security\n          issues, e.g. opening your code up to XSS attacks.\n          If you're using the html or svg tagged template functions normally\n          and still seeing this error, please file a bug at\n          https://github.com/lit/lit/issues/new?template=bug_report.md\n          and include information about your build tooling, if any.\n        `\n        .trim()\n        .replace(/\\n */g, '\\n');\n    }\n    throw new Error(message);\n  }\n  return policy !== undefined\n    ? policy.createHTML(stringFromTSA)\n    : (stringFromTSA as unknown as TrustedHTML);\n}\n\n/**\n * Returns an HTML string for the given TemplateStringsArray and result type\n * (HTML or SVG), along with the case-sensitive bound attribute names in\n * template order. The HTML contains comment markers denoting the `ChildPart`s\n * and suffixes on bound attributes denoting the `AttributeParts`.\n *\n * @param strings template strings array\n * @param type HTML or SVG\n * @return Array containing `[html, attrNames]` (array returned for terseness,\n *     to avoid object fields since this code is shared with non-minified SSR\n *     code)\n */\nconst getTemplateHtml = (\n  strings: TemplateStringsArray,\n  type: ResultType\n): [TrustedHTML, Array<string | undefined>] => {\n  // Insert makers into the template HTML to represent the position of\n  // bindings. The following code scans the template strings to determine the\n  // syntactic position of the bindings. They can be in text position, where\n  // we insert an HTML comment, attribute value position, where we insert a\n  // sentinel string and re-write the attribute name, or inside a tag where\n  // we insert the sentinel string.\n  const l = strings.length - 1;\n  // Stores the case-sensitive bound attribute names in the order of their\n  // parts. ElementParts are also reflected in this array as undefined\n  // rather than a string, to disambiguate from attribute bindings.\n  const attrNames: Array<string | undefined> = [];\n  let html = type === SVG_RESULT ? '<svg>' : '';\n\n  // When we're inside a raw text tag (not it's text content), the regex\n  // will still be tagRegex so we can find attributes, but will switch to\n  // this regex when the tag ends.\n  let rawTextEndRegex: RegExp | undefined;\n\n  // The current parsing state, represented as a reference to one of the\n  // regexes\n  let regex = textEndRegex;\n\n  for (let i = 0; i < l; i++) {\n    const s = strings[i];\n    // The index of the end of the last attribute name. When this is\n    // positive at end of a string, it means we're in an attribute value\n    // position and need to rewrite the attribute name.\n    // We also use a special value of -2 to indicate that we encountered\n    // the end of a string in attribute name position.\n    let attrNameEndIndex = -1;\n    let attrName: string | undefined;\n    let lastIndex = 0;\n    let match!: RegExpExecArray | null;\n\n    // The conditions in this loop handle the current parse state, and the\n    // assignments to the `regex` variable are the state transitions.\n    while (lastIndex < s.length) {\n      // Make sure we start searching from where we previously left off\n      regex.lastIndex = lastIndex;\n      match = regex.exec(s);\n      if (match === null) {\n        break;\n      }\n      lastIndex = regex.lastIndex;\n      if (regex === textEndRegex) {\n        if (match[COMMENT_START] === '!--') {\n          regex = commentEndRegex;\n        } else if (match[COMMENT_START] !== undefined) {\n          // We started a weird comment, like </{\n          regex = comment2EndRegex;\n        } else if (match[TAG_NAME] !== undefined) {\n          if (rawTextElement.test(match[TAG_NAME])) {\n            // Record if we encounter a raw-text element. We'll switch to\n            // this regex at the end of the tag.\n            rawTextEndRegex = new RegExp(`</${match[TAG_NAME]}`, 'g');\n          }\n          regex = tagEndRegex;\n        } else if (match[DYNAMIC_TAG_NAME] !== undefined) {\n          if (DEV_MODE) {\n            throw new Error(\n              'Bindings in tag names are not supported. Please use static templates instead. ' +\n                'See https://lit.dev/docs/templates/expressions/#static-expressions'\n            );\n          }\n          regex = tagEndRegex;\n        }\n      } else if (regex === tagEndRegex) {\n        if (match[ENTIRE_MATCH] === '>') {\n          // End of a tag. If we had started a raw-text element, use that\n          // regex\n          regex = rawTextEndRegex ?? textEndRegex;\n          // We may be ending an unquoted attribute value, so make sure we\n          // clear any pending attrNameEndIndex\n          attrNameEndIndex = -1;\n        } else if (match[ATTRIBUTE_NAME] === undefined) {\n          // Attribute name position\n          attrNameEndIndex = -2;\n        } else {\n          attrNameEndIndex = regex.lastIndex - match[SPACES_AND_EQUALS].length;\n          attrName = match[ATTRIBUTE_NAME];\n          regex =\n            match[QUOTE_CHAR] === undefined\n              ? tagEndRegex\n              : match[QUOTE_CHAR] === '\"'\n              ? doubleQuoteAttrEndRegex\n              : singleQuoteAttrEndRegex;\n        }\n      } else if (\n        regex === doubleQuoteAttrEndRegex ||\n        regex === singleQuoteAttrEndRegex\n      ) {\n        regex = tagEndRegex;\n      } else if (regex === commentEndRegex || regex === comment2EndRegex) {\n        regex = textEndRegex;\n      } else {\n        // Not one of the five state regexes, so it must be the dynamically\n        // created raw text regex and we're at the close of that element.\n        regex = tagEndRegex;\n        rawTextEndRegex = undefined;\n      }\n    }\n\n    if (DEV_MODE) {\n      // If we have a attrNameEndIndex, which indicates that we should\n      // rewrite the attribute name, assert that we're in a valid attribute\n      // position - either in a tag, or a quoted attribute value.\n      console.assert(\n        attrNameEndIndex === -1 ||\n          regex === tagEndRegex ||\n          regex === singleQuoteAttrEndRegex ||\n          regex === doubleQuoteAttrEndRegex,\n        'unexpected parse state B'\n      );\n    }\n\n    // We have four cases:\n    //  1. We're in text position, and not in a raw text element\n    //     (regex === textEndRegex): insert a comment marker.\n    //  2. We have a non-negative attrNameEndIndex which means we need to\n    //     rewrite the attribute name to add a bound attribute suffix.\n    //  3. We're at the non-first binding in a multi-binding attribute, use a\n    //     plain marker.\n    //  4. We're somewhere else inside the tag. If we're in attribute name\n    //     position (attrNameEndIndex === -2), add a sequential suffix to\n    //     generate a unique attribute name.\n\n    // Detect a binding next to self-closing tag end and insert a space to\n    // separate the marker from the tag end:\n    const end =\n      regex === tagEndRegex && strings[i + 1].startsWith('/>') ? ' ' : '';\n    html +=\n      regex === textEndRegex\n        ? s + nodeMarker\n        : attrNameEndIndex >= 0\n        ? (attrNames.push(attrName!),\n          s.slice(0, attrNameEndIndex) +\n            boundAttributeSuffix +\n            s.slice(attrNameEndIndex)) +\n          marker +\n          end\n        : s +\n          marker +\n          (attrNameEndIndex === -2 ? (attrNames.push(undefined), i) : end);\n  }\n\n  const htmlResult: string | TrustedHTML =\n    html + (strings[l] || '<?>') + (type === SVG_RESULT ? '</svg>' : '');\n\n  // Returned as an array for terseness\n  return [trustFromTemplateString(strings, htmlResult), attrNames];\n};\n\n/** @internal */\nexport type {Template};\nclass Template {\n  /** @internal */\n  el!: HTMLTemplateElement;\n\n  parts: Array<TemplatePart> = [];\n\n  constructor(\n    // This property needs to remain unminified.\n    {strings, ['_$litType$']: type}: TemplateResult,\n    options?: RenderOptions\n  ) {\n    let node: Node | null;\n    let nodeIndex = 0;\n    let attrNameIndex = 0;\n    const partCount = strings.length - 1;\n    const parts = this.parts;\n\n    // Create template element\n    const [html, attrNames] = getTemplateHtml(strings, type);\n    this.el = Template.createElement(html, options);\n    walker.currentNode = this.el.content;\n\n    // Reparent SVG nodes into template root\n    if (type === SVG_RESULT) {\n      const content = this.el.content;\n      const svgElement = content.firstChild!;\n      svgElement.remove();\n      content.append(...svgElement.childNodes);\n    }\n\n    // Walk the template to find binding markers and create TemplateParts\n    while ((node = walker.nextNode()) !== null && parts.length < partCount) {\n      if (node.nodeType === 1) {\n        if (DEV_MODE) {\n          const tag = (node as Element).localName;\n          // Warn if `textarea` includes an expression and throw if `template`\n          // does since these are not supported. We do this by checking\n          // innerHTML for anything that looks like a marker. This catches\n          // cases like bindings in textarea there markers turn into text nodes.\n          if (\n            /^(?:textarea|template)$/i!.test(tag) &&\n            (node as Element).innerHTML.includes(marker)\n          ) {\n            const m =\n              `Expressions are not supported inside \\`${tag}\\` ` +\n              `elements. See https://lit.dev/msg/expression-in-${tag} for more ` +\n              `information.`;\n            if (tag === 'template') {\n              throw new Error(m);\n            } else issueWarning('', m);\n          }\n        }\n        // TODO (justinfagnani): for attempted dynamic tag names, we don't\n        // increment the bindingIndex, and it'll be off by 1 in the element\n        // and off by two after it.\n        if ((node as Element).hasAttributes()) {\n          // We defer removing bound attributes because on IE we might not be\n          // iterating attributes in their template order, and would sometimes\n          // remove an attribute that we still need to create a part for.\n          const attrsToRemove = [];\n          for (const name of (node as Element).getAttributeNames()) {\n            // `name` is the name of the attribute we're iterating over, but not\n            // _necessarily_ the name of the attribute we will create a part\n            // for. They can be different in browsers that don't iterate on\n            // attributes in source order. In that case the attrNames array\n            // contains the attribute name we'll process next. We only need the\n            // attribute name here to know if we should process a bound attribute\n            // on this element.\n            if (\n              name.endsWith(boundAttributeSuffix) ||\n              name.startsWith(marker)\n            ) {\n              const realName = attrNames[attrNameIndex++];\n              attrsToRemove.push(name);\n              if (realName !== undefined) {\n                // Lowercase for case-sensitive SVG attributes like viewBox\n                const value = (node as Element).getAttribute(\n                  realName.toLowerCase() + boundAttributeSuffix\n                )!;\n                const statics = value.split(marker);\n                const m = /([.?@])?(.*)/.exec(realName)!;\n                parts.push({\n                  type: ATTRIBUTE_PART,\n                  index: nodeIndex,\n                  name: m[2],\n                  strings: statics,\n                  ctor:\n                    m[1] === '.'\n                      ? PropertyPart\n                      : m[1] === '?'\n                      ? BooleanAttributePart\n                      : m[1] === '@'\n                      ? EventPart\n                      : AttributePart,\n                });\n              } else {\n                parts.push({\n                  type: ELEMENT_PART,\n                  index: nodeIndex,\n                });\n              }\n            }\n          }\n          for (const name of attrsToRemove) {\n            (node as Element).removeAttribute(name);\n          }\n        }\n        // TODO (justinfagnani): benchmark the regex against testing for each\n        // of the 3 raw text element names.\n        if (rawTextElement.test((node as Element).tagName)) {\n          // For raw text elements we need to split the text content on\n          // markers, create a Text node for each segment, and create\n          // a TemplatePart for each marker.\n          const strings = (node as Element).textContent!.split(marker);\n          const lastIndex = strings.length - 1;\n          if (lastIndex > 0) {\n            (node as Element).textContent = trustedTypes\n              ? (trustedTypes.emptyScript as unknown as '')\n              : '';\n            // Generate a new text node for each literal section\n            // These nodes are also used as the markers for node parts\n            // We can't use empty text nodes as markers because they're\n            // normalized when cloning in IE (could simplify when\n            // IE is no longer supported)\n            for (let i = 0; i < lastIndex; i++) {\n              (node as Element).append(strings[i], createMarker());\n              // Walk past the marker node we just added\n              walker.nextNode();\n              parts.push({type: CHILD_PART, index: ++nodeIndex});\n            }\n            // Note because this marker is added after the walker's current\n            // node, it will be walked to in the outer loop (and ignored), so\n            // we don't need to adjust nodeIndex here\n            (node as Element).append(strings[lastIndex], createMarker());\n          }\n        }\n      } else if (node.nodeType === 8) {\n        const data = (node as Comment).data;\n        if (data === markerMatch) {\n          parts.push({type: CHILD_PART, index: nodeIndex});\n        } else {\n          let i = -1;\n          while ((i = (node as Comment).data.indexOf(marker, i + 1)) !== -1) {\n            // Comment node has a binding marker inside, make an inactive part\n            // The binding won't work, but subsequent bindings will\n            parts.push({type: COMMENT_PART, index: nodeIndex});\n            // Move to the end of the match\n            i += marker.length - 1;\n          }\n        }\n      }\n      nodeIndex++;\n    }\n    // We could set walker.currentNode to another node here to prevent a memory\n    // leak, but every time we prepare a template, we immediately render it\n    // and re-use the walker in new TemplateInstance._clone().\n    debugLogEvent?.({\n      kind: 'template prep',\n      template: this,\n      clonableTemplate: this.el,\n      parts: this.parts,\n      strings,\n    });\n  }\n\n  // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n  /** @nocollapse */\n  static createElement(html: TrustedHTML, _options?: RenderOptions) {\n    const el = d.createElement('template');\n    el.innerHTML = html as unknown as string;\n    return el;\n  }\n}\n\nexport interface Disconnectable {\n  _$parent?: Disconnectable;\n  _$disconnectableChildren?: Set<Disconnectable>;\n  // Rather than hold connection state on instances, Disconnectables recursively\n  // fetch the connection state from the RootPart they are connected in via\n  // getters up the Disconnectable tree via _$parent references. This pushes the\n  // cost of tracking the isConnected state to `AsyncDirectives`, and avoids\n  // needing to pass all Disconnectables (parts, template instances, and\n  // directives) their connection state each time it changes, which would be\n  // costly for trees that have no AsyncDirectives.\n  _$isConnected: boolean;\n}\n\nfunction resolveDirective(\n  part: ChildPart | AttributePart | ElementPart,\n  value: unknown,\n  parent: DirectiveParent = part,\n  attributeIndex?: number\n): unknown {\n  // Bail early if the value is explicitly noChange. Note, this means any\n  // nested directive is still attached and is not run.\n  if (value === noChange) {\n    return value;\n  }\n  let currentDirective =\n    attributeIndex !== undefined\n      ? (parent as AttributePart).__directives?.[attributeIndex]\n      : (parent as ChildPart | ElementPart | Directive).__directive;\n  const nextDirectiveConstructor = isPrimitive(value)\n    ? undefined\n    : // This property needs to remain unminified.\n      (value as DirectiveResult)['_$litDirective$'];\n  if (currentDirective?.constructor !== nextDirectiveConstructor) {\n    // This property needs to remain unminified.\n    currentDirective?.['_$notifyDirectiveConnectionChanged']?.(false);\n    if (nextDirectiveConstructor === undefined) {\n      currentDirective = undefined;\n    } else {\n      currentDirective = new nextDirectiveConstructor(part as PartInfo);\n      currentDirective._$initialize(part, parent, attributeIndex);\n    }\n    if (attributeIndex !== undefined) {\n      ((parent as AttributePart).__directives ??= [])[attributeIndex] =\n        currentDirective;\n    } else {\n      (parent as ChildPart | Directive).__directive = currentDirective;\n    }\n  }\n  if (currentDirective !== undefined) {\n    value = resolveDirective(\n      part,\n      currentDirective._$resolve(part, (value as DirectiveResult).values),\n      currentDirective,\n      attributeIndex\n    );\n  }\n  return value;\n}\n\nexport type {TemplateInstance};\n/**\n * An updateable instance of a Template. Holds references to the Parts used to\n * update the template instance.\n */\nclass TemplateInstance implements Disconnectable {\n  _$template: Template;\n  _$parts: Array<Part | undefined> = [];\n\n  /** @internal */\n  _$parent: ChildPart;\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  constructor(template: Template, parent: ChildPart) {\n    this._$template = template;\n    this._$parent = parent;\n  }\n\n  // Called by ChildPart parentNode getter\n  get parentNode() {\n    return this._$parent.parentNode;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  // This method is separate from the constructor because we need to return a\n  // DocumentFragment and we don't want to hold onto it with an instance field.\n  _clone(options: RenderOptions | undefined) {\n    const {\n      el: {content},\n      parts: parts,\n    } = this._$template;\n    const fragment = (options?.creationScope ?? d).importNode(content, true);\n    walker.currentNode = fragment;\n\n    let node = walker.nextNode()!;\n    let nodeIndex = 0;\n    let partIndex = 0;\n    let templatePart = parts[0];\n\n    while (templatePart !== undefined) {\n      if (nodeIndex === templatePart.index) {\n        let part: Part | undefined;\n        if (templatePart.type === CHILD_PART) {\n          part = new ChildPart(\n            node as HTMLElement,\n            node.nextSibling,\n            this,\n            options\n          );\n        } else if (templatePart.type === ATTRIBUTE_PART) {\n          part = new templatePart.ctor(\n            node as HTMLElement,\n            templatePart.name,\n            templatePart.strings,\n            this,\n            options\n          );\n        } else if (templatePart.type === ELEMENT_PART) {\n          part = new ElementPart(node as HTMLElement, this, options);\n        }\n        this._$parts.push(part);\n        templatePart = parts[++partIndex];\n      }\n      if (nodeIndex !== templatePart?.index) {\n        node = walker.nextNode()!;\n        nodeIndex++;\n      }\n    }\n    // We need to set the currentNode away from the cloned tree so that we\n    // don't hold onto the tree even if the tree is detached and should be\n    // freed.\n    walker.currentNode = d;\n    return fragment;\n  }\n\n  _update(values: Array<unknown>) {\n    let i = 0;\n    for (const part of this._$parts) {\n      if (part !== undefined) {\n        debugLogEvent?.({\n          kind: 'set part',\n          part,\n          value: values[i],\n          valueIndex: i,\n          values,\n          templateInstance: this,\n        });\n        if ((part as AttributePart).strings !== undefined) {\n          (part as AttributePart)._$setValue(values, part as AttributePart, i);\n          // The number of values the part consumes is part.strings.length - 1\n          // since values are in between template spans. We increment i by 1\n          // later in the loop, so increment it by part.strings.length - 2 here\n          i += (part as AttributePart).strings!.length - 2;\n        } else {\n          part._$setValue(values[i]);\n        }\n      }\n      i++;\n    }\n  }\n}\n\n/*\n * Parts\n */\ntype AttributeTemplatePart = {\n  readonly type: typeof ATTRIBUTE_PART;\n  readonly index: number;\n  readonly name: string;\n  readonly ctor: typeof AttributePart;\n  readonly strings: ReadonlyArray<string>;\n};\ntype ChildTemplatePart = {\n  readonly type: typeof CHILD_PART;\n  readonly index: number;\n};\ntype ElementTemplatePart = {\n  readonly type: typeof ELEMENT_PART;\n  readonly index: number;\n};\ntype CommentTemplatePart = {\n  readonly type: typeof COMMENT_PART;\n  readonly index: number;\n};\n\n/**\n * A TemplatePart represents a dynamic part in a template, before the template\n * is instantiated. When a template is instantiated Parts are created from\n * TemplateParts.\n */\ntype TemplatePart =\n  | ChildTemplatePart\n  | AttributeTemplatePart\n  | ElementTemplatePart\n  | CommentTemplatePart;\n\nexport type Part =\n  | ChildPart\n  | AttributePart\n  | PropertyPart\n  | BooleanAttributePart\n  | ElementPart\n  | EventPart;\n\nexport type {ChildPart};\nclass ChildPart implements Disconnectable {\n  readonly type = CHILD_PART;\n  readonly options: RenderOptions | undefined;\n  _$committedValue: unknown = nothing;\n  /** @internal */\n  __directive?: Directive;\n  /** @internal */\n  _$startNode: ChildNode;\n  /** @internal */\n  _$endNode: ChildNode | null;\n  private _textSanitizer: ValueSanitizer | undefined;\n  /** @internal */\n  _$parent: Disconnectable | undefined;\n  /**\n   * Connection state for RootParts only (i.e. ChildPart without _$parent\n   * returned from top-level `render`). This field is unsed otherwise. The\n   * intention would clearer if we made `RootPart` a subclass of `ChildPart`\n   * with this field (and a different _$isConnected getter), but the subclass\n   * caused a perf regression, possibly due to making call sites polymorphic.\n   * @internal\n   */\n  __isConnected: boolean;\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    // ChildParts that are not at the root should always be created with a\n    // parent; only RootChildNode's won't, so they return the local isConnected\n    // state\n    return this._$parent?._$isConnected ?? this.__isConnected;\n  }\n\n  // The following fields will be patched onto ChildParts when required by\n  // AsyncDirective\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n  /** @internal */\n  _$notifyConnectionChanged?(\n    isConnected: boolean,\n    removeFromParent?: boolean,\n    from?: number\n  ): void;\n  /** @internal */\n  _$reparentDisconnectables?(parent: Disconnectable): void;\n\n  constructor(\n    startNode: ChildNode,\n    endNode: ChildNode | null,\n    parent: TemplateInstance | ChildPart | undefined,\n    options: RenderOptions | undefined\n  ) {\n    this._$startNode = startNode;\n    this._$endNode = endNode;\n    this._$parent = parent;\n    this.options = options;\n    // Note __isConnected is only ever accessed on RootParts (i.e. when there is\n    // no _$parent); the value on a non-root-part is \"don't care\", but checking\n    // for parent would be more code\n    this.__isConnected = options?.isConnected ?? true;\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      // Explicitly initialize for consistent class shape.\n      this._textSanitizer = undefined;\n    }\n  }\n\n  /**\n   * The parent node into which the part renders its content.\n   *\n   * A ChildPart's content consists of a range of adjacent child nodes of\n   * `.parentNode`, possibly bordered by 'marker nodes' (`.startNode` and\n   * `.endNode`).\n   *\n   * - If both `.startNode` and `.endNode` are non-null, then the part's content\n   * consists of all siblings between `.startNode` and `.endNode`, exclusively.\n   *\n   * - If `.startNode` is non-null but `.endNode` is null, then the part's\n   * content consists of all siblings following `.startNode`, up to and\n   * including the last child of `.parentNode`. If `.endNode` is non-null, then\n   * `.startNode` will always be non-null.\n   *\n   * - If both `.endNode` and `.startNode` are null, then the part's content\n   * consists of all child nodes of `.parentNode`.\n   */\n  get parentNode(): Node {\n    let parentNode: Node = wrap(this._$startNode).parentNode!;\n    const parent = this._$parent;\n    if (\n      parent !== undefined &&\n      parentNode?.nodeType === 11 /* Node.DOCUMENT_FRAGMENT */\n    ) {\n      // If the parentNode is a DocumentFragment, it may be because the DOM is\n      // still in the cloned fragment during initial render; if so, get the real\n      // parentNode the part will be committed into by asking the parent.\n      parentNode = (parent as ChildPart | TemplateInstance).parentNode;\n    }\n    return parentNode;\n  }\n\n  /**\n   * The part's leading marker node, if any. See `.parentNode` for more\n   * information.\n   */\n  get startNode(): Node | null {\n    return this._$startNode;\n  }\n\n  /**\n   * The part's trailing marker node, if any. See `.parentNode` for more\n   * information.\n   */\n  get endNode(): Node | null {\n    return this._$endNode;\n  }\n\n  _$setValue(value: unknown, directiveParent: DirectiveParent = this): void {\n    if (DEV_MODE && this.parentNode === null) {\n      throw new Error(\n        `This \\`ChildPart\\` has no \\`parentNode\\` and therefore cannot accept a value. This likely means the element containing the part was manipulated in an unsupported way outside of Lit's control such that the part's marker nodes were ejected from DOM. For example, setting the element's \\`innerHTML\\` or \\`textContent\\` can do this.`\n      );\n    }\n    value = resolveDirective(this, value, directiveParent);\n    if (isPrimitive(value)) {\n      // Non-rendering child values. It's important that these do not render\n      // empty text nodes to avoid issues with preventing default <slot>\n      // fallback content.\n      if (value === nothing || value == null || value === '') {\n        if (this._$committedValue !== nothing) {\n          debugLogEvent?.({\n            kind: 'commit nothing to child',\n            start: this._$startNode,\n            end: this._$endNode,\n            parent: this._$parent,\n            options: this.options,\n          });\n          this._$clear();\n        }\n        this._$committedValue = nothing;\n      } else if (value !== this._$committedValue && value !== noChange) {\n        this._commitText(value);\n      }\n      // This property needs to remain unminified.\n    } else if ((value as TemplateResult)['_$litType$'] !== undefined) {\n      this._commitTemplateResult(value as TemplateResult);\n    } else if ((value as Node).nodeType !== undefined) {\n      if (DEV_MODE && this.options?.host === value) {\n        this._commitText(\n          `[probable mistake: rendered a template's host in itself ` +\n            `(commonly caused by writing \\${this} in a template]`\n        );\n        console.warn(\n          `Attempted to render the template host`,\n          value,\n          `inside itself. This is almost always a mistake, and in dev mode `,\n          `we render some warning text. In production however, we'll `,\n          `render it, which will usually result in an error, and sometimes `,\n          `in the element disappearing from the DOM.`\n        );\n        return;\n      }\n      this._commitNode(value as Node);\n    } else if (isIterable(value)) {\n      this._commitIterable(value);\n    } else {\n      // Fallback, will render the string representation\n      this._commitText(value);\n    }\n  }\n\n  private _insert<T extends Node>(node: T) {\n    return wrap(wrap(this._$startNode).parentNode!).insertBefore(\n      node,\n      this._$endNode\n    );\n  }\n\n  private _commitNode(value: Node): void {\n    if (this._$committedValue !== value) {\n      this._$clear();\n      if (\n        ENABLE_EXTRA_SECURITY_HOOKS &&\n        sanitizerFactoryInternal !== noopSanitizer\n      ) {\n        const parentNodeName = this._$startNode.parentNode?.nodeName;\n        if (parentNodeName === 'STYLE' || parentNodeName === 'SCRIPT') {\n          let message = 'Forbidden';\n          if (DEV_MODE) {\n            if (parentNodeName === 'STYLE') {\n              message =\n                `Lit does not support binding inside style nodes. ` +\n                `This is a security risk, as style injection attacks can ` +\n                `exfiltrate data and spoof UIs. ` +\n                `Consider instead using css\\`...\\` literals ` +\n                `to compose styles, and make do dynamic styling with ` +\n                `css custom properties, ::parts, <slot>s, ` +\n                `and by mutating the DOM rather than stylesheets.`;\n            } else {\n              message =\n                `Lit does not support binding inside script nodes. ` +\n                `This is a security risk, as it could allow arbitrary ` +\n                `code execution.`;\n            }\n          }\n          throw new Error(message);\n        }\n      }\n      debugLogEvent?.({\n        kind: 'commit node',\n        start: this._$startNode,\n        parent: this._$parent,\n        value: value,\n        options: this.options,\n      });\n      this._$committedValue = this._insert(value);\n    }\n  }\n\n  private _commitText(value: unknown): void {\n    // If the committed value is a primitive it means we called _commitText on\n    // the previous render, and we know that this._$startNode.nextSibling is a\n    // Text node. We can now just replace the text content (.data) of the node.\n    if (\n      this._$committedValue !== nothing &&\n      isPrimitive(this._$committedValue)\n    ) {\n      const node = wrap(this._$startNode).nextSibling as Text;\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        if (this._textSanitizer === undefined) {\n          this._textSanitizer = createSanitizer(node, 'data', 'property');\n        }\n        value = this._textSanitizer(value);\n      }\n      debugLogEvent?.({\n        kind: 'commit text',\n        node,\n        value,\n        options: this.options,\n      });\n      (node as Text).data = value as string;\n    } else {\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        const textNode = d.createTextNode('');\n        this._commitNode(textNode);\n        // When setting text content, for security purposes it matters a lot\n        // what the parent is. For example, <style> and <script> need to be\n        // handled with care, while <span> does not. So first we need to put a\n        // text node into the document, then we can sanitize its content.\n        if (this._textSanitizer === undefined) {\n          this._textSanitizer = createSanitizer(textNode, 'data', 'property');\n        }\n        value = this._textSanitizer(value);\n        debugLogEvent?.({\n          kind: 'commit text',\n          node: textNode,\n          value,\n          options: this.options,\n        });\n        textNode.data = value as string;\n      } else {\n        this._commitNode(d.createTextNode(value as string));\n        debugLogEvent?.({\n          kind: 'commit text',\n          node: wrap(this._$startNode).nextSibling as Text,\n          value,\n          options: this.options,\n        });\n      }\n    }\n    this._$committedValue = value;\n  }\n\n  private _commitTemplateResult(\n    result: TemplateResult | CompiledTemplateResult\n  ): void {\n    // This property needs to remain unminified.\n    const {values, ['_$litType$']: type} = result;\n    // If $litType$ is a number, result is a plain TemplateResult and we get\n    // the template from the template cache. If not, result is a\n    // CompiledTemplateResult and _$litType$ is a CompiledTemplate and we need\n    // to create the <template> element the first time we see it.\n    const template: Template | CompiledTemplate =\n      typeof type === 'number'\n        ? this._$getTemplate(result as TemplateResult)\n        : (type.el === undefined &&\n            (type.el = Template.createElement(\n              trustFromTemplateString(type.h, type.h[0]),\n              this.options\n            )),\n          type);\n\n    if ((this._$committedValue as TemplateInstance)?._$template === template) {\n      debugLogEvent?.({\n        kind: 'template updating',\n        template,\n        instance: this._$committedValue as TemplateInstance,\n        parts: (this._$committedValue as TemplateInstance)._$parts,\n        options: this.options,\n        values,\n      });\n      (this._$committedValue as TemplateInstance)._update(values);\n    } else {\n      const instance = new TemplateInstance(template as Template, this);\n      const fragment = instance._clone(this.options);\n      debugLogEvent?.({\n        kind: 'template instantiated',\n        template,\n        instance,\n        parts: instance._$parts,\n        options: this.options,\n        fragment,\n        values,\n      });\n      instance._update(values);\n      debugLogEvent?.({\n        kind: 'template instantiated and updated',\n        template,\n        instance,\n        parts: instance._$parts,\n        options: this.options,\n        fragment,\n        values,\n      });\n      this._commitNode(fragment);\n      this._$committedValue = instance;\n    }\n  }\n\n  // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n  /** @internal */\n  _$getTemplate(result: TemplateResult) {\n    let template = templateCache.get(result.strings);\n    if (template === undefined) {\n      templateCache.set(result.strings, (template = new Template(result)));\n    }\n    return template;\n  }\n\n  private _commitIterable(value: Iterable<unknown>): void {\n    // For an Iterable, we create a new InstancePart per item, then set its\n    // value to the item. This is a little bit of overhead for every item in\n    // an Iterable, but it lets us recurse easily and efficiently update Arrays\n    // of TemplateResults that will be commonly returned from expressions like:\n    // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n\n    // If value is an array, then the previous render was of an\n    // iterable and value will contain the ChildParts from the previous\n    // render. If value is not an array, clear this part and make a new\n    // array for ChildParts.\n    if (!isArray(this._$committedValue)) {\n      this._$committedValue = [];\n      this._$clear();\n    }\n\n    // Lets us keep track of how many items we stamped so we can clear leftover\n    // items from a previous render\n    const itemParts = this._$committedValue as ChildPart[];\n    let partIndex = 0;\n    let itemPart: ChildPart | undefined;\n\n    for (const item of value) {\n      if (partIndex === itemParts.length) {\n        // If no existing part, create a new one\n        // TODO (justinfagnani): test perf impact of always creating two parts\n        // instead of sharing parts between nodes\n        // https://github.com/lit/lit/issues/1266\n        itemParts.push(\n          (itemPart = new ChildPart(\n            this._insert(createMarker()),\n            this._insert(createMarker()),\n            this,\n            this.options\n          ))\n        );\n      } else {\n        // Reuse an existing part\n        itemPart = itemParts[partIndex];\n      }\n      itemPart._$setValue(item);\n      partIndex++;\n    }\n\n    if (partIndex < itemParts.length) {\n      // itemParts always have end nodes\n      this._$clear(\n        itemPart && wrap(itemPart._$endNode!).nextSibling,\n        partIndex\n      );\n      // Truncate the parts array so _value reflects the current state\n      itemParts.length = partIndex;\n    }\n  }\n\n  /**\n   * Removes the nodes contained within this Part from the DOM.\n   *\n   * @param start Start node to clear from, for clearing a subset of the part's\n   *     DOM (used when truncating iterables)\n   * @param from  When `start` is specified, the index within the iterable from\n   *     which ChildParts are being removed, used for disconnecting directives in\n   *     those Parts.\n   *\n   * @internal\n   */\n  _$clear(\n    start: ChildNode | null = wrap(this._$startNode).nextSibling,\n    from?: number\n  ) {\n    this._$notifyConnectionChanged?.(false, true, from);\n    while (start && start !== this._$endNode) {\n      const n = wrap(start!).nextSibling;\n      (wrap(start!) as Element).remove();\n      start = n;\n    }\n  }\n  /**\n   * Implementation of RootPart's `isConnected`. Note that this metod\n   * should only be called on `RootPart`s (the `ChildPart` returned from a\n   * top-level `render()` call). It has no effect on non-root ChildParts.\n   * @param isConnected Whether to set\n   * @internal\n   */\n  setConnected(isConnected: boolean) {\n    if (this._$parent === undefined) {\n      this.__isConnected = isConnected;\n      this._$notifyConnectionChanged?.(isConnected);\n    } else if (DEV_MODE) {\n      throw new Error(\n        'part.setConnected() may only be called on a ' +\n          'RootPart returned from render().'\n      );\n    }\n  }\n}\n\n/**\n * A top-level `ChildPart` returned from `render` that manages the connected\n * state of `AsyncDirective`s created throughout the tree below it.\n */\nexport interface RootPart extends ChildPart {\n  /**\n   * Sets the connection state for `AsyncDirective`s contained within this root\n   * ChildPart.\n   *\n   * lit-html does not automatically monitor the connectedness of DOM rendered;\n   * as such, it is the responsibility of the caller to `render` to ensure that\n   * `part.setConnected(false)` is called before the part object is potentially\n   * discarded, to ensure that `AsyncDirective`s have a chance to dispose of\n   * any resources being held. If a `RootPart` that was previously\n   * disconnected is subsequently re-connected (and its `AsyncDirective`s should\n   * re-connect), `setConnected(true)` should be called.\n   *\n   * @param isConnected Whether directives within this tree should be connected\n   * or not\n   */\n  setConnected(isConnected: boolean): void;\n}\n\nexport type {AttributePart};\nclass AttributePart implements Disconnectable {\n  readonly type = ATTRIBUTE_PART as\n    | typeof ATTRIBUTE_PART\n    | typeof PROPERTY_PART\n    | typeof BOOLEAN_ATTRIBUTE_PART\n    | typeof EVENT_PART;\n  readonly element: HTMLElement;\n  readonly name: string;\n  readonly options: RenderOptions | undefined;\n\n  /**\n   * If this attribute part represents an interpolation, this contains the\n   * static strings of the interpolation. For single-value, complete bindings,\n   * this is undefined.\n   */\n  readonly strings?: ReadonlyArray<string>;\n  /** @internal */\n  _$committedValue: unknown | Array<unknown> = nothing;\n  /** @internal */\n  __directives?: Array<Directive | undefined>;\n  /** @internal */\n  _$parent: Disconnectable;\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  protected _sanitizer: ValueSanitizer | undefined;\n\n  get tagName() {\n    return this.element.tagName;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  constructor(\n    element: HTMLElement,\n    name: string,\n    strings: ReadonlyArray<string>,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    this.element = element;\n    this.name = name;\n    this._$parent = parent;\n    this.options = options;\n    if (strings.length > 2 || strings[0] !== '' || strings[1] !== '') {\n      this._$committedValue = new Array(strings.length - 1).fill(new String());\n      this.strings = strings;\n    } else {\n      this._$committedValue = nothing;\n    }\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      this._sanitizer = undefined;\n    }\n  }\n\n  /**\n   * Sets the value of this part by resolving the value from possibly multiple\n   * values and static strings and committing it to the DOM.\n   * If this part is single-valued, `this._strings` will be undefined, and the\n   * method will be called with a single value argument. If this part is\n   * multi-value, `this._strings` will be defined, and the method is called\n   * with the value array of the part's owning TemplateInstance, and an offset\n   * into the value array from which the values should be read.\n   * This method is overloaded this way to eliminate short-lived array slices\n   * of the template instance values, and allow a fast-path for single-valued\n   * parts.\n   *\n   * @param value The part value, or an array of values for multi-valued parts\n   * @param valueIndex the index to start reading values from. `undefined` for\n   *   single-valued parts\n   * @param noCommit causes the part to not commit its value to the DOM. Used\n   *   in hydration to prime attribute parts with their first-rendered value,\n   *   but not set the attribute, and in SSR to no-op the DOM operation and\n   *   capture the value for serialization.\n   *\n   * @internal\n   */\n  _$setValue(\n    value: unknown | Array<unknown>,\n    directiveParent: DirectiveParent = this,\n    valueIndex?: number,\n    noCommit?: boolean\n  ) {\n    const strings = this.strings;\n\n    // Whether any of the values has changed, for dirty-checking\n    let change = false;\n\n    if (strings === undefined) {\n      // Single-value binding case\n      value = resolveDirective(this, value, directiveParent, 0);\n      change =\n        !isPrimitive(value) ||\n        (value !== this._$committedValue && value !== noChange);\n      if (change) {\n        this._$committedValue = value;\n      }\n    } else {\n      // Interpolation case\n      const values = value as Array<unknown>;\n      value = strings[0];\n\n      let i, v;\n      for (i = 0; i < strings.length - 1; i++) {\n        v = resolveDirective(this, values[valueIndex! + i], directiveParent, i);\n\n        if (v === noChange) {\n          // If the user-provided value is `noChange`, use the previous value\n          v = (this._$committedValue as Array<unknown>)[i];\n        }\n        change ||=\n          !isPrimitive(v) || v !== (this._$committedValue as Array<unknown>)[i];\n        if (v === nothing) {\n          value = nothing;\n        } else if (value !== nothing) {\n          value += (v ?? '') + strings[i + 1];\n        }\n        // We always record each value, even if one is `nothing`, for future\n        // change detection.\n        (this._$committedValue as Array<unknown>)[i] = v;\n      }\n    }\n    if (change && !noCommit) {\n      this._commitValue(value);\n    }\n  }\n\n  /** @internal */\n  _commitValue(value: unknown) {\n    if (value === nothing) {\n      (wrap(this.element) as Element).removeAttribute(this.name);\n    } else {\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        if (this._sanitizer === undefined) {\n          this._sanitizer = sanitizerFactoryInternal(\n            this.element,\n            this.name,\n            'attribute'\n          );\n        }\n        value = this._sanitizer(value ?? '');\n      }\n      debugLogEvent?.({\n        kind: 'commit attribute',\n        element: this.element,\n        name: this.name,\n        value,\n        options: this.options,\n      });\n      (wrap(this.element) as Element).setAttribute(\n        this.name,\n        (value ?? '') as string\n      );\n    }\n  }\n}\n\nexport type {PropertyPart};\nclass PropertyPart extends AttributePart {\n  override readonly type = PROPERTY_PART;\n\n  /** @internal */\n  override _commitValue(value: unknown) {\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      if (this._sanitizer === undefined) {\n        this._sanitizer = sanitizerFactoryInternal(\n          this.element,\n          this.name,\n          'property'\n        );\n      }\n      value = this._sanitizer(value);\n    }\n    debugLogEvent?.({\n      kind: 'commit property',\n      element: this.element,\n      name: this.name,\n      value,\n      options: this.options,\n    });\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (this.element as any)[this.name] = value === nothing ? undefined : value;\n  }\n}\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n  ? (trustedTypes.emptyScript as unknown as '')\n  : '';\n\nexport type {BooleanAttributePart};\nclass BooleanAttributePart extends AttributePart {\n  override readonly type = BOOLEAN_ATTRIBUTE_PART;\n\n  /** @internal */\n  override _commitValue(value: unknown) {\n    debugLogEvent?.({\n      kind: 'commit boolean attribute',\n      element: this.element,\n      name: this.name,\n      value: !!(value && value !== nothing),\n      options: this.options,\n    });\n    if (value && value !== nothing) {\n      (wrap(this.element) as Element).setAttribute(\n        this.name,\n        emptyStringForBooleanAttribute\n      );\n    } else {\n      (wrap(this.element) as Element).removeAttribute(this.name);\n    }\n  }\n}\n\ntype EventListenerWithOptions = EventListenerOrEventListenerObject &\n  Partial<AddEventListenerOptions>;\n\n/**\n * An AttributePart that manages an event listener via add/removeEventListener.\n *\n * This part works by adding itself as the event listener on an element, then\n * delegating to the value passed to it. This reduces the number of calls to\n * add/removeEventListener if the listener changes frequently, such as when an\n * inline function is used as a listener.\n *\n * Because event options are passed when adding listeners, we must take case\n * to add and remove the part as a listener when the event options change.\n */\nexport type {EventPart};\nclass EventPart extends AttributePart {\n  override readonly type = EVENT_PART;\n\n  constructor(\n    element: HTMLElement,\n    name: string,\n    strings: ReadonlyArray<string>,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    super(element, name, strings, parent, options);\n\n    if (DEV_MODE && this.strings !== undefined) {\n      throw new Error(\n        `A \\`<${element.localName}>\\` has a \\`@${name}=...\\` listener with ` +\n          'invalid content. Event listeners in templates must have exactly ' +\n          'one expression and no surrounding text.'\n      );\n    }\n  }\n\n  // EventPart does not use the base _$setValue/_resolveValue implementation\n  // since the dirty checking is more complex\n  /** @internal */\n  override _$setValue(\n    newListener: unknown,\n    directiveParent: DirectiveParent = this\n  ) {\n    newListener =\n      resolveDirective(this, newListener, directiveParent, 0) ?? nothing;\n    if (newListener === noChange) {\n      return;\n    }\n    const oldListener = this._$committedValue;\n\n    // If the new value is nothing or any options change we have to remove the\n    // part as a listener.\n    const shouldRemoveListener =\n      (newListener === nothing && oldListener !== nothing) ||\n      (newListener as EventListenerWithOptions).capture !==\n        (oldListener as EventListenerWithOptions).capture ||\n      (newListener as EventListenerWithOptions).once !==\n        (oldListener as EventListenerWithOptions).once ||\n      (newListener as EventListenerWithOptions).passive !==\n        (oldListener as EventListenerWithOptions).passive;\n\n    // If the new value is not nothing and we removed the listener, we have\n    // to add the part as a listener.\n    const shouldAddListener =\n      newListener !== nothing &&\n      (oldListener === nothing || shouldRemoveListener);\n\n    debugLogEvent?.({\n      kind: 'commit event listener',\n      element: this.element,\n      name: this.name,\n      value: newListener,\n      options: this.options,\n      removeListener: shouldRemoveListener,\n      addListener: shouldAddListener,\n      oldListener,\n    });\n    if (shouldRemoveListener) {\n      this.element.removeEventListener(\n        this.name,\n        this,\n        oldListener as EventListenerWithOptions\n      );\n    }\n    if (shouldAddListener) {\n      // Beware: IE11 and Chrome 41 don't like using the listener as the\n      // options object. Figure out how to deal w/ this in IE11 - maybe\n      // patch addEventListener?\n      this.element.addEventListener(\n        this.name,\n        this,\n        newListener as EventListenerWithOptions\n      );\n    }\n    this._$committedValue = newListener;\n  }\n\n  handleEvent(event: Event) {\n    if (typeof this._$committedValue === 'function') {\n      this._$committedValue.call(this.options?.host ?? this.element, event);\n    } else {\n      (this._$committedValue as EventListenerObject).handleEvent(event);\n    }\n  }\n}\n\nexport type {ElementPart};\nclass ElementPart implements Disconnectable {\n  readonly type = ELEMENT_PART;\n\n  /** @internal */\n  __directive?: Directive;\n\n  // This is to ensure that every Part has a _$committedValue\n  _$committedValue: undefined;\n\n  /** @internal */\n  _$parent!: Disconnectable;\n\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  options: RenderOptions | undefined;\n\n  constructor(\n    public element: Element,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    this._$parent = parent;\n    this.options = options;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  _$setValue(value: unknown): void {\n    debugLogEvent?.({\n      kind: 'commit to element binding',\n      element: this.element,\n      value,\n      options: this.options,\n    });\n    resolveDirective(this, value);\n  }\n}\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports  mangled in the\n * client side code, we export a _$LH object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-element, which re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LH = {\n  // Used in lit-ssr\n  _boundAttributeSuffix: boundAttributeSuffix,\n  _marker: marker,\n  _markerMatch: markerMatch,\n  _HTML_RESULT: HTML_RESULT,\n  _getTemplateHtml: getTemplateHtml,\n  // Used in tests and private-ssr-support\n  _TemplateInstance: TemplateInstance,\n  _isIterable: isIterable,\n  _resolveDirective: resolveDirective,\n  _ChildPart: ChildPart,\n  _AttributePart: AttributePart,\n  _BooleanAttributePart: BooleanAttributePart,\n  _EventPart: EventPart,\n  _PropertyPart: PropertyPart,\n  _ElementPart: ElementPart,\n};\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n  ? global.litHtmlPolyfillSupportDevMode\n  : global.litHtmlPolyfillSupport;\npolyfillSupport?.(Template, ChildPart);\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n(global.litHtmlVersions ??= []).push('2.8.0');\nif (DEV_MODE && global.litHtmlVersions.length > 1) {\n  issueWarning!(\n    'multiple-versions',\n    `Multiple versions of Lit loaded. ` +\n      `Loading multiple versions is not recommended.`\n  );\n}\n\n/**\n * Renders a value, usually a lit-html TemplateResult, to the container.\n *\n * This example renders the text \"Hello, Zoe!\" inside a paragraph tag, appending\n * it to the container `document.body`.\n *\n * ```js\n * import {html, render} from 'lit';\n *\n * const name = \"Zoe\";\n * render(html`<p>Hello, ${name}!</p>`, document.body);\n * ```\n *\n * @param value Any [renderable\n *   value](https://lit.dev/docs/templates/expressions/#child-expressions),\n *   typically a {@linkcode TemplateResult} created by evaluating a template tag\n *   like {@linkcode html} or {@linkcode svg}.\n * @param container A DOM container to render to. The first render will append\n *   the rendered value to the container, and subsequent renders will\n *   efficiently update the rendered value if the same result type was\n *   previously rendered there.\n * @param options See {@linkcode RenderOptions} for options documentation.\n * @see\n * {@link https://lit.dev/docs/libraries/standalone-templates/#rendering-lit-html-templates| Rendering Lit HTML Templates}\n */\nexport const render = (\n  value: unknown,\n  container: HTMLElement | DocumentFragment,\n  options?: RenderOptions\n): RootPart => {\n  if (DEV_MODE && container == null) {\n    // Give a clearer error message than\n    //     Uncaught TypeError: Cannot read properties of null (reading\n    //     '_$litPart$')\n    // which reads like an internal Lit error.\n    throw new TypeError(`The container to render into may not be ${container}`);\n  }\n  const renderId = DEV_MODE ? debugLogRenderId++ : 0;\n  const partOwnerNode = options?.renderBefore ?? container;\n  // This property needs to remain unminified.\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let part: ChildPart = (partOwnerNode as any)['_$litPart$'];\n  debugLogEvent?.({\n    kind: 'begin render',\n    id: renderId,\n    value,\n    container,\n    options,\n    part,\n  });\n  if (part === undefined) {\n    const endNode = options?.renderBefore ?? null;\n    // This property needs to remain unminified.\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (partOwnerNode as any)['_$litPart$'] = part = new ChildPart(\n      container.insertBefore(createMarker(), endNode),\n      endNode,\n      undefined,\n      options ?? {}\n    );\n  }\n  part._$setValue(value);\n  debugLogEvent?.({\n    kind: 'end render',\n    id: renderId,\n    value,\n    container,\n    options,\n    part,\n  });\n  return part as RootPart;\n};\n\nif (ENABLE_EXTRA_SECURITY_HOOKS) {\n  render.setSanitizer = setSanitizer;\n  render.createSanitizer = createSanitizer;\n  if (DEV_MODE) {\n    render._testOnlyClearSanitizerFactoryDoNotCallOrElse =\n      _testOnlyClearSanitizerFactoryDoNotCallOrElse;\n  }\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * The main LitElement module, which defines the {@linkcode LitElement} base\n * class and related APIs.\n *\n *  LitElement components can define a template and a set of observed\n * properties. Changing an observed property triggers a re-render of the\n * element.\n *\n *  Import {@linkcode LitElement} and {@linkcode html} from this module to\n * create a component:\n *\n *  ```js\n * import {LitElement, html} from 'lit-element';\n *\n * class MyElement extends LitElement {\n *\n *   // Declare observed properties\n *   static get properties() {\n *     return {\n *       adjective: {}\n *     }\n *   }\n *\n *   constructor() {\n *     this.adjective = 'awesome';\n *   }\n *\n *   // Define the element's template\n *   render() {\n *     return html`<p>your ${adjective} template here</p>`;\n *   }\n * }\n *\n * customElements.define('my-element', MyElement);\n * ```\n *\n * `LitElement` extends {@linkcode ReactiveElement} and adds lit-html\n * templating. The `ReactiveElement` class is provided for users that want to\n * build their own custom element base classes that don't use lit-html.\n *\n * @packageDocumentation\n */\nimport {PropertyValues, ReactiveElement} from '@lit/reactive-element';\nimport {render, RenderOptions, noChange, RootPart} from 'lit-html';\nexport * from '@lit/reactive-element';\nexport * from 'lit-html';\n\nimport {LitUnstable} from 'lit-html';\nimport {ReactiveUnstable} from '@lit/reactive-element';\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Unstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry =\n      | LitUnstable.DebugLog.Entry\n      | ReactiveUnstable.DebugLog.Entry;\n  }\n}\n\n// For backwards compatibility export ReactiveElement as UpdatingElement. Note,\n// IE transpilation requires exporting like this.\nexport const UpdatingElement = ReactiveElement;\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  const issuedWarnings: Set<string | undefined> =\n    (globalThis.litIssuedWarnings ??= new Set());\n\n  // Issue a warning, if we haven't already.\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (!issuedWarnings.has(warning)) {\n      console.warn(warning);\n      issuedWarnings.add(warning);\n    }\n  };\n}\n\n/**\n * Base element class that manages element properties and attributes, and\n * renders a lit-html template.\n *\n * To define a component, subclass `LitElement` and implement a\n * `render` method to provide the component's template. Define properties\n * using the {@linkcode LitElement.properties properties} property or the\n * {@linkcode property} decorator.\n */\nexport class LitElement extends ReactiveElement {\n  /**\n   * Ensure this class is marked as `finalized` as an optimization ensuring\n   * it will not needlessly try to `finalize`.\n   *\n   * Note this property name is a string to prevent breaking Closure JS Compiler\n   * optimizations. See @lit/reactive-element for more information.\n   */\n  protected static override ['finalized'] = true;\n\n  // This property needs to remain unminified.\n  static ['_$litElement$'] = true;\n\n  /**\n   * @category rendering\n   */\n  readonly renderOptions: RenderOptions = {host: this};\n\n  private __childPart: RootPart | undefined = undefined;\n\n  /**\n   * @category rendering\n   */\n  protected override createRenderRoot() {\n    const renderRoot = super.createRenderRoot();\n    // When adoptedStyleSheets are shimmed, they are inserted into the\n    // shadowRoot by createRenderRoot. Adjust the renderBefore node so that\n    // any styles in Lit content render before adoptedStyleSheets. This is\n    // important so that adoptedStyleSheets have precedence over styles in\n    // the shadowRoot.\n    this.renderOptions.renderBefore ??= renderRoot!.firstChild as ChildNode;\n    return renderRoot;\n  }\n\n  /**\n   * Updates the element. This method reflects property values to attributes\n   * and calls `render` to render DOM via lit-html. Setting properties inside\n   * this method will *not* trigger another update.\n   * @param changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected override update(changedProperties: PropertyValues) {\n    // Setting properties in `render` should not trigger an update. Since\n    // updates are allowed after super.update, it's important to call `render`\n    // before that.\n    const value = this.render();\n    if (!this.hasUpdated) {\n      this.renderOptions.isConnected = this.isConnected;\n    }\n    super.update(changedProperties);\n    this.__childPart = render(value, this.renderRoot, this.renderOptions);\n  }\n\n  /**\n   * Invoked when the component is added to the document's DOM.\n   *\n   * In `connectedCallback()` you should setup tasks that should only occur when\n   * the element is connected to the document. The most common of these is\n   * adding event listeners to nodes external to the element, like a keydown\n   * event handler added to the window.\n   *\n   * ```ts\n   * connectedCallback() {\n   *   super.connectedCallback();\n   *   addEventListener('keydown', this._handleKeydown);\n   * }\n   * ```\n   *\n   * Typically, anything done in `connectedCallback()` should be undone when the\n   * element is disconnected, in `disconnectedCallback()`.\n   *\n   * @category lifecycle\n   */\n  override connectedCallback() {\n    super.connectedCallback();\n    this.__childPart?.setConnected(true);\n  }\n\n  /**\n   * Invoked when the component is removed from the document's DOM.\n   *\n   * This callback is the main signal to the element that it may no longer be\n   * used. `disconnectedCallback()` should ensure that nothing is holding a\n   * reference to the element (such as event listeners added to nodes external\n   * to the element), so that it is free to be garbage collected.\n   *\n   * ```ts\n   * disconnectedCallback() {\n   *   super.disconnectedCallback();\n   *   window.removeEventListener('keydown', this._handleKeydown);\n   * }\n   * ```\n   *\n   * An element may be re-connected after being disconnected.\n   *\n   * @category lifecycle\n   */\n  override disconnectedCallback() {\n    super.disconnectedCallback();\n    this.__childPart?.setConnected(false);\n  }\n\n  /**\n   * Invoked on each update to perform rendering tasks. This method may return\n   * any value renderable by lit-html's `ChildPart` - typically a\n   * `TemplateResult`. Setting properties inside this method will *not* trigger\n   * the element to update.\n   * @category rendering\n   */\n  protected render(): unknown {\n    return noChange;\n  }\n}\n\n// Install hydration if available\nglobalThis.litElementHydrateSupport?.({LitElement});\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n  ? globalThis.litElementPolyfillSupportDevMode\n  : globalThis.litElementPolyfillSupport;\npolyfillSupport?.({LitElement});\n\n// DEV mode warnings\nif (DEV_MODE) {\n  /* eslint-disable @typescript-eslint/no-explicit-any */\n  // Note, for compatibility with closure compilation, this access\n  // needs to be as a string property index.\n  (LitElement as any)['finalize'] = function (this: typeof LitElement) {\n    const finalized = (ReactiveElement as any).finalize.call(this);\n    if (!finalized) {\n      return false;\n    }\n    const warnRemovedOrRenamed = (obj: any, name: string, renamed = false) => {\n      if (obj.hasOwnProperty(name)) {\n        const ctorName = (typeof obj === 'function' ? obj : obj.constructor)\n          .name;\n        issueWarning(\n          renamed ? 'renamed-api' : 'removed-api',\n          `\\`${name}\\` is implemented on class ${ctorName}. It ` +\n            `has been ${renamed ? 'renamed' : 'removed'} ` +\n            `in this version of LitElement.`\n        );\n      }\n    };\n    warnRemovedOrRenamed(this, 'render');\n    warnRemovedOrRenamed(this, 'getStyles', true);\n    warnRemovedOrRenamed((this as typeof LitElement).prototype, 'adoptStyles');\n    return true;\n  };\n  /* eslint-enable @typescript-eslint/no-explicit-any */\n}\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports  mangled in the\n * client side code, we export a _$LE object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-html, since this module re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LE = {\n  _$attributeToProperty: (\n    el: LitElement,\n    name: string,\n    value: string | null\n  ) => {\n    // eslint-disable-next-line\n    (el as any)._$attributeToProperty(name, value);\n  },\n  // eslint-disable-next-line\n  _$changedProperties: (el: LitElement) => (el as any)._$changedProperties,\n};\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for LitElement usage.\n(globalThis.litElementVersions ??= []).push('3.3.3');\nif (DEV_MODE && globalThis.litElementVersions.length > 1) {\n  issueWarning!(\n    'multiple-versions',\n    `Multiple versions of Lit loaded. Loading multiple versions ` +\n      `is not recommended.`\n  );\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\nimport {Constructor, ClassDescriptor} from './base.js';\n\n/**\n * Allow for custom element classes with private constructors\n */\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\nconst legacyCustomElement = (tagName: string, clazz: CustomElementClass) => {\n  customElements.define(tagName, clazz as CustomElementConstructor);\n  // Cast as any because TS doesn't recognize the return type as being a\n  // subtype of the decorated class when clazz is typed as\n  // `Constructor<HTMLElement>` for some reason.\n  // `Constructor<HTMLElement>` is helpful to make sure the decorator is\n  // applied to elements however.\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return clazz as any;\n};\n\nconst standardCustomElement = (\n  tagName: string,\n  descriptor: ClassDescriptor\n) => {\n  const {kind, elements} = descriptor;\n  return {\n    kind,\n    elements,\n    // This callback is called once the class is otherwise fully defined\n    finisher(clazz: Constructor<HTMLElement>) {\n      customElements.define(tagName, clazz);\n    },\n  };\n};\n\n/**\n * Class decorator factory that defines the decorated class as a custom element.\n *\n * ```js\n * @customElement('my-element')\n * class MyElement extends LitElement {\n *   render() {\n *     return html``;\n *   }\n * }\n * ```\n * @category Decorator\n * @param tagName The tag name of the custom element to define.\n */\nexport const customElement =\n  (tagName: string) =>\n  (classOrDescriptor: CustomElementClass | ClassDescriptor) =>\n    typeof classOrDescriptor === 'function'\n      ? legacyCustomElement(tagName, classOrDescriptor)\n      : standardCustomElement(tagName, classOrDescriptor as ClassDescriptor);\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\nimport {PropertyDeclaration, ReactiveElement} from '../reactive-element.js';\nimport {ClassElement} from './base.js';\n\nconst standardProperty = (\n  options: PropertyDeclaration,\n  element: ClassElement\n) => {\n  // When decorating an accessor, pass it through and add property metadata.\n  // Note, the `hasOwnProperty` check in `createProperty` ensures we don't\n  // stomp over the user's accessor.\n  if (\n    element.kind === 'method' &&\n    element.descriptor &&\n    !('value' in element.descriptor)\n  ) {\n    return {\n      ...element,\n      finisher(clazz: typeof ReactiveElement) {\n        clazz.createProperty(element.key, options);\n      },\n    };\n  } else {\n    // createProperty() takes care of defining the property, but we still\n    // must return some kind of descriptor, so return a descriptor for an\n    // unused prototype field. The finisher calls createProperty().\n    return {\n      kind: 'field',\n      key: Symbol(),\n      placement: 'own',\n      descriptor: {},\n      // store the original key so subsequent decorators have access to it.\n      originalKey: element.key,\n      // When @babel/plugin-proposal-decorators implements initializers,\n      // do this instead of the initializer below. See:\n      // https://github.com/babel/babel/issues/9260 extras: [\n      //   {\n      //     kind: 'initializer',\n      //     placement: 'own',\n      //     initializer: descriptor.initializer,\n      //   }\n      // ],\n      initializer(this: {[key: string]: unknown}) {\n        if (typeof element.initializer === 'function') {\n          this[element.key as string] = element.initializer.call(this);\n        }\n      },\n      finisher(clazz: typeof ReactiveElement) {\n        clazz.createProperty(element.key, options);\n      },\n    };\n  }\n};\n\nconst legacyProperty = (\n  options: PropertyDeclaration,\n  proto: Object,\n  name: PropertyKey\n) => {\n  (proto.constructor as typeof ReactiveElement).createProperty(name, options);\n};\n\n/**\n * A property decorator which creates a reactive property that reflects a\n * corresponding attribute value. When a decorated property is set\n * the element will update and render. A {@linkcode PropertyDeclaration} may\n * optionally be supplied to configure property features.\n *\n * This decorator should only be used for public fields. As public fields,\n * properties should be considered as primarily settable by element users,\n * either via attribute or the property itself.\n *\n * Generally, properties that are changed by the element should be private or\n * protected fields and should use the {@linkcode state} decorator.\n *\n * However, sometimes element code does need to set a public property. This\n * should typically only be done in response to user interaction, and an event\n * should be fired informing the user; for example, a checkbox sets its\n * `checked` property when clicked and fires a `changed` event. Mutating public\n * properties should typically not be done for non-primitive (object or array)\n * properties. In other cases when an element needs to manage state, a private\n * property decorated via the {@linkcode state} decorator should be used. When\n * needed, state properties can be initialized via public properties to\n * facilitate complex interactions.\n *\n * ```ts\n * class MyElement {\n *   @property({ type: Boolean })\n *   clicked = false;\n * }\n * ```\n * @category Decorator\n * @ExportDecoratedItems\n */\nexport function property(options?: PropertyDeclaration) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return (protoOrDescriptor: Object | ClassElement, name?: PropertyKey): any =>\n    name !== undefined\n      ? legacyProperty(options!, protoOrDescriptor as Object, name)\n      : standardProperty(options!, protoOrDescriptor as ClassElement);\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {property} from './property.js';\n\nexport interface InternalPropertyDeclaration<Type = unknown> {\n  /**\n   * A function that indicates if a property should be considered changed when\n   * it is set. The function should take the `newValue` and `oldValue` and\n   * return `true` if an update should be requested.\n   */\n  hasChanged?(value: Type, oldValue: Type): boolean;\n}\n\n/**\n * Declares a private or protected reactive property that still triggers\n * updates to the element when it changes. It does not reflect from the\n * corresponding attribute.\n *\n * Properties declared this way must not be used from HTML or HTML templating\n * systems, they're solely for properties internal to the element. These\n * properties may be renamed by optimization tools like closure compiler.\n * @category Decorator\n */\nexport function state(options?: InternalPropertyDeclaration) {\n  return property({\n    ...options,\n    state: true,\n  });\n}\n", "/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {decorateProperty} from './base.js';\n\nimport type {ReactiveElement} from '../reactive-element.js';\nimport type {QueryAssignedNodesOptions} from './query-assigned-nodes.js';\n\nconst NODE_MODE = false;\nconst global = NODE_MODE ? globalThis : window;\n\n/**\n * A tiny module scoped polyfill for HTMLSlotElement.assignedElements.\n */\nconst slotAssignedElements =\n  global.HTMLSlotElement?.prototype.assignedElements != null\n    ? (slot: HTMLSlotElement, opts?: AssignedNodesOptions) =>\n        slot.assignedElements(opts)\n    : (slot: HTMLSlotElement, opts?: AssignedNodesOptions) =>\n        slot\n          .assignedNodes(opts)\n          .filter(\n            (node): node is Element => node.nodeType === Node.ELEMENT_NODE\n          );\n\n/**\n * Options for the {@linkcode queryAssignedElements} decorator. Extends the\n * options that can be passed into\n * [HTMLSlotElement.assignedElements](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement/assignedElements).\n */\nexport interface QueryAssignedElementsOptions\n  extends QueryAssignedNodesOptions {\n  /**\n   * CSS selector used to filter the elements returned. For example, a selector\n   * of `\".item\"` will only include elements with the `item` class.\n   */\n  selector?: string;\n}\n\n/**\n * A property decorator that converts a class property into a getter that\n * returns the `assignedElements` of the given `slot`. Provides a declarative\n * way to use\n * [`HTMLSlotElement.assignedElements`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement/assignedElements).\n *\n * Can be passed an optional {@linkcode QueryAssignedElementsOptions} object.\n *\n * Example usage:\n * ```ts\n * class MyElement {\n *   @queryAssignedElements({ slot: 'list' })\n *   listItems!: Array<HTMLElement>;\n *   @queryAssignedElements()\n *   unnamedSlotEls!: Array<HTMLElement>;\n *\n *   render() {\n *     return html`\n *       <slot name=\"list\"></slot>\n *       <slot></slot>\n *     `;\n *   }\n * }\n * ```\n *\n * Note, the type of this property should be annotated as `Array<HTMLElement>`.\n *\n * @category Decorator\n */\nexport function queryAssignedElements(options?: QueryAssignedElementsOptions) {\n  const {slot, selector} = options ?? {};\n  return decorateProperty({\n    descriptor: (_name: PropertyKey) => ({\n      get(this: ReactiveElement) {\n        const slotSelector = `slot${slot ? `[name=${slot}]` : ':not([name])'}`;\n        const slotEl =\n          this.renderRoot?.querySelector<HTMLSlotElement>(slotSelector);\n        const elements =\n          slotEl != null ? slotAssignedElements(slotEl, options) : [];\n        if (selector) {\n          return elements.filter((node) => node.matches(selector));\n        }\n        return elements;\n      },\n      enumerable: true,\n      configurable: true,\n    }),\n  });\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {Disconnectable, Part} from './lit-html.js';\n\nexport {\n  AttributePart,\n  BooleanAttributePart,\n  ChildPart,\n  ElementPart,\n  EventPart,\n  Part,\n  PropertyPart,\n} from './lit-html.js';\n\nexport interface DirectiveClass {\n  new (part: PartInfo): Directive;\n}\n\n/**\n * This utility type extracts the signature of a directive class's render()\n * method so we can use it for the type of the generated directive function.\n */\nexport type DirectiveParameters<C extends Directive> = Parameters<C['render']>;\n\n/**\n * A generated directive function doesn't evaluate the directive, but just\n * returns a DirectiveResult object that captures the arguments.\n */\nexport interface DirectiveResult<C extends DirectiveClass = DirectiveClass> {\n  /**\n   * This property needs to remain unminified.\n   * @internal */\n  ['_$litDirective$']: C;\n  /** @internal */\n  values: DirectiveParameters<InstanceType<C>>;\n}\n\nexport const PartType = {\n  ATTRIBUTE: 1,\n  CHILD: 2,\n  PROPERTY: 3,\n  BOOLEAN_ATTRIBUTE: 4,\n  EVENT: 5,\n  ELEMENT: 6,\n} as const;\n\nexport type PartType = (typeof PartType)[keyof typeof PartType];\n\nexport interface ChildPartInfo {\n  readonly type: typeof PartType.CHILD;\n}\n\nexport interface AttributePartInfo {\n  readonly type:\n    | typeof PartType.ATTRIBUTE\n    | typeof PartType.PROPERTY\n    | typeof PartType.BOOLEAN_ATTRIBUTE\n    | typeof PartType.EVENT;\n  readonly strings?: ReadonlyArray<string>;\n  readonly name: string;\n  readonly tagName: string;\n}\n\nexport interface ElementPartInfo {\n  readonly type: typeof PartType.ELEMENT;\n}\n\n/**\n * Information about the part a directive is bound to.\n *\n * This is useful for checking that a directive is attached to a valid part,\n * such as with directive that can only be used on attribute bindings.\n */\nexport type PartInfo = ChildPartInfo | AttributePartInfo | ElementPartInfo;\n\n/**\n * Creates a user-facing directive function from a Directive class. This\n * function has the same parameters as the directive's render() method.\n */\nexport const directive =\n  <C extends DirectiveClass>(c: C) =>\n  (...values: DirectiveParameters<InstanceType<C>>): DirectiveResult<C> => ({\n    // This property needs to remain unminified.\n    ['_$litDirective$']: c,\n    values,\n  });\n\n/**\n * Base class for creating custom directives. Users should extend this class,\n * implement `render` and/or `update`, and then pass their subclass to\n * `directive`.\n */\nexport abstract class Directive implements Disconnectable {\n  //@internal\n  __part!: Part;\n  //@internal\n  __attributeIndex: number | undefined;\n  //@internal\n  __directive?: Directive;\n\n  //@internal\n  _$parent!: Disconnectable;\n\n  // These will only exist on the AsyncDirective subclass\n  //@internal\n  _$disconnectableChildren?: Set<Disconnectable>;\n  // This property needs to remain unminified.\n  //@internal\n  ['_$notifyDirectiveConnectionChanged']?(isConnected: boolean): void;\n\n  constructor(_partInfo: PartInfo) {}\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  /** @internal */\n  _$initialize(\n    part: Part,\n    parent: Disconnectable,\n    attributeIndex: number | undefined\n  ) {\n    this.__part = part;\n    this._$parent = parent;\n    this.__attributeIndex = attributeIndex;\n  }\n  /** @internal */\n  _$resolve(part: Part, props: Array<unknown>): unknown {\n    return this.update(part, props);\n  }\n\n  abstract render(...props: Array<unknown>): unknown;\n\n  update(_part: Part, props: Array<unknown>): unknown {\n    return this.render(...props);\n  }\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {\n  _$LH,\n  Part,\n  DirectiveParent,\n  TemplateResult,\n  CompiledTemplateResult,\n} from './lit-html.js';\nimport {\n  DirectiveResult,\n  DirectiveClass,\n  PartInfo,\n  AttributePartInfo,\n} from './directive.js';\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\n\nconst {_ChildPart: ChildPart} = _$LH;\n\ntype ChildPart = InstanceType<typeof ChildPart>;\n\nconst ENABLE_SHADYDOM_NOPATCH = true;\n\nconst wrap =\n  ENABLE_SHADYDOM_NOPATCH &&\n  window.ShadyDOM?.inUse &&\n  window.ShadyDOM?.noPatch === true\n    ? window.ShadyDOM!.wrap\n    : (node: Node) => node;\n\n/**\n * Tests if a value is a primitive value.\n *\n * See https://tc39.github.io/ecma262/#sec-typeof-operator\n */\nexport const isPrimitive = (value: unknown): value is Primitive =>\n  value === null || (typeof value != 'object' && typeof value != 'function');\n\nexport const TemplateResultType = {\n  HTML: 1,\n  SVG: 2,\n} as const;\n\nexport type TemplateResultType =\n  (typeof TemplateResultType)[keyof typeof TemplateResultType];\n\ntype IsTemplateResult = {\n  (val: unknown): val is TemplateResult | CompiledTemplateResult;\n  <T extends TemplateResultType>(\n    val: unknown,\n    type: T\n  ): val is TemplateResult<T>;\n};\n\n/**\n * Tests if a value is a TemplateResult or a CompiledTemplateResult.\n */\nexport const isTemplateResult: IsTemplateResult = (\n  value: unknown,\n  type?: TemplateResultType\n): value is TemplateResult =>\n  type === undefined\n    ? // This property needs to remain unminified.\n      (value as TemplateResult)?.['_$litType$'] !== undefined\n    : (value as TemplateResult)?.['_$litType$'] === type;\n\n/**\n * Tests if a value is a CompiledTemplateResult.\n */\nexport const isCompiledTemplateResult = (\n  value: unknown\n): value is CompiledTemplateResult => {\n  return (value as CompiledTemplateResult)?.['_$litType$']?.h != null;\n};\n\n/**\n * Tests if a value is a DirectiveResult.\n */\nexport const isDirectiveResult = (value: unknown): value is DirectiveResult =>\n  // This property needs to remain unminified.\n  (value as DirectiveResult)?.['_$litDirective$'] !== undefined;\n\n/**\n * Retrieves the Directive class for a DirectiveResult\n */\nexport const getDirectiveClass = (value: unknown): DirectiveClass | undefined =>\n  // This property needs to remain unminified.\n  (value as DirectiveResult)?.['_$litDirective$'];\n\n/**\n * Tests whether a part has only a single-expression with no strings to\n * interpolate between.\n *\n * Only AttributePart and PropertyPart can have multiple expressions.\n * Multi-expression parts have a `strings` property and single-expression\n * parts do not.\n */\nexport const isSingleExpression = (part: PartInfo) =>\n  (part as AttributePartInfo).strings === undefined;\n\nconst createMarker = () => document.createComment('');\n\n/**\n * Inserts a ChildPart into the given container ChildPart's DOM, either at the\n * end of the container ChildPart, or before the optional `refPart`.\n *\n * This does not add the part to the containerPart's committed value. That must\n * be done by callers.\n *\n * @param containerPart Part within which to add the new ChildPart\n * @param refPart Part before which to add the new ChildPart; when omitted the\n *     part added to the end of the `containerPart`\n * @param part Part to insert, or undefined to create a new part\n */\nexport const insertPart = (\n  containerPart: ChildPart,\n  refPart?: ChildPart,\n  part?: ChildPart\n): ChildPart => {\n  const container = wrap(containerPart._$startNode).parentNode!;\n\n  const refNode =\n    refPart === undefined ? containerPart._$endNode : refPart._$startNode;\n\n  if (part === undefined) {\n    const startNode = wrap(container).insertBefore(createMarker(), refNode);\n    const endNode = wrap(container).insertBefore(createMarker(), refNode);\n    part = new ChildPart(\n      startNode,\n      endNode,\n      containerPart,\n      containerPart.options\n    );\n  } else {\n    const endNode = wrap(part._$endNode!).nextSibling;\n    const oldParent = part._$parent;\n    const parentChanged = oldParent !== containerPart;\n    if (parentChanged) {\n      part._$reparentDisconnectables?.(containerPart);\n      // Note that although `_$reparentDisconnectables` updates the part's\n      // `_$parent` reference after unlinking from its current parent, that\n      // method only exists if Disconnectables are present, so we need to\n      // unconditionally set it here\n      part._$parent = containerPart;\n      // Since the _$isConnected getter is somewhat costly, only\n      // read it once we know the subtree has directives that need\n      // to be notified\n      let newConnectionState;\n      if (\n        part._$notifyConnectionChanged !== undefined &&\n        (newConnectionState = containerPart._$isConnected) !==\n          oldParent!._$isConnected\n      ) {\n        part._$notifyConnectionChanged(newConnectionState);\n      }\n    }\n    if (endNode !== refNode || parentChanged) {\n      let start: Node | null = part._$startNode;\n      while (start !== endNode) {\n        const n: Node | null = wrap(start!).nextSibling;\n        wrap(container).insertBefore(start!, refNode);\n        start = n;\n      }\n    }\n  }\n\n  return part;\n};\n\n/**\n * Sets the value of a Part.\n *\n * Note that this should only be used to set/update the value of user-created\n * parts (i.e. those created using `insertPart`); it should not be used\n * by directives to set the value of the directive's container part. Directives\n * should return a value from `update`/`render` to update their part state.\n *\n * For directives that require setting their part value asynchronously, they\n * should extend `AsyncDirective` and call `this.setValue()`.\n *\n * @param part Part to set\n * @param value Value to set\n * @param index For `AttributePart`s, the index to set\n * @param directiveParent Used internally; should not be set by user\n */\nexport const setChildPartValue = <T extends ChildPart>(\n  part: T,\n  value: unknown,\n  directiveParent: DirectiveParent = part\n): T => {\n  part._$setValue(value, directiveParent);\n  return part;\n};\n\n// A sentinel value that can never appear as a part value except when set by\n// live(). Used to force a dirty-check to fail and cause a re-render.\nconst RESET_VALUE = {};\n\n/**\n * Sets the committed value of a ChildPart directly without triggering the\n * commit stage of the part.\n *\n * This is useful in cases where a directive needs to update the part such\n * that the next update detects a value change or not. When value is omitted,\n * the next update will be guaranteed to be detected as a change.\n *\n * @param part\n * @param value\n */\nexport const setCommittedValue = (part: Part, value: unknown = RESET_VALUE) =>\n  (part._$committedValue = value);\n\n/**\n * Returns the committed value of a ChildPart.\n *\n * The committed value is used for change detection and efficient updates of\n * the part. It can differ from the value set by the template or directive in\n * cases where the template value is transformed before being committed.\n *\n * - `TemplateResult`s are committed as a `TemplateInstance`\n * - Iterables are committed as `Array<ChildPart>`\n * - All other types are committed as the template value or value returned or\n *   set by a directive.\n *\n * @param part\n */\nexport const getCommittedValue = (part: ChildPart) => part._$committedValue;\n\n/**\n * Removes a ChildPart from the DOM, including any of its content.\n *\n * @param part The Part to remove\n */\nexport const removePart = (part: ChildPart) => {\n  part._$notifyConnectionChanged?.(false, true);\n  let start: ChildNode | null = part._$startNode;\n  const end: ChildNode | null = wrap(part._$endNode!).nextSibling;\n  while (start !== end) {\n    const n: ChildNode | null = wrap(start!).nextSibling;\n    (wrap(start!) as ChildNode).remove();\n    start = n;\n  }\n};\n\nexport const clearPart = (part: ChildPart) => {\n  part._$clear();\n};\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {ChildPart, noChange} from '../lit-html.js';\nimport {directive, Directive, PartInfo, PartType} from '../directive.js';\nimport {\n  insertPart,\n  getCommittedValue,\n  removePart,\n  setCommittedValue,\n  setChildPartValue,\n} from '../directive-helpers.js';\n\nexport type KeyFn<T> = (item: T, index: number) => unknown;\nexport type ItemTemplate<T> = (item: T, index: number) => unknown;\n\n// Helper for generating a map of array item to its index over a subset\n// of an array (used to lazily generate `newKeyToIndexMap` and\n// `oldKeyToIndexMap`)\nconst generateMap = (list: unknown[], start: number, end: number) => {\n  const map = new Map<unknown, number>();\n  for (let i = start; i <= end; i++) {\n    map.set(list[i], i);\n  }\n  return map;\n};\n\nclass RepeatDirective extends Directive {\n  private _itemKeys?: unknown[];\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (partInfo.type !== PartType.CHILD) {\n      throw new Error('repeat() can only be used in text expressions');\n    }\n  }\n\n  private _getValuesAndKeys<T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ) {\n    let keyFn: KeyFn<T> | undefined;\n    if (template === undefined) {\n      template = keyFnOrTemplate;\n    } else if (keyFnOrTemplate !== undefined) {\n      keyFn = keyFnOrTemplate as KeyFn<T>;\n    }\n    const keys = [];\n    const values = [];\n    let index = 0;\n    for (const item of items) {\n      keys[index] = keyFn ? keyFn(item, index) : index;\n      values[index] = template!(item, index);\n      index++;\n    }\n    return {\n      values,\n      keys,\n    };\n  }\n\n  render<T>(items: Iterable<T>, template: ItemTemplate<T>): Array<unknown>;\n  render<T>(\n    items: Iterable<T>,\n    keyFn: KeyFn<T> | ItemTemplate<T>,\n    template: ItemTemplate<T>\n  ): Array<unknown>;\n  render<T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ) {\n    return this._getValuesAndKeys(items, keyFnOrTemplate, template).values;\n  }\n\n  override update<T>(\n    containerPart: ChildPart,\n    [items, keyFnOrTemplate, template]: [\n      Iterable<T>,\n      KeyFn<T> | ItemTemplate<T>,\n      ItemTemplate<T>\n    ]\n  ) {\n    // Old part & key lists are retrieved from the last update (which may\n    // be primed by hydration)\n    const oldParts = getCommittedValue(\n      containerPart\n    ) as Array<ChildPart | null>;\n    const {values: newValues, keys: newKeys} = this._getValuesAndKeys(\n      items,\n      keyFnOrTemplate,\n      template\n    );\n\n    // We check that oldParts, the committed value, is an Array as an\n    // indicator that the previous value came from a repeat() call. If\n    // oldParts is not an Array then this is the first render and we return\n    // an array for lit-html's array handling to render, and remember the\n    // keys.\n    if (!Array.isArray(oldParts)) {\n      this._itemKeys = newKeys;\n      return newValues;\n    }\n\n    // In SSR hydration it's possible for oldParts to be an array but for us\n    // to not have item keys because the update() hasn't run yet. We set the\n    // keys to an empty array. This will cause all oldKey/newKey comparisons\n    // to fail and execution to fall to the last nested brach below which\n    // reuses the oldPart.\n    const oldKeys = (this._itemKeys ??= []);\n\n    // New part list will be built up as we go (either reused from\n    // old parts or created for new keys in this update). This is\n    // saved in the above cache at the end of the update.\n    const newParts: ChildPart[] = [];\n\n    // Maps from key to index for current and previous update; these\n    // are generated lazily only when needed as a performance\n    // optimization, since they are only required for multiple\n    // non-contiguous changes in the list, which are less common.\n    let newKeyToIndexMap!: Map<unknown, number>;\n    let oldKeyToIndexMap!: Map<unknown, number>;\n\n    // Head and tail pointers to old parts and new values\n    let oldHead = 0;\n    let oldTail = oldParts.length - 1;\n    let newHead = 0;\n    let newTail = newValues.length - 1;\n\n    // Overview of O(n) reconciliation algorithm (general approach\n    // based on ideas found in ivi, vue, snabbdom, etc.):\n    //\n    // * We start with the list of old parts and new values (and\n    //   arrays of their respective keys), head/tail pointers into\n    //   each, and we build up the new list of parts by updating\n    //   (and when needed, moving) old parts or creating new ones.\n    //   The initial scenario might look like this (for brevity of\n    //   the diagrams, the numbers in the array reflect keys\n    //   associated with the old parts or new values, although keys\n    //   and parts/values are actually stored in parallel arrays\n    //   indexed using the same head/tail pointers):\n    //\n    //      oldHead v                 v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [ ,  ,  ,  ,  ,  ,  ]\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6] <- reflects the user's new\n    //                                      item order\n    //      newHead ^                 ^ newTail\n    //\n    // * Iterate old & new lists from both sides, updating,\n    //   swapping, or removing parts at the head/tail locations\n    //   until neither head nor tail can move.\n    //\n    // * Example below: keys at head pointers match, so update old\n    //   part 0 in-place (no need to move it) and record part 0 in\n    //   the `newParts` list. The last thing we do is advance the\n    //   `oldHead` and `newHead` pointers (will be reflected in the\n    //   next diagram).\n    //\n    //      oldHead v                 v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  ,  ] <- heads matched: update 0\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldHead\n    //                                      & newHead\n    //      newHead ^                 ^ newTail\n    //\n    // * Example below: head pointers don't match, but tail\n    //   pointers do, so update part 6 in place (no need to move\n    //   it), and record part 6 in the `newParts` list. Last,\n    //   advance the `oldTail` and `oldHead` pointers.\n    //\n    //         oldHead v              v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  , 6] <- tails matched: update 6\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldTail\n    //                                      & newTail\n    //         newHead ^              ^ newTail\n    //\n    // * If neither head nor tail match; next check if one of the\n    //   old head/tail items was removed. We first need to generate\n    //   the reverse map of new keys to index (`newKeyToIndexMap`),\n    //   which is done once lazily as a performance optimization,\n    //   since we only hit this case if multiple non-contiguous\n    //   changes were made. Note that for contiguous removal\n    //   anywhere in the list, the head and tails would advance\n    //   from either end and pass each other before we get to this\n    //   case and removals would be handled in the final while loop\n    //   without needing to generate the map.\n    //\n    // * Example below: The key at `oldTail` was removed (no longer\n    //   in the `newKeyToIndexMap`), so remove that part from the\n    //   DOM and advance just the `oldTail` pointer.\n    //\n    //         oldHead v           v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  , 6] <- 5 not in new map: remove\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    5 and advance oldTail\n    //         newHead ^           ^ newTail\n    //\n    // * Once head and tail cannot move, any mismatches are due to\n    //   either new or moved items; if a new key is in the previous\n    //   \"old key to old index\" map, move the old part to the new\n    //   location, otherwise create and insert a new part. Note\n    //   that when moving an old part we null its position in the\n    //   oldParts array if it lies between the head and tail so we\n    //   know to skip it when the pointers get there.\n    //\n    // * Example below: neither head nor tail match, and neither\n    //   were removed; so find the `newHead` key in the\n    //   `oldKeyToIndexMap`, and move that old part's DOM into the\n    //   next head position (before `oldParts[oldHead]`). Last,\n    //   null the part in the `oldPart` array since it was\n    //   somewhere in the remaining oldParts still to be scanned\n    //   (between the head and tail pointers) so that we know to\n    //   skip that old part on future iterations.\n    //\n    //         oldHead v        v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2,  ,  ,  ,  , 6] <- stuck: update & move 2\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    into place and advance\n    //                                      newHead\n    //         newHead ^           ^ newTail\n    //\n    // * Note that for moves/insertions like the one above, a part\n    //   inserted at the head pointer is inserted before the\n    //   current `oldParts[oldHead]`, and a part inserted at the\n    //   tail pointer is inserted before `newParts[newTail+1]`. The\n    //   seeming asymmetry lies in the fact that new parts are\n    //   moved into place outside in, so to the right of the head\n    //   pointer are old parts, and to the right of the tail\n    //   pointer are new parts.\n    //\n    // * We always restart back from the top of the algorithm,\n    //   allowing matching and simple updates in place to\n    //   continue...\n    //\n    // * Example below: the head pointers once again match, so\n    //   simply update part 1 and record it in the `newParts`\n    //   array.  Last, advance both head pointers.\n    //\n    //         oldHead v        v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1,  ,  ,  , 6] <- heads matched: update 1\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldHead\n    //                                      & newHead\n    //            newHead ^        ^ newTail\n    //\n    // * As mentioned above, items that were moved as a result of\n    //   being stuck (the final else clause in the code below) are\n    //   marked with null, so we always advance old pointers over\n    //   these so we're comparing the next actual old value on\n    //   either end.\n    //\n    // * Example below: `oldHead` is null (already placed in\n    //   newParts), so advance `oldHead`.\n    //\n    //            oldHead v     v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6] <- old head already used:\n    //   newParts: [0, 2, 1,  ,  ,  , 6]    advance oldHead\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]\n    //               newHead ^     ^ newTail\n    //\n    // * Note it's not critical to mark old parts as null when they\n    //   are moved from head to tail or tail to head, since they\n    //   will be outside the pointer range and never visited again.\n    //\n    // * Example below: Here the old tail key matches the new head\n    //   key, so the part at the `oldTail` position and move its\n    //   DOM to the new head position (before `oldParts[oldHead]`).\n    //   Last, advance `oldTail` and `newHead` pointers.\n    //\n    //               oldHead v  v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4,  ,  , 6] <- old tail matches new\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]   head: update & move 4,\n    //                                     advance oldTail & newHead\n    //               newHead ^     ^ newTail\n    //\n    // * Example below: Old and new head keys match, so update the\n    //   old head part in place, and advance the `oldHead` and\n    //   `newHead` pointers.\n    //\n    //               oldHead v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4, 3,   ,6] <- heads match: update 3\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance oldHead &\n    //                                      newHead\n    //                  newHead ^  ^ newTail\n    //\n    // * Once the new or old pointers move past each other then all\n    //   we have left is additions (if old list exhausted) or\n    //   removals (if new list exhausted). Those are handled in the\n    //   final while loops at the end.\n    //\n    // * Example below: `oldHead` exceeded `oldTail`, so we're done\n    //   with the main loop.  Create the remaining part and insert\n    //   it at the new head position, and the update is complete.\n    //\n    //                   (oldHead > oldTail)\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4, 3, 7 ,6] <- create and insert 7\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]\n    //                     newHead ^ newTail\n    //\n    // * Note that the order of the if/else clauses is not\n    //   important to the algorithm, as long as the null checks\n    //   come first (to ensure we're always working on valid old\n    //   parts) and that the final else clause comes last (since\n    //   that's where the expensive moves occur). The order of\n    //   remaining clauses is is just a simple guess at which cases\n    //   will be most common.\n    //\n    // * Note, we could calculate the longest\n    //   increasing subsequence (LIS) of old items in new position,\n    //   and only move those not in the LIS set. However that costs\n    //   O(nlogn) time and adds a bit more code, and only helps\n    //   make rare types of mutations require fewer moves. The\n    //   above handles removes, adds, reversal, swaps, and single\n    //   moves of contiguous items in linear time, in the minimum\n    //   number of moves. As the number of multiple moves where LIS\n    //   might help approaches a random shuffle, the LIS\n    //   optimization becomes less helpful, so it seems not worth\n    //   the code at this point. Could reconsider if a compelling\n    //   case arises.\n\n    while (oldHead <= oldTail && newHead <= newTail) {\n      if (oldParts[oldHead] === null) {\n        // `null` means old part at head has already been used\n        // below; skip\n        oldHead++;\n      } else if (oldParts[oldTail] === null) {\n        // `null` means old part at tail has already been used\n        // below; skip\n        oldTail--;\n      } else if (oldKeys[oldHead] === newKeys[newHead]) {\n        // Old head matches new head; update in place\n        newParts[newHead] = setChildPartValue(\n          oldParts[oldHead]!,\n          newValues[newHead]\n        );\n        oldHead++;\n        newHead++;\n      } else if (oldKeys[oldTail] === newKeys[newTail]) {\n        // Old tail matches new tail; update in place\n        newParts[newTail] = setChildPartValue(\n          oldParts[oldTail]!,\n          newValues[newTail]\n        );\n        oldTail--;\n        newTail--;\n      } else if (oldKeys[oldHead] === newKeys[newTail]) {\n        // Old head matches new tail; update and move to new tail\n        newParts[newTail] = setChildPartValue(\n          oldParts[oldHead]!,\n          newValues[newTail]\n        );\n        insertPart(containerPart, newParts[newTail + 1], oldParts[oldHead]!);\n        oldHead++;\n        newTail--;\n      } else if (oldKeys[oldTail] === newKeys[newHead]) {\n        // Old tail matches new head; update and move to new head\n        newParts[newHead] = setChildPartValue(\n          oldParts[oldTail]!,\n          newValues[newHead]\n        );\n        insertPart(containerPart, oldParts[oldHead]!, oldParts[oldTail]!);\n        oldTail--;\n        newHead++;\n      } else {\n        if (newKeyToIndexMap === undefined) {\n          // Lazily generate key-to-index maps, used for removals &\n          // moves below\n          newKeyToIndexMap = generateMap(newKeys, newHead, newTail);\n          oldKeyToIndexMap = generateMap(oldKeys, oldHead, oldTail);\n        }\n        if (!newKeyToIndexMap.has(oldKeys[oldHead])) {\n          // Old head is no longer in new list; remove\n          removePart(oldParts[oldHead]!);\n          oldHead++;\n        } else if (!newKeyToIndexMap.has(oldKeys[oldTail])) {\n          // Old tail is no longer in new list; remove\n          removePart(oldParts[oldTail]!);\n          oldTail--;\n        } else {\n          // Any mismatches at this point are due to additions or\n          // moves; see if we have an old part we can reuse and move\n          // into place\n          const oldIndex = oldKeyToIndexMap.get(newKeys[newHead]);\n          const oldPart = oldIndex !== undefined ? oldParts[oldIndex] : null;\n          if (oldPart === null) {\n            // No old part for this value; create a new one and\n            // insert it\n            const newPart = insertPart(containerPart, oldParts[oldHead]!);\n            setChildPartValue(newPart, newValues[newHead]);\n            newParts[newHead] = newPart;\n          } else {\n            // Reuse old part\n            newParts[newHead] = setChildPartValue(oldPart, newValues[newHead]);\n            insertPart(containerPart, oldParts[oldHead]!, oldPart);\n            // This marks the old part as having been used, so that\n            // it will be skipped in the first two checks above\n            oldParts[oldIndex as number] = null;\n          }\n          newHead++;\n        }\n      }\n    }\n    // Add parts for any remaining new values\n    while (newHead <= newTail) {\n      // For all remaining additions, we insert before last new\n      // tail, since old pointers are no longer valid\n      const newPart = insertPart(containerPart, newParts[newTail + 1]);\n      setChildPartValue(newPart, newValues[newHead]);\n      newParts[newHead++] = newPart;\n    }\n    // Remove any remaining unused old parts\n    while (oldHead <= oldTail) {\n      const oldPart = oldParts[oldHead++];\n      if (oldPart !== null) {\n        removePart(oldPart);\n      }\n    }\n\n    // Save order of new parts for next round\n    this._itemKeys = newKeys;\n    // Directly set part value, bypassing it's dirty-checking\n    setCommittedValue(containerPart, newParts);\n    return noChange;\n  }\n}\n\nexport interface RepeatDirectiveFn {\n  <T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ): unknown;\n  <T>(items: Iterable<T>, template: ItemTemplate<T>): unknown;\n  <T>(\n    items: Iterable<T>,\n    keyFn: KeyFn<T> | ItemTemplate<T>,\n    template: ItemTemplate<T>\n  ): unknown;\n}\n\n/**\n * A directive that repeats a series of values (usually `TemplateResults`)\n * generated from an iterable, and updates those items efficiently when the\n * iterable changes based on user-provided `keys` associated with each item.\n *\n * Note that if a `keyFn` is provided, strict key-to-DOM mapping is maintained,\n * meaning previous DOM for a given key is moved into the new position if\n * needed, and DOM will never be reused with values for different keys (new DOM\n * will always be created for new keys). This is generally the most efficient\n * way to use `repeat` since it performs minimum unnecessary work for insertions\n * and removals.\n *\n * The `keyFn` takes two parameters, the item and its index, and returns a unique key value.\n *\n * ```js\n * html`\n *   <ol>\n *     ${repeat(this.items, (item) => item.id, (item, index) => {\n *       return html`<li>${index}: ${item.name}</li>`;\n *     })}\n *   </ol>\n * `\n * ```\n *\n * **Important**: If providing a `keyFn`, keys *must* be unique for all items in a\n * given call to `repeat`. The behavior when two or more items have the same key\n * is undefined.\n *\n * If no `keyFn` is provided, this directive will perform similar to mapping\n * items to values, and DOM will be reused against potentially different items.\n */\nexport const repeat = directive(RepeatDirective) as RepeatDirectiveFn;\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {RepeatDirective};\n", "/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange, nothing} from '../lit-html.js';\nimport {\n  directive,\n  Directive,\n  DirectiveParameters,\n  PartInfo,\n  PartType,\n} from '../directive.js';\nimport {isSingleExpression, setCommittedValue} from '../directive-helpers.js';\n\nclass LiveDirective extends Directive {\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (\n      !(\n        partInfo.type === PartType.PROPERTY ||\n        partInfo.type === PartType.ATTRIBUTE ||\n        partInfo.type === PartType.BOOLEAN_ATTRIBUTE\n      )\n    ) {\n      throw new Error(\n        'The `live` directive is not allowed on child or event bindings'\n      );\n    }\n    if (!isSingleExpression(partInfo)) {\n      throw new Error('`live` bindings can only contain a single expression');\n    }\n  }\n\n  render(value: unknown) {\n    return value;\n  }\n\n  override update(part: AttributePart, [value]: DirectiveParameters<this>) {\n    if (value === noChange || value === nothing) {\n      return value;\n    }\n    const element = part.element;\n    const name = part.name;\n\n    if (part.type === PartType.PROPERTY) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      if (value === (element as any)[name]) {\n        return noChange;\n      }\n    } else if (part.type === PartType.BOOLEAN_ATTRIBUTE) {\n      if (!!value === element.hasAttribute(name)) {\n        return noChange;\n      }\n    } else if (part.type === PartType.ATTRIBUTE) {\n      if (element.getAttribute(name) === String(value)) {\n        return noChange;\n      }\n    }\n    // Resets the part's value, causing its dirty-check to fail so that it\n    // always sets the value.\n    setCommittedValue(part);\n    return value;\n  }\n}\n\n/**\n * Checks binding values against live DOM values, instead of previously bound\n * values, when determining whether to update the value.\n *\n * This is useful for cases where the DOM value may change from outside of\n * lit-html, such as with a binding to an `<input>` element's `value` property,\n * a content editable elements text, or to a custom element that changes it's\n * own properties or attributes.\n *\n * In these cases if the DOM value changes, but the value set through lit-html\n * bindings hasn't, lit-html won't know to update the DOM value and will leave\n * it alone. If this is not what you want--if you want to overwrite the DOM\n * value with the bound value no matter what--use the `live()` directive:\n *\n * ```js\n * html`<input .value=${live(x)}>`\n * ```\n *\n * `live()` performs a strict equality check against the live DOM value, and if\n * the new value is equal to the live value, does nothing. This means that\n * `live()` should not be used when the binding will cause a type conversion. If\n * you use `live()` with an attribute binding, make sure that only strings are\n * passed in, or the binding will update every render.\n */\nexport const live = directive(LiveDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {LiveDirective};\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Overview:\n *\n * This module is designed to add support for an async `setValue` API and\n * `disconnected` callback to directives with the least impact on the core\n * runtime or payload when that feature is not used.\n *\n * The strategy is to introduce a `AsyncDirective` subclass of\n * `Directive` that climbs the \"parent\" tree in its constructor to note which\n * branches of lit-html's \"logical tree\" of data structures contain such\n * directives and thus need to be crawled when a subtree is being cleared (or\n * manually disconnected) in order to run the `disconnected` callback.\n *\n * The \"nodes\" of the logical tree include Parts, TemplateInstances (for when a\n * TemplateResult is committed to a value of a ChildPart), and Directives; these\n * all implement a common interface called `DisconnectableChild`. Each has a\n * `_$parent` reference which is set during construction in the core code, and a\n * `_$disconnectableChildren` field which is initially undefined.\n *\n * The sparse tree created by means of the `AsyncDirective` constructor\n * crawling up the `_$parent` tree and placing a `_$disconnectableChildren` Set\n * on each parent that includes each child that contains a\n * `AsyncDirective` directly or transitively via its children. In order to\n * notify connection state changes and disconnect (or reconnect) a tree, the\n * `_$notifyConnectionChanged` API is patched onto ChildParts as a directive\n * climbs the parent tree, which is called by the core when clearing a part if\n * it exists. When called, that method iterates over the sparse tree of\n * Set<DisconnectableChildren> built up by AsyncDirectives, and calls\n * `_$notifyDirectiveConnectionChanged` on any directives that are encountered\n * in that tree, running the required callbacks.\n *\n * A given \"logical tree\" of lit-html data-structures might look like this:\n *\n *  ChildPart(N1) _$dC=[D2,T3]\n *   ._directive\n *     AsyncDirective(D2)\n *   ._value // user value was TemplateResult\n *     TemplateInstance(T3) _$dC=[A4,A6,N10,N12]\n *      ._$parts[]\n *        AttributePart(A4) _$dC=[D5]\n *         ._directives[]\n *           AsyncDirective(D5)\n *        AttributePart(A6) _$dC=[D7,D8]\n *         ._directives[]\n *           AsyncDirective(D7)\n *           Directive(D8) _$dC=[D9]\n *            ._directive\n *              AsyncDirective(D9)\n *        ChildPart(N10) _$dC=[D11]\n *         ._directive\n *           AsyncDirective(D11)\n *         ._value\n *           string\n *        ChildPart(N12) _$dC=[D13,N14,N16]\n *         ._directive\n *           AsyncDirective(D13)\n *         ._value // user value was iterable\n *           Array<ChildPart>\n *             ChildPart(N14) _$dC=[D15]\n *              ._value\n *                string\n *             ChildPart(N16) _$dC=[D17,T18]\n *              ._directive\n *                AsyncDirective(D17)\n *              ._value // user value was TemplateResult\n *                TemplateInstance(T18) _$dC=[A19,A21,N25]\n *                 ._$parts[]\n *                   AttributePart(A19) _$dC=[D20]\n *                    ._directives[]\n *                      AsyncDirective(D20)\n *                   AttributePart(A21) _$dC=[22,23]\n *                    ._directives[]\n *                      AsyncDirective(D22)\n *                      Directive(D23) _$dC=[D24]\n *                       ._directive\n *                         AsyncDirective(D24)\n *                   ChildPart(N25) _$dC=[D26]\n *                    ._directive\n *                      AsyncDirective(D26)\n *                    ._value\n *                      string\n *\n * Example 1: The directive in ChildPart(N12) updates and returns `nothing`. The\n * ChildPart will _clear() itself, and so we need to disconnect the \"value\" of\n * the ChildPart (but not its directive). In this case, when `_clear()` calls\n * `_$notifyConnectionChanged()`, we don't iterate all of the\n * _$disconnectableChildren, rather we do a value-specific disconnection: i.e.\n * since the _value was an Array<ChildPart> (because an iterable had been\n * committed), we iterate the array of ChildParts (N14, N16) and run\n * `setConnected` on them (which does recurse down the full tree of\n * `_$disconnectableChildren` below it, and also removes N14 and N16 from N12's\n * `_$disconnectableChildren`). Once the values have been disconnected, we then\n * check whether the ChildPart(N12)'s list of `_$disconnectableChildren` is empty\n * (and would remove it from its parent TemplateInstance(T3) if so), but since\n * it would still contain its directive D13, it stays in the disconnectable\n * tree.\n *\n * Example 2: In the course of Example 1, `setConnected` will reach\n * ChildPart(N16); in this case the entire part is being disconnected, so we\n * simply iterate all of N16's `_$disconnectableChildren` (D17,T18) and\n * recursively run `setConnected` on them. Note that we only remove children\n * from `_$disconnectableChildren` for the top-level values being disconnected\n * on a clear; doing this bookkeeping lower in the tree is wasteful since it's\n * all being thrown away.\n *\n * Example 3: If the LitElement containing the entire tree above becomes\n * disconnected, it will run `childPart.setConnected()` (which calls\n * `childPart._$notifyConnectionChanged()` if it exists); in this case, we\n * recursively run `setConnected()` over the entire tree, without removing any\n * children from `_$disconnectableChildren`, since this tree is required to\n * re-connect the tree, which does the same operation, simply passing\n * `isConnected: true` down the tree, signaling which callback to run.\n */\n\nimport {AttributePart, ChildPart, Disconnectable, Part} from './lit-html.js';\nimport {isSingleExpression} from './directive-helpers.js';\nimport {Directive, PartInfo, PartType} from './directive.js';\nexport * from './directive.js';\n\nconst DEV_MODE = true;\n\n/**\n * Recursively walks down the tree of Parts/TemplateInstances/Directives to set\n * the connected state of directives and run `disconnected`/ `reconnected`\n * callbacks.\n *\n * @return True if there were children to disconnect; false otherwise\n */\nconst notifyChildrenConnectedChanged = (\n  parent: Disconnectable,\n  isConnected: boolean\n): boolean => {\n  const children = parent._$disconnectableChildren;\n  if (children === undefined) {\n    return false;\n  }\n  for (const obj of children) {\n    // The existence of `_$notifyDirectiveConnectionChanged` is used as a \"brand\" to\n    // disambiguate AsyncDirectives from other DisconnectableChildren\n    // (as opposed to using an instanceof check to know when to call it); the\n    // redundancy of \"Directive\" in the API name is to avoid conflicting with\n    // `_$notifyConnectionChanged`, which exists `ChildParts` which are also in\n    // this list\n    // Disconnect Directive (and any nested directives contained within)\n    // This property needs to remain unminified.\n    (obj as AsyncDirective)['_$notifyDirectiveConnectionChanged']?.(\n      isConnected,\n      false\n    );\n    // Disconnect Part/TemplateInstance\n    notifyChildrenConnectedChanged(obj, isConnected);\n  }\n  return true;\n};\n\n/**\n * Removes the given child from its parent list of disconnectable children, and\n * if the parent list becomes empty as a result, removes the parent from its\n * parent, and so forth up the tree when that causes subsequent parent lists to\n * become empty.\n */\nconst removeDisconnectableFromParent = (obj: Disconnectable) => {\n  let parent, children;\n  do {\n    if ((parent = obj._$parent) === undefined) {\n      break;\n    }\n    children = parent._$disconnectableChildren!;\n    children.delete(obj);\n    obj = parent;\n  } while (children?.size === 0);\n};\n\nconst addDisconnectableToParent = (obj: Disconnectable) => {\n  // Climb the parent tree, creating a sparse tree of children needing\n  // disconnection\n  for (let parent; (parent = obj._$parent); obj = parent) {\n    let children = parent._$disconnectableChildren;\n    if (children === undefined) {\n      parent._$disconnectableChildren = children = new Set();\n    } else if (children.has(obj)) {\n      // Once we've reached a parent that already contains this child, we\n      // can short-circuit\n      break;\n    }\n    children.add(obj);\n    installDisconnectAPI(parent);\n  }\n};\n\n/**\n * Changes the parent reference of the ChildPart, and updates the sparse tree of\n * Disconnectable children accordingly.\n *\n * Note, this method will be patched onto ChildPart instances and called from\n * the core code when parts are moved between different parents.\n */\nfunction reparentDisconnectables(this: ChildPart, newParent: Disconnectable) {\n  if (this._$disconnectableChildren !== undefined) {\n    removeDisconnectableFromParent(this);\n    this._$parent = newParent;\n    addDisconnectableToParent(this);\n  } else {\n    this._$parent = newParent;\n  }\n}\n\n/**\n * Sets the connected state on any directives contained within the committed\n * value of this part (i.e. within a TemplateInstance or iterable of\n * ChildParts) and runs their `disconnected`/`reconnected`s, as well as within\n * any directives stored on the ChildPart (when `valueOnly` is false).\n *\n * `isClearingValue` should be passed as `true` on a top-level part that is\n * clearing itself, and not as a result of recursively disconnecting directives\n * as part of a `clear` operation higher up the tree. This both ensures that any\n * directive on this ChildPart that produced a value that caused the clear\n * operation is not disconnected, and also serves as a performance optimization\n * to avoid needless bookkeeping when a subtree is going away; when clearing a\n * subtree, only the top-most part need to remove itself from the parent.\n *\n * `fromPartIndex` is passed only in the case of a partial `_clear` running as a\n * result of truncating an iterable.\n *\n * Note, this method will be patched onto ChildPart instances and called from the\n * core code when parts are cleared or the connection state is changed by the\n * user.\n */\nfunction notifyChildPartConnectedChanged(\n  this: ChildPart,\n  isConnected: boolean,\n  isClearingValue = false,\n  fromPartIndex = 0\n) {\n  const value = this._$committedValue;\n  const children = this._$disconnectableChildren;\n  if (children === undefined || children.size === 0) {\n    return;\n  }\n  if (isClearingValue) {\n    if (Array.isArray(value)) {\n      // Iterable case: Any ChildParts created by the iterable should be\n      // disconnected and removed from this ChildPart's disconnectable\n      // children (starting at `fromPartIndex` in the case of truncation)\n      for (let i = fromPartIndex; i < value.length; i++) {\n        notifyChildrenConnectedChanged(value[i], false);\n        removeDisconnectableFromParent(value[i]);\n      }\n    } else if (value != null) {\n      // TemplateInstance case: If the value has disconnectable children (will\n      // only be in the case that it is a TemplateInstance), we disconnect it\n      // and remove it from this ChildPart's disconnectable children\n      notifyChildrenConnectedChanged(value as Disconnectable, false);\n      removeDisconnectableFromParent(value as Disconnectable);\n    }\n  } else {\n    notifyChildrenConnectedChanged(this, isConnected);\n  }\n}\n\n/**\n * Patches disconnection API onto ChildParts.\n */\nconst installDisconnectAPI = (obj: Disconnectable) => {\n  if ((obj as ChildPart).type == PartType.CHILD) {\n    (obj as ChildPart)._$notifyConnectionChanged ??=\n      notifyChildPartConnectedChanged;\n    (obj as ChildPart)._$reparentDisconnectables ??= reparentDisconnectables;\n  }\n};\n\n/**\n * An abstract `Directive` base class whose `disconnected` method will be\n * called when the part containing the directive is cleared as a result of\n * re-rendering, or when the user calls `part.setConnected(false)` on\n * a part that was previously rendered containing the directive (as happens\n * when e.g. a LitElement disconnects from the DOM).\n *\n * If `part.setConnected(true)` is subsequently called on a\n * containing part, the directive's `reconnected` method will be called prior\n * to its next `update`/`render` callbacks. When implementing `disconnected`,\n * `reconnected` should also be implemented to be compatible with reconnection.\n *\n * Note that updates may occur while the directive is disconnected. As such,\n * directives should generally check the `this.isConnected` flag during\n * render/update to determine whether it is safe to subscribe to resources\n * that may prevent garbage collection.\n */\nexport abstract class AsyncDirective extends Directive {\n  // As opposed to other Disconnectables, AsyncDirectives always get notified\n  // when the RootPart connection changes, so the public `isConnected`\n  // is a locally stored variable initialized via its part's getter and synced\n  // via `_$notifyDirectiveConnectionChanged`. This is cheaper than using\n  // the _$isConnected getter, which has to look back up the tree each time.\n  /**\n   * The connection state for this Directive.\n   */\n  isConnected!: boolean;\n\n  // @internal\n  override _$disconnectableChildren?: Set<Disconnectable> = undefined;\n  /**\n   * Initialize the part with internal fields\n   * @param part\n   * @param parent\n   * @param attributeIndex\n   */\n  override _$initialize(\n    part: Part,\n    parent: Disconnectable,\n    attributeIndex: number | undefined\n  ) {\n    super._$initialize(part, parent, attributeIndex);\n    addDisconnectableToParent(this);\n    this.isConnected = part._$isConnected;\n  }\n  // This property needs to remain unminified.\n  /**\n   * Called from the core code when a directive is going away from a part (in\n   * which case `shouldRemoveFromParent` should be true), and from the\n   * `setChildrenConnected` helper function when recursively changing the\n   * connection state of a tree (in which case `shouldRemoveFromParent` should\n   * be false).\n   *\n   * @param isConnected\n   * @param isClearingDirective - True when the directive itself is being\n   *     removed; false when the tree is being disconnected\n   * @internal\n   */\n  override ['_$notifyDirectiveConnectionChanged'](\n    isConnected: boolean,\n    isClearingDirective = true\n  ) {\n    if (isConnected !== this.isConnected) {\n      this.isConnected = isConnected;\n      if (isConnected) {\n        this.reconnected?.();\n      } else {\n        this.disconnected?.();\n      }\n    }\n    if (isClearingDirective) {\n      notifyChildrenConnectedChanged(this, isConnected);\n      removeDisconnectableFromParent(this);\n    }\n  }\n\n  /**\n   * Sets the value of the directive's Part outside the normal `update`/`render`\n   * lifecycle of a directive.\n   *\n   * This method should not be called synchronously from a directive's `update`\n   * or `render`.\n   *\n   * @param directive The directive to update\n   * @param value The value to set\n   */\n  setValue(value: unknown) {\n    if (isSingleExpression(this.__part as unknown as PartInfo)) {\n      this.__part._$setValue(value, this);\n    } else {\n      // this.__attributeIndex will be defined in this case, but\n      // assert it in dev mode\n      if (DEV_MODE && this.__attributeIndex === undefined) {\n        throw new Error(`Expected this.__attributeIndex to be a number`);\n      }\n      const newValues = [...(this.__part._$committedValue as Array<unknown>)];\n      newValues[this.__attributeIndex!] = value;\n      (this.__part as AttributePart)._$setValue(newValues, this, 0);\n    }\n  }\n\n  /**\n   * User callbacks for implementing logic to release any resources/subscriptions\n   * that may have been retained by this directive. Since directives may also be\n   * re-connected, `reconnected` should also be implemented to restore the\n   * working state of the directive prior to the next render.\n   */\n  protected disconnected() {}\n  protected reconnected() {}\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport {nothing, ElementPart} from '../lit-html.js';\nimport {directive, AsyncDirective} from '../async-directive.js';\n\n/**\n * Creates a new Ref object, which is container for a reference to an element.\n */\nexport const createRef = <T = Element>() => new Ref<T>();\n\n/**\n * An object that holds a ref value.\n */\nclass Ref<T = Element> {\n  /**\n   * The current Element value of the ref, or else `undefined` if the ref is no\n   * longer rendered.\n   */\n  readonly value?: T;\n}\n\nexport type {Ref};\n\ninterface RefInternal {\n  value: Element | undefined;\n}\n\n// When callbacks are used for refs, this map tracks the last value the callback\n// was called with, for ensuring a directive doesn't clear the ref if the ref\n// has already been rendered to a new spot. It is double-keyed on both the\n// context (`options.host`) and the callback, since we auto-bind class methods\n// to `options.host`.\nconst lastElementForContextAndCallback: WeakMap<\n  object,\n  WeakMap<Function, Element | undefined>\n> = new WeakMap();\n\nexport type RefOrCallback<T = Element> = Ref<T> | ((el: T | undefined) => void);\n\nclass RefDirective extends AsyncDirective {\n  private _element?: Element;\n  private _ref?: RefOrCallback;\n  private _context?: object;\n\n  render(_ref?: RefOrCallback) {\n    return nothing;\n  }\n\n  override update(part: ElementPart, [ref]: Parameters<this['render']>) {\n    const refChanged = ref !== this._ref;\n    if (refChanged && this._ref !== undefined) {\n      // The ref passed to the directive has changed;\n      // unset the previous ref's value\n      this._updateRefValue(undefined);\n    }\n    if (refChanged || this._lastElementForRef !== this._element) {\n      // We either got a new ref or this is the first render;\n      // store the ref/element & update the ref value\n      this._ref = ref;\n      this._context = part.options?.host;\n      this._updateRefValue((this._element = part.element));\n    }\n    return nothing;\n  }\n\n  private _updateRefValue(element: Element | undefined) {\n    if (typeof this._ref === 'function') {\n      // If the current ref was called with a previous value, call with\n      // `undefined`; We do this to ensure callbacks are called in a consistent\n      // way regardless of whether a ref might be moving up in the tree (in\n      // which case it would otherwise be called with the new value before the\n      // previous one unsets it) and down in the tree (where it would be unset\n      // before being set). Note that element lookup is keyed by\n      // both the context and the callback, since we allow passing unbound\n      // functions that are called on options.host, and we want to treat\n      // these as unique \"instances\" of a function.\n      const context = this._context ?? globalThis;\n      let lastElementForCallback =\n        lastElementForContextAndCallback.get(context);\n      if (lastElementForCallback === undefined) {\n        lastElementForCallback = new WeakMap();\n        lastElementForContextAndCallback.set(context, lastElementForCallback);\n      }\n      if (lastElementForCallback.get(this._ref) !== undefined) {\n        this._ref.call(this._context, undefined);\n      }\n      lastElementForCallback.set(this._ref, element);\n      // Call the ref with the new element value\n      if (element !== undefined) {\n        this._ref.call(this._context, element);\n      }\n    } else {\n      (this._ref as RefInternal)!.value = element;\n    }\n  }\n\n  private get _lastElementForRef() {\n    return typeof this._ref === 'function'\n      ? lastElementForContextAndCallback\n          .get(this._context ?? globalThis)\n          ?.get(this._ref)\n      : this._ref?.value;\n  }\n\n  override disconnected() {\n    // Only clear the box if our element is still the one in it (i.e. another\n    // directive instance hasn't rendered its element to it before us); that\n    // only happens in the event of the directive being cleared (not via manual\n    // disconnection)\n    if (this._lastElementForRef === this._element) {\n      this._updateRefValue(undefined);\n    }\n  }\n\n  override reconnected() {\n    // If we were manually disconnected, we can safely put our element back in\n    // the box, since no rendering could have occurred to change its state\n    this._updateRefValue(this._element);\n  }\n}\n\n/**\n * Sets the value of a Ref object or calls a ref callback with the element it's\n * bound to.\n *\n * A Ref object acts as a container for a reference to an element. A ref\n * callback is a function that takes an element as its only argument.\n *\n * The ref directive sets the value of the Ref object or calls the ref callback\n * during rendering, if the referenced element changed.\n *\n * Note: If a ref callback is rendered to a different element position or is\n * removed in a subsequent render, it will first be called with `undefined`,\n * followed by another call with the new element it was rendered to (if any).\n *\n * ```js\n * // Using Ref object\n * const inputRef = createRef();\n * render(html`<input ${ref(inputRef)}>`, container);\n * inputRef.value.focus();\n *\n * // Using callback\n * const callback = (inputElement) => inputElement.focus();\n * render(html`<input ${ref(callback)}>`, container);\n * ```\n */\nexport const ref = directive(RefDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {RefDirective};\n", "/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange} from '../lit-html.js';\nimport {\n  directive,\n  Directive,\n  DirectiveParameters,\n  PartInfo,\n  PartType,\n} from '../directive.js';\n\n/**\n * A key-value set of class names to truthy values.\n */\nexport interface ClassInfo {\n  readonly [name: string]: string | boolean | number;\n}\n\nclass ClassMapDirective extends Directive {\n  /**\n   * Stores the ClassInfo object applied to a given AttributePart.\n   * Used to unset existing values when a new ClassInfo object is applied.\n   */\n  private _previousClasses?: Set<string>;\n  private _staticClasses?: Set<string>;\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (\n      partInfo.type !== PartType.ATTRIBUTE ||\n      partInfo.name !== 'class' ||\n      (partInfo.strings?.length as number) > 2\n    ) {\n      throw new Error(\n        '`classMap()` can only be used in the `class` attribute ' +\n          'and must be the only part in the attribute.'\n      );\n    }\n  }\n\n  render(classInfo: ClassInfo) {\n    // Add spaces to ensure separation from static classes\n    return (\n      ' ' +\n      Object.keys(classInfo)\n        .filter((key) => classInfo[key])\n        .join(' ') +\n      ' '\n    );\n  }\n\n  override update(part: AttributePart, [classInfo]: DirectiveParameters<this>) {\n    // Remember dynamic classes on the first render\n    if (this._previousClasses === undefined) {\n      this._previousClasses = new Set();\n      if (part.strings !== undefined) {\n        this._staticClasses = new Set(\n          part.strings\n            .join(' ')\n            .split(/\\s/)\n            .filter((s) => s !== '')\n        );\n      }\n      for (const name in classInfo) {\n        if (classInfo[name] && !this._staticClasses?.has(name)) {\n          this._previousClasses.add(name);\n        }\n      }\n      return this.render(classInfo);\n    }\n\n    const classList = part.element.classList;\n\n    // Remove old classes that no longer apply\n    // We use forEach() instead of for-of so that we don't require down-level\n    // iteration.\n    this._previousClasses.forEach((name) => {\n      if (!(name in classInfo)) {\n        classList.remove(name);\n        this._previousClasses!.delete(name);\n      }\n    });\n\n    // Add or remove classes based on their classMap value\n    for (const name in classInfo) {\n      // We explicitly want a loose truthy check of `value` because it seems\n      // more convenient that '' and 0 are skipped.\n      const value = !!classInfo[name];\n      if (\n        value !== this._previousClasses.has(name) &&\n        !this._staticClasses?.has(name)\n      ) {\n        if (value) {\n          classList.add(name);\n          this._previousClasses.add(name);\n        } else {\n          classList.remove(name);\n          this._previousClasses.delete(name);\n        }\n      }\n    }\n    return noChange;\n  }\n}\n\n/**\n * A directive that applies dynamic CSS classes.\n *\n * This must be used in the `class` attribute and must be the only part used in\n * the attribute. It takes each property in the `classInfo` argument and adds\n * the property name to the element's `classList` if the property value is\n * truthy; if the property value is falsey, the property name is removed from\n * the element's `class`.\n *\n * For example `{foo: bar}` applies the class `foo` if the value of `bar` is\n * truthy.\n *\n * @param classInfo\n */\nexport const classMap = directive(ClassMapDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {ClassMapDirective};\n", "/**! \n * hotkeys-js v3.8.9 \n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies. \n * \n * Copyright (c) 2022 kenny wong <wowohoo@qq.com> \n * http://jaywcjlove.github.io/hotkeys \n * Licensed under the MIT license \n */\n\nvar isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false; // \u7ED1\u5B9A\u4E8B\u4EF6\n\nfunction addEvent(object, event, method) {\n  if (object.addEventListener) {\n    object.addEventListener(event, method, false);\n  } else if (object.attachEvent) {\n    object.attachEvent(\"on\".concat(event), function () {\n      method(window.event);\n    });\n  }\n} // \u4FEE\u9970\u952E\u8F6C\u6362\u6210\u5BF9\u5E94\u7684\u952E\u7801\n\n\nfunction getMods(modifier, key) {\n  var mods = key.slice(0, key.length - 1);\n\n  for (var i = 0; i < mods.length; i++) {\n    mods[i] = modifier[mods[i].toLowerCase()];\n  }\n\n  return mods;\n} // \u5904\u7406\u4F20\u7684key\u5B57\u7B26\u4E32\u8F6C\u6362\u6210\u6570\u7EC4\n\n\nfunction getKeys(key) {\n  if (typeof key !== 'string') key = '';\n  key = key.replace(/\\s/g, ''); // \u5339\u914D\u4EFB\u4F55\u7A7A\u767D\u5B57\u7B26,\u5305\u62EC\u7A7A\u683C\u3001\u5236\u8868\u7B26\u3001\u6362\u9875\u7B26\u7B49\u7B49\n\n  var keys = key.split(','); // \u540C\u65F6\u8BBE\u7F6E\u591A\u4E2A\u5FEB\u6377\u952E\uFF0C\u4EE5','\u5206\u5272\n\n  var index = keys.lastIndexOf(''); // \u5FEB\u6377\u952E\u53EF\u80FD\u5305\u542B','\uFF0C\u9700\u7279\u6B8A\u5904\u7406\n\n  for (; index >= 0;) {\n    keys[index - 1] += ',';\n    keys.splice(index, 1);\n    index = keys.lastIndexOf('');\n  }\n\n  return keys;\n} // \u6BD4\u8F83\u4FEE\u9970\u952E\u7684\u6570\u7EC4\n\n\nfunction compareArray(a1, a2) {\n  var arr1 = a1.length >= a2.length ? a1 : a2;\n  var arr2 = a1.length >= a2.length ? a2 : a1;\n  var isIndex = true;\n\n  for (var i = 0; i < arr1.length; i++) {\n    if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n  }\n\n  return isIndex;\n}\n\nvar _keyMap = {\n  backspace: 8,\n  tab: 9,\n  clear: 12,\n  enter: 13,\n  return: 13,\n  esc: 27,\n  escape: 27,\n  space: 32,\n  left: 37,\n  up: 38,\n  right: 39,\n  down: 40,\n  del: 46,\n  delete: 46,\n  ins: 45,\n  insert: 45,\n  home: 36,\n  end: 35,\n  pageup: 33,\n  pagedown: 34,\n  capslock: 20,\n  num_0: 96,\n  num_1: 97,\n  num_2: 98,\n  num_3: 99,\n  num_4: 100,\n  num_5: 101,\n  num_6: 102,\n  num_7: 103,\n  num_8: 104,\n  num_9: 105,\n  num_multiply: 106,\n  num_add: 107,\n  num_enter: 108,\n  num_subtract: 109,\n  num_decimal: 110,\n  num_divide: 111,\n  '\u21EA': 20,\n  ',': 188,\n  '.': 190,\n  '/': 191,\n  '`': 192,\n  '-': isff ? 173 : 189,\n  '=': isff ? 61 : 187,\n  ';': isff ? 59 : 186,\n  '\\'': 222,\n  '[': 219,\n  ']': 221,\n  '\\\\': 220\n}; // Modifier Keys\n\nvar _modifier = {\n  // shiftKey\n  '\u21E7': 16,\n  shift: 16,\n  // altKey\n  '\u2325': 18,\n  alt: 18,\n  option: 18,\n  // ctrlKey\n  '\u2303': 17,\n  ctrl: 17,\n  control: 17,\n  // metaKey\n  '\u2318': 91,\n  cmd: 91,\n  command: 91\n};\nvar modifierMap = {\n  16: 'shiftKey',\n  18: 'altKey',\n  17: 'ctrlKey',\n  91: 'metaKey',\n  shiftKey: 16,\n  ctrlKey: 17,\n  altKey: 18,\n  metaKey: 91\n};\nvar _mods = {\n  16: false,\n  18: false,\n  17: false,\n  91: false\n};\nvar _handlers = {}; // F1~F12 special key\n\nfor (var k = 1; k < 20; k++) {\n  _keyMap[\"f\".concat(k)] = 111 + k;\n}\n\nvar _downKeys = []; // \u8BB0\u5F55\u6441\u4E0B\u7684\u7ED1\u5B9A\u952E\n\nvar winListendFocus = false; // window\u662F\u5426\u5DF2\u7ECF\u76D1\u542C\u4E86focus\u4E8B\u4EF6\n\nvar _scope = 'all'; // \u9ED8\u8BA4\u70ED\u952E\u8303\u56F4\n\nvar elementHasBindEvent = []; // \u5DF2\u7ED1\u5B9A\u4E8B\u4EF6\u7684\u8282\u70B9\u8BB0\u5F55\n// \u8FD4\u56DE\u952E\u7801\n\nvar code = function code(x) {\n  return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n}; // \u8BBE\u7F6E\u83B7\u53D6\u5F53\u524D\u8303\u56F4\uFF08\u9ED8\u8BA4\u4E3A'\u6240\u6709'\uFF09\n\n\nfunction setScope(scope) {\n  _scope = scope || 'all';\n} // \u83B7\u53D6\u5F53\u524D\u8303\u56F4\n\n\nfunction getScope() {\n  return _scope || 'all';\n} // \u83B7\u53D6\u6441\u4E0B\u7ED1\u5B9A\u952E\u7684\u952E\u503C\n\n\nfunction getPressedKeyCodes() {\n  return _downKeys.slice(0);\n} // \u8868\u5355\u63A7\u4EF6\u63A7\u4EF6\u5224\u65AD \u8FD4\u56DE Boolean\n// hotkey is effective only when filter return true\n\n\nfunction filter(event) {\n  var target = event.target || event.srcElement;\n  var tagName = target.tagName;\n  var flag = true; // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n\n  if (target.isContentEditable || (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n    flag = false;\n  }\n\n  return flag;\n} // \u5224\u65AD\u6441\u4E0B\u7684\u952E\u662F\u5426\u4E3A\u67D0\u4E2A\u952E\uFF0C\u8FD4\u56DEtrue\u6216\u8005false\n\n\nfunction isPressed(keyCode) {\n  if (typeof keyCode === 'string') {\n    keyCode = code(keyCode); // \u8F6C\u6362\u6210\u952E\u7801\n  }\n\n  return _downKeys.indexOf(keyCode) !== -1;\n} // \u5FAA\u73AF\u5220\u9664handlers\u4E2D\u7684\u6240\u6709 scope(\u8303\u56F4)\n\n\nfunction deleteScope(scope, newScope) {\n  var handlers;\n  var i; // \u6CA1\u6709\u6307\u5B9Ascope\uFF0C\u83B7\u53D6scope\n\n  if (!scope) scope = getScope();\n\n  for (var key in _handlers) {\n    if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n      handlers = _handlers[key];\n\n      for (i = 0; i < handlers.length;) {\n        if (handlers[i].scope === scope) handlers.splice(i, 1);else i++;\n      }\n    }\n  } // \u5982\u679Cscope\u88AB\u5220\u9664\uFF0C\u5C06scope\u91CD\u7F6E\u4E3Aall\n\n\n  if (getScope() === scope) setScope(newScope || 'all');\n} // \u6E05\u9664\u4FEE\u9970\u952E\n\n\nfunction clearModifier(event) {\n  var key = event.keyCode || event.which || event.charCode;\n\n  var i = _downKeys.indexOf(key); // \u4ECE\u5217\u8868\u4E2D\u6E05\u9664\u6309\u538B\u8FC7\u7684\u952E\n\n\n  if (i >= 0) {\n    _downKeys.splice(i, 1);\n  } // \u7279\u6B8A\u5904\u7406 cmmand \u952E\uFF0C\u5728 cmmand \u7EC4\u5408\u5FEB\u6377\u952E keyup \u53EA\u6267\u884C\u4E00\u6B21\u7684\u95EE\u9898\n\n\n  if (event.key && event.key.toLowerCase() === 'meta') {\n    _downKeys.splice(0, _downKeys.length);\n  } // \u4FEE\u9970\u952E shiftKey altKey ctrlKey (command||metaKey) \u6E05\u9664\n\n\n  if (key === 93 || key === 224) key = 91;\n\n  if (key in _mods) {\n    _mods[key] = false; // \u5C06\u4FEE\u9970\u952E\u91CD\u7F6E\u4E3Afalse\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = false;\n    }\n  }\n}\n\nfunction unbind(keysInfo) {\n  // unbind(), unbind all keys\n  if (!keysInfo) {\n    Object.keys(_handlers).forEach(function (key) {\n      return delete _handlers[key];\n    });\n  } else if (Array.isArray(keysInfo)) {\n    // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n    keysInfo.forEach(function (info) {\n      if (info.key) eachUnbind(info);\n    });\n  } else if (typeof keysInfo === 'object') {\n    // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n    if (keysInfo.key) eachUnbind(keysInfo);\n  } else if (typeof keysInfo === 'string') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    // support old method\n    // eslint-disable-line\n    var scope = args[0],\n        method = args[1];\n\n    if (typeof scope === 'function') {\n      method = scope;\n      scope = '';\n    }\n\n    eachUnbind({\n      key: keysInfo,\n      scope: scope,\n      method: method,\n      splitKey: '+'\n    });\n  }\n} // \u89E3\u9664\u7ED1\u5B9A\u67D0\u4E2A\u8303\u56F4\u7684\u5FEB\u6377\u952E\n\n\nvar eachUnbind = function eachUnbind(_ref) {\n  var key = _ref.key,\n      scope = _ref.scope,\n      method = _ref.method,\n      _ref$splitKey = _ref.splitKey,\n      splitKey = _ref$splitKey === void 0 ? '+' : _ref$splitKey;\n  var multipleKeys = getKeys(key);\n  multipleKeys.forEach(function (originKey) {\n    var unbindKeys = originKey.split(splitKey);\n    var len = unbindKeys.length;\n    var lastKey = unbindKeys[len - 1];\n    var keyCode = lastKey === '*' ? '*' : code(lastKey);\n    if (!_handlers[keyCode]) return; // \u5224\u65AD\u662F\u5426\u4F20\u5165\u8303\u56F4\uFF0C\u6CA1\u6709\u5C31\u83B7\u53D6\u8303\u56F4\n\n    if (!scope) scope = getScope();\n    var mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n    _handlers[keyCode] = _handlers[keyCode].filter(function (record) {\n      // \u901A\u8FC7\u51FD\u6570\u5224\u65AD\uFF0C\u662F\u5426\u89E3\u9664\u7ED1\u5B9A\uFF0C\u51FD\u6570\u76F8\u7B49\u76F4\u63A5\u8FD4\u56DE\n      var isMatchingMethod = method ? record.method === method : true;\n      return !(isMatchingMethod && record.scope === scope && compareArray(record.mods, mods));\n    });\n  });\n}; // \u5BF9\u76D1\u542C\u5BF9\u5E94\u5FEB\u6377\u952E\u7684\u56DE\u8C03\u51FD\u6570\u8FDB\u884C\u5904\u7406\n\n\nfunction eventHandler(event, handler, scope, element) {\n  if (handler.element !== element) {\n    return;\n  }\n\n  var modifiersMatch; // \u770B\u5B83\u662F\u5426\u5728\u5F53\u524D\u8303\u56F4\n\n  if (handler.scope === scope || handler.scope === 'all') {\n    // \u68C0\u67E5\u662F\u5426\u5339\u914D\u4FEE\u9970\u7B26\uFF08\u5982\u679C\u6709\u8FD4\u56DEtrue\uFF09\n    modifiersMatch = handler.mods.length > 0;\n\n    for (var y in _mods) {\n      if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n        if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n          modifiersMatch = false;\n        }\n      }\n    } // \u8C03\u7528\u5904\u7406\u7A0B\u5E8F\uFF0C\u5982\u679C\u662F\u4FEE\u9970\u952E\u4E0D\u505A\u5904\u7406\n\n\n    if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n      if (handler.method(event, handler) === false) {\n        if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n        if (event.stopPropagation) event.stopPropagation();\n        if (event.cancelBubble) event.cancelBubble = true;\n      }\n    }\n  }\n} // \u5904\u7406keydown\u4E8B\u4EF6\n\n\nfunction dispatch(event, element) {\n  var asterisk = _handlers['*'];\n  var key = event.keyCode || event.which || event.charCode; // \u8868\u5355\u63A7\u4EF6\u8FC7\u6EE4 \u9ED8\u8BA4\u8868\u5355\u63A7\u4EF6\u4E0D\u89E6\u53D1\u5FEB\u6377\u952E\n\n  if (!hotkeys.filter.call(this, event)) return; // Gecko(Firefox)\u7684command\u952E\u503C224\uFF0C\u5728Webkit(Chrome)\u4E2D\u4FDD\u6301\u4E00\u81F4\n  // Webkit\u5DE6\u53F3 command \u952E\u503C\u4E0D\u4E00\u6837\n\n  if (key === 93 || key === 224) key = 91;\n  /**\n   * Collect bound keys\n   * If an Input Method Editor is processing key input and the event is keydown, return 229.\n   * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n   * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n   */\n\n  if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n  /**\n   * Jest test cases are required.\n   * ===============================\n   */\n\n  ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(function (keyName) {\n    var keyNum = modifierMap[keyName];\n\n    if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n      _downKeys.push(keyNum);\n    } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n      _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n    } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n      /**\n       * Fix if Command is pressed:\n       * ===============================\n       */\n      if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n        _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n      }\n    }\n  });\n  /**\n   * -------------------------------\n   */\n\n  if (key in _mods) {\n    _mods[key] = true; // \u5C06\u7279\u6B8A\u5B57\u7B26\u7684key\u6CE8\u518C\u5230 hotkeys \u4E0A\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = true;\n    }\n\n    if (!asterisk) return;\n  } // \u5C06 modifierMap \u91CC\u9762\u7684\u4FEE\u9970\u952E\u7ED1\u5B9A\u5230 event \u4E2D\n\n\n  for (var e in _mods) {\n    if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n      _mods[e] = event[modifierMap[e]];\n    }\n  }\n  /**\n   * https://github.com/jaywcjlove/hotkeys/pull/129\n   * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n   * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type \u03BC.\n   * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n   */\n\n\n  if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n    if (_downKeys.indexOf(17) === -1) {\n      _downKeys.push(17);\n    }\n\n    if (_downKeys.indexOf(18) === -1) {\n      _downKeys.push(18);\n    }\n\n    _mods[17] = true;\n    _mods[18] = true;\n  } // \u83B7\u53D6\u8303\u56F4 \u9ED8\u8BA4\u4E3A `all`\n\n\n  var scope = getScope(); // \u5BF9\u4EFB\u4F55\u5FEB\u6377\u952E\u90FD\u9700\u8981\u505A\u7684\u5904\u7406\n\n  if (asterisk) {\n    for (var i = 0; i < asterisk.length; i++) {\n      if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n        eventHandler(event, asterisk[i], scope, element);\n      }\n    }\n  } // key \u4E0D\u5728 _handlers \u4E2D\u8FD4\u56DE\n\n\n  if (!(key in _handlers)) return;\n\n  for (var _i = 0; _i < _handlers[key].length; _i++) {\n    if (event.type === 'keydown' && _handlers[key][_i].keydown || event.type === 'keyup' && _handlers[key][_i].keyup) {\n      if (_handlers[key][_i].key) {\n        var record = _handlers[key][_i];\n        var splitKey = record.splitKey;\n        var keyShortcut = record.key.split(splitKey);\n        var _downKeysCurrent = []; // \u8BB0\u5F55\u5F53\u524D\u6309\u952E\u952E\u503C\n\n        for (var a = 0; a < keyShortcut.length; a++) {\n          _downKeysCurrent.push(code(keyShortcut[a]));\n        }\n\n        if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n          // \u627E\u5230\u5904\u7406\u5185\u5BB9\n          eventHandler(event, record, scope, element);\n        }\n      }\n    }\n  }\n} // \u5224\u65AD element \u662F\u5426\u5DF2\u7ECF\u7ED1\u5B9A\u4E8B\u4EF6\n\n\nfunction isElementBind(element) {\n  return elementHasBindEvent.indexOf(element) > -1;\n}\n\nfunction hotkeys(key, option, method) {\n  _downKeys = [];\n  var keys = getKeys(key); // \u9700\u8981\u5904\u7406\u7684\u5FEB\u6377\u952E\u5217\u8868\n\n  var mods = [];\n  var scope = 'all'; // scope\u9ED8\u8BA4\u4E3Aall\uFF0C\u6240\u6709\u8303\u56F4\u90FD\u6709\u6548\n\n  var element = document; // \u5FEB\u6377\u952E\u4E8B\u4EF6\u7ED1\u5B9A\u8282\u70B9\n\n  var i = 0;\n  var keyup = false;\n  var keydown = true;\n  var splitKey = '+'; // \u5BF9\u4E3A\u8BBE\u5B9A\u8303\u56F4\u7684\u5224\u65AD\n\n  if (method === undefined && typeof option === 'function') {\n    method = option;\n  }\n\n  if (Object.prototype.toString.call(option) === '[object Object]') {\n    if (option.scope) scope = option.scope; // eslint-disable-line\n\n    if (option.element) element = option.element; // eslint-disable-line\n\n    if (option.keyup) keyup = option.keyup; // eslint-disable-line\n\n    if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n\n    if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n  }\n\n  if (typeof option === 'string') scope = option; // \u5BF9\u4E8E\u6BCF\u4E2A\u5FEB\u6377\u952E\u8FDB\u884C\u5904\u7406\n\n  for (; i < keys.length; i++) {\n    key = keys[i].split(splitKey); // \u6309\u952E\u5217\u8868\n\n    mods = []; // \u5982\u679C\u662F\u7EC4\u5408\u5FEB\u6377\u952E\u53D6\u5F97\u7EC4\u5408\u5FEB\u6377\u952E\n\n    if (key.length > 1) mods = getMods(_modifier, key); // \u5C06\u975E\u4FEE\u9970\u952E\u8F6C\u5316\u4E3A\u952E\u7801\n\n    key = key[key.length - 1];\n    key = key === '*' ? '*' : code(key); // *\u8868\u793A\u5339\u914D\u6240\u6709\u5FEB\u6377\u952E\n    // \u5224\u65ADkey\u662F\u5426\u5728_handlers\u4E2D\uFF0C\u4E0D\u5728\u5C31\u8D4B\u4E00\u4E2A\u7A7A\u6570\u7EC4\n\n    if (!(key in _handlers)) _handlers[key] = [];\n\n    _handlers[key].push({\n      keyup: keyup,\n      keydown: keydown,\n      scope: scope,\n      mods: mods,\n      shortcut: keys[i],\n      method: method,\n      key: keys[i],\n      splitKey: splitKey,\n      element: element\n    });\n  } // \u5728\u5168\u5C40document\u4E0A\u8BBE\u7F6E\u5FEB\u6377\u952E\n\n\n  if (typeof element !== 'undefined' && !isElementBind(element) && window) {\n    elementHasBindEvent.push(element);\n    addEvent(element, 'keydown', function (e) {\n      dispatch(e, element);\n    });\n\n    if (!winListendFocus) {\n      winListendFocus = true;\n      addEvent(window, 'focus', function () {\n        _downKeys = [];\n      });\n    }\n\n    addEvent(element, 'keyup', function (e) {\n      dispatch(e, element);\n      clearModifier(e);\n    });\n  }\n}\n\nvar _api = {\n  setScope: setScope,\n  getScope: getScope,\n  deleteScope: deleteScope,\n  getPressedKeyCodes: getPressedKeyCodes,\n  isPressed: isPressed,\n  filter: filter,\n  unbind: unbind\n};\n\nfor (var a in _api) {\n  if (Object.prototype.hasOwnProperty.call(_api, a)) {\n    hotkeys[a] = _api[a];\n  }\n}\n\nif (typeof window !== 'undefined') {\n  var _hotkeys = window.hotkeys;\n\n  hotkeys.noConflict = function (deep) {\n    if (deep && window.hotkeys === hotkeys) {\n      window.hotkeys = _hotkeys;\n    }\n\n    return hotkeys;\n  };\n\n  window.hotkeys = hotkeys;\n}\n\nexport { hotkeys as default };\n", "import {LitElement, html, css, TemplateResult} from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\nimport {ref, createRef} from 'lit/directives/ref.js';\n\n@customElement('ninja-header')\nexport class NinjaHeader extends LitElement {\n  static override styles = css`\n    :host {\n      flex: 1;\n      position: relative;\n    }\n    .search {\n      padding: 1.25em;\n      flex-grow: 1;\n      flex-shrink: 0;\n      margin: 0px;\n      border: none;\n      appearance: none;\n      font-size: 1.125em;\n      background: transparent;\n      caret-color: var(--ninja-accent-color);\n      color: var(--ninja-text-color);\n      outline: none;\n      font-family: var(--ninja-font-family);\n    }\n    .search::placeholder {\n      color: var(--ninja-placeholder-color);\n    }\n    .breadcrumb-list {\n      padding: 1em 4em 0 1em;\n      display: flex;\n      flex-direction: row;\n      align-items: stretch;\n      justify-content: flex-start;\n      flex: initial;\n    }\n\n    .breadcrumb {\n      background: var(--ninja-secondary-background-color);\n      text-align: center;\n      line-height: 1.2em;\n      border-radius: var(--ninja-key-border-radius);\n      border: 0;\n      cursor: pointer;\n      padding: 0.1em 0.5em;\n      color: var(--ninja-secondary-text-color);\n      margin-right: 0.5em;\n      outline: none;\n      font-family: var(--ninja-font-family);\n    }\n\n    .search-wrapper {\n      display: flex;\n      border-bottom: var(--ninja-separate-border);\n    }\n  `;\n\n  @property()\n  placeholder = '';\n\n  @property({type: Boolean})\n  hideBreadcrumbs = false;\n\n  @property()\n  breadcrumbHome = 'Home';\n\n  @property({type: Array})\n  breadcrumbs: string[] = [];\n\n  private _inputRef = createRef<HTMLInputElement>();\n\n  override render() {\n    let breadcrumbs: TemplateResult<1> | '' = '';\n    if (!this.hideBreadcrumbs) {\n      const itemTemplates = [];\n      for (const breadcrumb of this.breadcrumbs) {\n        itemTemplates.push(\n          html`<button\n            tabindex=\"-1\"\n            @click=${() => this.selectParent(breadcrumb)}\n            class=\"breadcrumb\"\n          >\n            ${breadcrumb}\n          </button>`\n        );\n      }\n      breadcrumbs = html`<div class=\"breadcrumb-list\">\n        <button\n          tabindex=\"-1\"\n          @click=${() => this.selectParent()}\n          class=\"breadcrumb\"\n        >\n          ${this.breadcrumbHome}\n        </button>\n        ${itemTemplates}\n      </div>`;\n    }\n\n    return html`\n      ${breadcrumbs}\n      <div part=\"ninja-input-wrapper\" class=\"search-wrapper\">\n        <input\n          part=\"ninja-input\"\n          type=\"text\"\n          id=\"search\"\n          spellcheck=\"false\"\n          autocomplete=\"off\"\n          @input=\"${this._handleInput}\"\n          ${ref(this._inputRef)}\n          placeholder=\"${this.placeholder}\"\n          class=\"search\"\n        />\n      </div>\n    `;\n  }\n\n  setSearch(value: string) {\n    if (this._inputRef.value) {\n      this._inputRef.value.value = value;\n    }\n  }\n\n  focusSearch() {\n    requestAnimationFrame(() => this._inputRef.value!.focus());\n  }\n\n  private _handleInput(event: Event) {\n    const input = event.target as HTMLInputElement;\n    this.dispatchEvent(\n      new CustomEvent('change', {\n        detail: {search: input.value},\n        bubbles: false,\n        composed: false,\n      })\n    );\n  }\n\n  private selectParent(breadcrumb?: string) {\n    this.dispatchEvent(\n      new CustomEvent('setParent', {\n        detail: {parent: breadcrumb},\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  override firstUpdated() {\n    this.focusSearch();\n  }\n\n  _close() {\n    this.dispatchEvent(\n      new CustomEvent('close', {bubbles: true, composed: true})\n    );\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'ninja-header': NinjaHeader;\n  }\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing, TemplateResult, noChange} from '../lit-html.js';\nimport {directive, Directive, PartInfo, PartType} from '../directive.js';\n\nconst HTML_RESULT = 1;\n\nexport class UnsafeHTMLDirective extends Directive {\n  static directiveName = 'unsafeHTML';\n  static resultType = HTML_RESULT;\n\n  private _value: unknown = nothing;\n  private _templateResult?: TemplateResult;\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (partInfo.type !== PartType.CHILD) {\n      throw new Error(\n        `${\n          (this.constructor as typeof UnsafeHTMLDirective).directiveName\n        }() can only be used in child bindings`\n      );\n    }\n  }\n\n  render(value: string | typeof nothing | typeof noChange | undefined | null) {\n    if (value === nothing || value == null) {\n      this._templateResult = undefined;\n      return (this._value = value);\n    }\n    if (value === noChange) {\n      return value;\n    }\n    if (typeof value != 'string') {\n      throw new Error(\n        `${\n          (this.constructor as typeof UnsafeHTMLDirective).directiveName\n        }() called with a non-string value`\n      );\n    }\n    if (value === this._value) {\n      return this._templateResult;\n    }\n    this._value = value;\n    const strings = [value] as unknown as TemplateStringsArray;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (strings as any).raw = strings;\n    // WARNING: impersonating a TemplateResult like this is extremely\n    // dangerous. Third-party directives should not do this.\n    return (this._templateResult = {\n      // Cast to a known set of integers that satisfy ResultType so that we\n      // don't have to export ResultType and possibly encourage this pattern.\n      // This property needs to remain unminified.\n      ['_$litType$']: (this.constructor as typeof UnsafeHTMLDirective)\n        .resultType as 1 | 2,\n      strings,\n      values: [],\n    });\n  }\n}\n\n/**\n * Renders the result as HTML, rather than text.\n *\n * The values `undefined`, `null`, and `nothing`, will all result in no content\n * (empty string) being rendered.\n *\n * Note, this is unsafe to use with any user-provided input that hasn't been\n * sanitized or escaped, as it may lead to cross-site-scripting\n * vulnerabilities.\n */\nexport const unsafeHTML = directive(UnsafeHTMLDirective);\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(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)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n  return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __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 = { enumerable: true, get: function() { return m[k]; } };\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});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\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}\n\nexport function __spreadArray(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}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose;\n    if (async) {\n        if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n        dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n        if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n        dispose = value[Symbol.dispose];\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  function next() {\n    while (env.stack.length) {\n      var rec = env.stack.pop();\n      try {\n        var result = rec.dispose && rec.dispose.call(rec.value);\n        if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n      }\n      catch (e) {\n          fail(e);\n      }\n    }\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n};\n", "/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-LIcense-Identifier: Apache-2.0\n */\nimport {css} from 'lit';\nexport const styles = css`:host{font-family:var(--mdc-icon-font, \"Material Icons\");font-weight:normal;font-style:normal;font-size:var(--mdc-icon-size, 24px);line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}`;\n", "/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Style preference for leading underscores.\n// tslint:disable:strip-private-property-underscore\n\nimport {html, LitElement, TemplateResult} from 'lit';\nimport {customElement} from 'lit/decorators.js';\n\nimport {styles} from './mwc-icon-host.css';\n\n/** @soyCompatible */\n@customElement('mwc-icon')\nexport class Icon extends LitElement {\n  static override styles = [styles];\n\n  /** @soyTemplate */\n  protected override render(): TemplateResult {\n    return html`<span><slot></slot></span>`;\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'mwc-icon': Icon;\n  }\n}\n", "import {LitElement, html, css, } from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {unsafeHTML} from 'lit/directives/unsafe-html.js';\nimport '@material/mwc-icon';\n\nimport {INinjaAction} from './interfaces/ininja-action.js';\n\n\n@customElement('ninja-action')\nexport class NinjaAction extends LitElement {\n  static override styles = css`\n    :host {\n      display: flex;\n      width: 100%;\n    }\n    .ninja-action {\n      padding: 0.75em 1em;\n      display: flex;\n      border-left: 2px solid transparent;\n      align-items: center;\n      justify-content: start;\n      outline: none;\n      transition: color 0s ease 0s;\n      width: 100%;\n    }\n    .ninja-action.selected {\n      cursor: pointer;\n      color: var(--ninja-selected-text-color);\n      background-color: var(--ninja-selected-background);\n      border-left: 2px solid var(--ninja-accent-color);\n      outline: none;\n    }\n    .ninja-action.selected .ninja-icon {\n      color: var(--ninja-selected-text-color);\n    }\n    .ninja-icon {\n      font-size: var(--ninja-icon-size);\n      max-width: var(--ninja-icon-size);\n      max-height: var(--ninja-icon-size);\n      margin-right: 1em;\n      color: var(--ninja-icon-color);\n      margin-right: 1em;\n      position: relative;\n    }\n\n    .ninja-title {\n      flex-shrink: 0.01;\n      margin-right: 0.5em;\n      flex-grow: 1;\n      font-size: 0.8125em;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n    .ninja-hotkeys {\n      margin-left: 0.5em;\n      flex-shrink: 0;\n      width: min-content;\n    }\n\n    .ninja-hotkey {\n      background: var(--ninja-secondary-background-color);\n      padding: 0.06em 0.25em;\n      border-radius: var(--ninja-key-border-radius);\n      text-transform: capitalize;\n      color: var(--ninja-secondary-text-color);\n      font-size: 0.75em;\n      margin-left: 0.5em;\n    }\n  `;\n\n  @property({type: Object})\n  action!: INinjaAction;\n\n  @property({type: Boolean})\n  selected = false;\n\n  /**\n   * Display hotkey as separate buttons on UI or as is\n   */\n  @property({type: Boolean})\n  hotKeysJoinedView = false;\n\n  /**\n   * Scroll to show element\n   */\n  ensureInView() {\n    requestAnimationFrame(() => this.scrollIntoView({block: 'nearest'}));\n  }\n\n  override click() {\n    this.dispatchEvent(\n      new CustomEvent('actionsSelected', {\n        detail: this.action,\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  constructor() {\n    super();\n    this.addEventListener('click', this.click);\n  }\n\n  override updated(changedProperties: Map<string, unknown>) {\n    if (changedProperties.has('selected')) {\n      if (this.selected) {\n        this.ensureInView();\n      }\n    }\n  }\n\n  override render() {\n    let icon;\n    if (this.action.mdIcon){\n      icon = html`<mwc-icon part=\"ninja-icon\" class=\"ninja-icon\">${this.action.mdIcon}</mwc-icon>`\n    } else if (this.action.icon){\n      icon = unsafeHTML(this.action.icon || '');\n    }\n\n    // const hotkey = this.action.hotkey\n    //   ? html`<div class=\"ninja-hotkey\">${this.action.hotkey}</div>`\n    //   : '';\n    let hotkey;\n    if (this.action.hotkey) {\n      if (this.hotKeysJoinedView) {\n        hotkey = html`<div class=\"ninja-hotkey\">${this.action.hotkey}</div>`;\n      } else {\n        hotkey = this.action.hotkey\n          .split('+')\n          .map((key) => html`<div class=\"ninja-hotkey\">${key}</div>`);\n      }\n    }\n\n    const classes = {\n      selected: this.selected,\n      'ninja-action': true,\n    };\n\n    return html`\n      <div class=\"ninja-action\" part=\"ninja-action ${this.selected ? 'ninja-selected' : ''}\" class=${classMap(classes)}>\n        ${icon}\n        <div class=\"ninja-title\">${this.action.title}</div>\n        ${hotkey}\n      </div>\n    `;\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'ninja-action': NinjaAction;\n  }\n}\n", "import {html} from 'lit';\n\nexport const footerHtml = html` <div class=\"modal-footer\" slot=\"footer\">\n  <span class=\"help\">\n    <svg\n      version=\"1.0\"\n      class=\"ninja-examplekey\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 1280 1280\"\n    >\n      <path\n        d=\"M1013 376c0 73.4-.4 113.3-1.1 120.2a159.9 159.9 0 0 1-90.2 127.3c-20 9.6-36.7 14-59.2 15.5-7.1.5-121.9.9-255 1h-242l95.5-95.5 95.5-95.5-38.3-38.2-38.2-38.3-160 160c-88 88-160 160.4-160 161 0 .6 72 73 160 161l160 160 38.2-38.3 38.3-38.2-95.5-95.5-95.5-95.5h251.1c252.9 0 259.8-.1 281.4-3.6 72.1-11.8 136.9-54.1 178.5-116.4 8.6-12.9 22.6-40.5 28-55.4 4.4-12 10.7-36.1 13.1-50.6 1.6-9.6 1.8-21 2.1-132.8l.4-122.2H1013v110z\"\n      />\n    </svg>\n\n    to select\n  </span>\n  <span class=\"help\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      class=\"ninja-examplekey\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n      <path\n        d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n      />\n    </svg>\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      class=\"ninja-examplekey\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n      <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n    </svg>\n    to navigate\n  </span>\n  <span class=\"help\">\n    <span class=\"ninja-examplekey esc\">esc</span>\n    to close\n  </span>\n  <span class=\"help\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      class=\"ninja-examplekey backspace\"\n      viewBox=\"0 0 20 20\"\n      fill=\"currentColor\"\n    >\n      <path\n        fill-rule=\"evenodd\"\n        d=\"M6.707 4.879A3 3 0 018.828 4H15a3 3 0 013 3v6a3 3 0 01-3 3H8.828a3 3 0 01-2.12-.879l-4.415-4.414a1 1 0 010-1.414l4.414-4.414zm4 2.414a1 1 0 00-1.414 1.414L10.586 10l-1.293 1.293a1 1 0 101.414 1.414L12 11.414l1.293 1.293a1 1 0 001.414-1.414L13.414 10l1.293-1.293a1 1 0 00-1.414-1.414L12 8.586l-1.293-1.293z\"\n        clip-rule=\"evenodd\"\n      />\n    </svg>\n    move to parent\n  </span>\n</div>`;\n", "import {css} from 'lit';\n\nexport const baseStyles = css`\n  :host {\n    --ninja-width: 640px;\n    --ninja-backdrop-filter: none;\n    --ninja-overflow-background: rgba(255, 255, 255, 0.5);\n    --ninja-text-color: rgb(60, 65, 73);\n    --ninja-font-size: 16px;\n    --ninja-top: 20%;\n\n    --ninja-key-border-radius: 0.25em;\n    --ninja-accent-color: rgb(110, 94, 210);\n    --ninja-secondary-background-color: rgb(239, 241, 244);\n    --ninja-secondary-text-color: rgb(107, 111, 118);\n\n    --ninja-selected-background: rgb(248, 249, 251);\n\n    --ninja-icon-color: var(--ninja-secondary-text-color);\n    --ninja-icon-size: 1.2em;\n    --ninja-separate-border: 1px solid var(--ninja-secondary-background-color);\n\n    --ninja-modal-background: #fff;\n    --ninja-modal-shadow: rgb(0 0 0 / 50%) 0px 16px 70px;\n\n    --ninja-actions-height: 300px;\n    --ninja-group-text-color: rgb(144, 149, 157);\n\n    --ninja-footer-background: rgba(242, 242, 242, 0.4);\n\n    --ninja-placeholder-color: #8e8e8e;\n\n    font-size: var(--ninja-font-size);\n\n    --ninja-z-index: 1;\n  }\n\n  :host(.dark) {\n    --ninja-backdrop-filter: none;\n    --ninja-overflow-background: rgba(0, 0, 0, 0.7);\n    --ninja-text-color: #7d7d7d;\n\n    --ninja-modal-background: rgba(17, 17, 17, 0.85);\n    --ninja-accent-color: rgb(110, 94, 210);\n    --ninja-secondary-background-color: rgba(51, 51, 51, 0.44);\n    --ninja-secondary-text-color: #888;\n\n    --ninja-selected-text-color: #eaeaea;\n    --ninja-selected-background: rgba(51, 51, 51, 0.44);\n\n    --ninja-icon-color: var(--ninja-secondary-text-color);\n    --ninja-separate-border: 1px solid var(--ninja-secondary-background-color);\n\n    --ninja-modal-shadow: 0 16px 70px rgba(0, 0, 0, 0.2);\n\n    --ninja-group-text-color: rgb(144, 149, 157);\n\n    --ninja-footer-background: rgba(30, 30, 30, 85%);\n  }\n\n  .modal {\n    display: none;\n    position: fixed;\n    z-index: var(--ninja-z-index);\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100%;\n    overflow: auto;\n    background: var(--ninja-overflow-background);\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    -webkit-backdrop-filter: var(--ninja-backdrop-filter);\n    backdrop-filter: var(--ninja-backdrop-filter);\n    text-align: left;\n    color: var(--ninja-text-color);\n    font-family: var(--ninja-font-family);\n  }\n  .modal.visible {\n    display: block;\n  }\n\n  .modal-content {\n    position: relative;\n    top: var(--ninja-top);\n    margin: auto;\n    padding: 0;\n    display: flex;\n    flex-direction: column;\n    flex-shrink: 1;\n    -webkit-box-flex: 1;\n    flex-grow: 1;\n    min-width: 0px;\n    will-change: transform;\n    background: var(--ninja-modal-background);\n    border-radius: 0.5em;\n    box-shadow: var(--ninja-modal-shadow);\n    max-width: var(--ninja-width);\n    overflow: hidden;\n  }\n\n  .bump {\n    animation: zoom-in-zoom-out 0.2s ease;\n  }\n\n  @keyframes zoom-in-zoom-out {\n    0% {\n      transform: scale(0.99);\n    }\n    50% {\n      transform: scale(1.01, 1.01);\n    }\n    100% {\n      transform: scale(1, 1);\n    }\n  }\n\n  .ninja-github {\n    color: var(--ninja-keys-text-color);\n    font-weight: normal;\n    text-decoration: none;\n  }\n\n  .actions-list {\n    max-height: var(--ninja-actions-height);\n    overflow: auto;\n    scroll-behavior: smooth;\n    position: relative;\n    margin: 0;\n    padding: 0.5em 0;\n    list-style: none;\n    scroll-behavior: smooth;\n  }\n\n  .group-header {\n    height: 1.375em;\n    line-height: 1.375em;\n    padding-left: 1.25em;\n    padding-top: 0.5em;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    overflow: hidden;\n    font-size: 0.75em;\n    line-height: 1em;\n    color: var(--ninja-group-text-color);\n    margin: 1px 0;\n  }\n\n  .modal-footer {\n    background: var(--ninja-footer-background);\n    padding: 0.5em 1em;\n    display: flex;\n    /* font-size: 0.75em; */\n    border-top: var(--ninja-separate-border);\n    color: var(--ninja-secondary-text-color);\n  }\n\n  .modal-footer .help {\n    display: flex;\n    margin-right: 1em;\n    align-items: center;\n    font-size: 0.75em;\n  }\n\n  .ninja-examplekey {\n    background: var(--ninja-secondary-background-color);\n    padding: 0.06em 0.25em;\n    border-radius: var(--ninja-key-border-radius);\n    color: var(--ninja-secondary-text-color);\n    width: 1em;\n    height: 1em;\n    margin-right: 0.5em;\n    font-size: 1.25em;\n    fill: currentColor;\n  }\n  .ninja-examplekey.esc {\n    width: auto;\n    height: auto;\n    font-size: 1.1em;\n  }\n  .ninja-examplekey.backspace {\n    opacity: 0.7;\n  }\n`;\n", "import {LitElement, html, TemplateResult, PropertyValues} from 'lit';\nimport {customElement, property, state} from 'lit/decorators.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {live} from 'lit/directives/live.js';\nimport {createRef, ref} from 'lit-html/directives/ref.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport hotkeys from 'hotkeys-js';\n\nimport './ninja-header.js';\nimport './ninja-action.js';\nimport {INinjaAction} from './interfaces/ininja-action.js';\nimport {NinjaHeader} from './ninja-header.js';\nimport {NinjaAction} from './ninja-action.js';\nimport {footerHtml} from './ninja-footer.js';\nimport {baseStyles} from './base-styles.js';\n\n@customElement('ninja-keys')\nexport class NinjaKeys extends LitElement {\n  static override styles = [baseStyles];\n\n  /**\n   * Search placeholder text\n   */\n  @property({type: String}) placeholder = 'Type a command or search...';\n\n  /**\n   * If true will register all hotkey for all actions\n   */\n  @property({type: Boolean}) disableHotkeys = false;\n\n  /**\n   * Show or hide breadcrumbs on header\n   */\n  @property({type: Boolean}) hideBreadcrumbs = false;\n\n  /**\n   * Open or hide shorcut\n   */\n  @property() openHotkey = 'cmd+k,ctrl+k';\n\n  /**\n   * Navigation Up hotkey\n   */\n  @property() navigationUpHotkey = 'up,shift+tab';\n\n  /**\n   * Navigation Down hotkey\n   */\n  @property() navigationDownHotkey = 'down,tab';\n\n  /**\n   * Close hotkey\n   */\n  @property() closeHotkey = 'esc';\n\n  /**\n   * Go back on one level if has parent menu\n   */\n  @property() goBackHotkey = 'backspace';\n\n  /**\n   * Select action and execute handler or open submenu\n   */\n  @property() selectHotkey = 'enter'; // enter,space\n\n  /**\n   * Show or hide breadcrumbs on header\n   */\n  @property({type: Boolean}) hotKeysJoinedView = false;\n\n  /**\n   * Disable load material icons font on connect\n   * If you use custom icons.\n   * Set this attribute to prevent load default icons font\n   */\n  @property({type: Boolean}) noAutoLoadMdIcons = false;\n\n  /**\n   * Array of actions\n   */\n  @property({\n    type: Array,\n    hasChanged() {\n      // Forced to trigger changed event always.\n      // Because of a lot of framework pattern wrap object with an Observer, like vue2.\n      // That's why object passed to web component always same and no render triggered. Issue #9\n      return true;\n    },\n  })\n  data = [] as Array<INinjaAction>;\n\n  /**\n   * Public methods\n   */\n\n  /**\n   * Show a modal\n   */\n  open(options: {parent?: string} = {}) {\n    this._bump = true;\n    this.visible = true;\n    this._headerRef.value!.focusSearch();\n    if (this._actionMatches.length > 0) {\n      this._selected = this._actionMatches[0];\n    }\n    this.setParent(options.parent);\n  }\n\n  /**\n   * Close modal\n   */\n  close() {\n    this._bump = false;\n    this.visible = false;\n  }\n\n  /**\n   * Navigate to group of actions\n   * @param parent id of parent group/action\n   */\n  setParent(parent?: string) {\n    if (!parent) {\n      this._currentRoot = undefined;\n      // this.breadcrumbs = [];\n    } else {\n      this._currentRoot = parent;\n    }\n    this._selected = undefined;\n    this._search = '';\n    this._headerRef.value!.setSearch('');\n  }\n\n  /**\n   * Show or hide element\n   */\n  @state() visible = false;\n  /**\n   * Temproray used for animation effect. TODO: change to animate logic\n   */\n  @state()\n  private _bump = true;\n\n  @state()\n  private _actionMatches = [] as Array<INinjaAction>;\n\n  @state()\n  private _search = '';\n\n  @state()\n  private _currentRoot?: string;\n\n  /**\n   * Array of actions in flat structure\n   */\n  @state() _flatData = [] as Array<INinjaAction>;\n\n  @state()\n  private get breadcrumbs() {\n    const path: string[] = [];\n    let parentAction = this._selected?.parent;\n    if (parentAction) {\n      path.push(parentAction);\n      while (parentAction) {\n        const action = this._flatData.find((a) => a.id === parentAction);\n        if (action?.parent) {\n          path.push(action.parent);\n        }\n        parentAction = action ? action.parent : undefined;\n      }\n    }\n    return path.reverse();\n  }\n\n  @state()\n  private _selected?: INinjaAction;\n\n  override connectedCallback() {\n    super.connectedCallback();\n\n    if (!this.noAutoLoadMdIcons) {\n      document.fonts.load('24px Material Icons', 'apps').then(() => {});\n    }\n\n    this._registerInternalHotkeys();\n  }\n\n  override disconnectedCallback() {\n    super.disconnectedCallback();\n    this._unregisterInternalHotkeys();\n  }\n\n  private _flattern(members: INinjaAction[], parent?: string): INinjaAction[] {\n    let children = [] as Array<any>;\n    if (!members) {\n      members = [];\n    }\n    return members\n      .map((mem) => {\n        const alreadyFlatternByUser =\n          mem.children &&\n          mem.children.some((value: any) => {\n            return typeof value == 'string';\n          });\n        const m = {...mem, parent: mem.parent || parent};\n        if (alreadyFlatternByUser) {\n          return m;\n        } else {\n          if (m.children && m.children.length) {\n            parent = mem.id;\n            children = [...children, ...m.children];\n          }\n          m.children = m.children ? m.children.map((c: any) => c.id) : [];\n          return m;\n        }\n      })\n      .concat(children.length ? this._flattern(children, parent) : children);\n  }\n\n  override update(changedProperties: PropertyValues<this>) {\n    if (changedProperties.has('data') && !this.disableHotkeys) {\n      this._flatData = this._flattern(this.data);\n\n      this._flatData\n        .filter((action) => !!action.hotkey)\n        .forEach((action) => {\n          hotkeys(action.hotkey!, (event) => {\n            event.preventDefault();\n            if (action.handler) {\n              action.handler(action);\n            }\n          });\n        });\n    }\n    super.update(changedProperties);\n  }\n\n  private _registerInternalHotkeys() {\n    if (this.openHotkey) {\n      hotkeys(this.openHotkey, (event) => {\n        event.preventDefault();\n        this.visible ? this.close() : this.open();\n      });\n    }\n\n    if (this.selectHotkey) {\n      hotkeys(this.selectHotkey, (event) => {\n        if (!this.visible) {\n          return;\n        }\n        event.preventDefault();\n        this._actionSelected(this._actionMatches[this._selectedIndex]);\n      });\n    }\n\n    if (this.goBackHotkey) {\n      hotkeys(this.goBackHotkey, (event) => {\n        if (!this.visible) {\n          return;\n        }\n        if (!this._search) {\n          event.preventDefault();\n          this._goBack();\n        }\n      });\n    }\n\n    if (this.navigationDownHotkey) {\n      hotkeys(this.navigationDownHotkey, (event) => {\n        if (!this.visible) {\n          return;\n        }\n        event.preventDefault();\n        if (this._selectedIndex >= this._actionMatches.length - 1) {\n          this._selected = this._actionMatches[0];\n        } else {\n          this._selected = this._actionMatches[this._selectedIndex + 1];\n        }\n      });\n    }\n\n    if (this.navigationUpHotkey) {\n      hotkeys(this.navigationUpHotkey, (event) => {\n        if (!this.visible) {\n          return;\n        }\n        event.preventDefault();\n        if (this._selectedIndex === 0) {\n          this._selected = this._actionMatches[this._actionMatches.length - 1];\n        } else {\n          this._selected = this._actionMatches[this._selectedIndex - 1];\n        }\n      });\n    }\n\n    if (this.closeHotkey) {\n      hotkeys(this.closeHotkey, () => {\n        if (!this.visible) {\n          return;\n        }\n        this.close();\n      });\n    }\n  }\n\n  private _unregisterInternalHotkeys() {\n    if (this.openHotkey) {\n      hotkeys.unbind(this.openHotkey)\n    }\n\n    if (this.selectHotkey) {\n      hotkeys.unbind(this.selectHotkey)\n    }\n\n    if (this.goBackHotkey) {\n      hotkeys.unbind(this.goBackHotkey)\n    }\n\n    if (this.navigationDownHotkey) {\n      hotkeys.unbind(this.navigationDownHotkey)\n    }\n\n    if (this.navigationUpHotkey) {\n      hotkeys.unbind(this.navigationUpHotkey)\n    }\n\n    if (this.closeHotkey) {\n      hotkeys.unbind(this.closeHotkey)\n    }\n  }\n\n\n  private _actionFocused(index: INinjaAction, $event: MouseEvent) {\n    // this.selectedIndex = index;\n    this._selected = index;\n    ($event.target as NinjaAction).ensureInView();\n  }\n\n  private _onTransitionEnd() {\n    this._bump = false;\n  }\n\n  private _goBack() {\n    const parent =\n      this.breadcrumbs.length > 1\n        ? this.breadcrumbs[this.breadcrumbs.length - 2]\n        : undefined;\n    this.setParent(parent);\n  }\n\n  private _headerRef = createRef<NinjaHeader>();\n\n  override render() {\n    const classes = {\n      bump: this._bump,\n      'modal-content': true,\n    };\n\n    const menuClasses = {\n      visible: this.visible,\n      modal: true,\n    };\n\n    const actionMatches = this._flatData.filter((action) => {\n      const regex = new RegExp(this._search, 'gi');\n      const matcher =\n        action.title.match(regex) || action.keywords?.match(regex);\n\n      if (!this._currentRoot && this._search) {\n        // global search for items on root\n        return matcher;\n      }\n\n      return action.parent === this._currentRoot && matcher;\n    });\n\n    const sections = actionMatches.reduce(\n      (entryMap, e) =>\n        entryMap.set(e.section, [...(entryMap.get(e.section) || []), e]),\n      new Map()\n    );\n\n    this._actionMatches = [...sections.values()].flat();\n\n    if (this._actionMatches.length > 0 && this._selectedIndex === -1) {\n      this._selected = this._actionMatches[0];\n    }\n    if (this._actionMatches.length === 0) {\n      this._selected = undefined;\n    }\n\n    const actionsList = (actions: INinjaAction[]) =>\n      html` ${repeat(\n        actions,\n        (action) => action.id,\n        (action) =>\n          html`<ninja-action\n            exportparts=\"ninja-action,ninja-selected,ninja-icon\"\n            .selected=${live(action.id === this._selected?.id)}\n            .hotKeysJoinedView=${this.hotKeysJoinedView}\n            @mouseover=${(event: MouseEvent) =>\n              this._actionFocused(action, event)}\n            @actionsSelected=${(event: CustomEvent<INinjaAction>) =>\n              this._actionSelected(event.detail)}\n            .action=${action}\n          ></ninja-action>`\n      )}`;\n\n    const itemTemplates: TemplateResult[] = [];\n    sections.forEach((actions, section) => {\n      const header = section\n        ? html`<div class=\"group-header\">${section}</div>`\n        : undefined;\n      itemTemplates.push(html`${header}${actionsList(actions)}`);\n    });\n\n    return html`\n      <div @click=${this._overlayClick} class=${classMap(menuClasses)}>\n        <div class=${classMap(classes)} @animationend=${this._onTransitionEnd}>\n          <ninja-header\n            exportparts=\"ninja-input,ninja-input-wrapper\"\n            ${ref(this._headerRef)}\n            .placeholder=${this.placeholder}\n            .hideBreadcrumbs=${this.hideBreadcrumbs}\n            .breadcrumbs=${this.breadcrumbs}\n            @change=${this._handleInput}\n            @setParent=${(event: CustomEvent<INinjaAction>) =>\n              this.setParent(event.detail.parent)}\n            @close=${this.close}\n          >\n          </ninja-header>\n          <div class=\"modal-body\">\n            <div class=\"actions-list\" part=\"actions-list\">${itemTemplates}</div>\n          </div>\n          <slot name=\"footer\"> ${footerHtml} </slot>\n        </div>\n      </div>\n    `;\n  }\n\n  private get _selectedIndex(): number {\n    if (!this._selected) {\n      return -1;\n    }\n    return this._actionMatches.indexOf(this._selected);\n  }\n\n  private _actionSelected(action?: INinjaAction) {\n    // fire selected event even when action is empty/not selected,\n    // so possible handle api search for example\n    this.dispatchEvent(\n      new CustomEvent('selected', {\n        detail: {search: this._search, action},\n        bubbles: true,\n        composed: true,\n      })\n    );\n\n    if (!action) {\n      return;\n    }\n\n    if (action.children && action.children?.length > 0) {\n      this._currentRoot = action.id;\n      this._search = '';\n    }\n\n    this._headerRef.value!.setSearch('');\n    this._headerRef.value!.focusSearch();\n\n    if (action.handler) {\n      const result = action.handler(action);\n      if (!result?.keepOpen) {\n        this.close();\n      }\n    }\n\n    this._bump = true;\n  }\n\n  private async _handleInput(event: CustomEvent<{search: string}>) {\n    this._search = event.detail.search;\n    await this.updateComplete;\n    this.dispatchEvent(\n      new CustomEvent('change', {\n        detail: {search: this._search, actions: this._actionMatches},\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  private _overlayClick(event: Event) {\n    if ((event.target as HTMLElement)?.classList.contains('modal')) {\n      this.close();\n    }\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'ninja-keys': NinjaKeys;\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { Drawer } from \"flowbite\"\n\nexport default class extends Controller {\n  static targets = [\"drawer\"]\n  \n  connect() {\n    // Initialize Flowbite drawer\n    const drawerElement = document.getElementById('edit-product-drawer')\n    const backdropElement = document.getElementById('drawer-backdrop')\n    \n    if (drawerElement) {\n      this.drawer = new Drawer(drawerElement, {\n        placement: 'right',\n        backdrop: true,\n        bodyScrolling: false,\n        edge: false,\n        edgeOffset: '',\n        backdropClasses: 'bg-gray-900/50 fixed inset-0 z-30'\n      })\n    }\n  }\n\n  show() {\n    if (this.drawer) {\n      this.drawer.show()\n    }\n  }\n\n  hide() {\n    if (this.drawer) {\n      this.drawer.hide()\n    }\n  }\n\n  // Handle form submission success\n  handleFormSuccess(event) {\n    if (event.detail.success) {\n      this.hide()\n      // Optionally reload the page or specific sections\n      window.location.reload()\n    }\n  }\n}\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nfunction _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nfunction _callSuper(t, o, e) {\n  return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nfunction _get() {\n  return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {\n    var p = _superPropBase(e, t);\n    if (p) {\n      var n = Object.getOwnPropertyDescriptor(p, t);\n      return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;\n    }\n  }, _get.apply(null, arguments);\n}\nfunction _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && _setPrototypeOf(t, e);\n}\nfunction _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (_isNativeReflectConstruct = function () {\n    return !!t;\n  })();\n}\nfunction _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == typeof e || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return _assertThisInitialized(t);\n}\nfunction _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nfunction _slicedToArray(r, e) {\n  return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _superPropBase(t, o) {\n  for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t)););\n  return t;\n}\nfunction _toConsumableArray(r) {\n  return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n  if (\"object\" != typeof t || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != typeof i) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, \"string\");\n  return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n  }\n}\n\nfunction hasProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nfunction lastItemOf(arr) {\n  return arr[arr.length - 1];\n}\n\n// push only the items not included in the array\nfunction pushUnique(arr) {\n  for (var _len = arguments.length, items = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    items[_key - 1] = arguments[_key];\n  }\n  items.forEach(function (item) {\n    if (arr.includes(item)) {\n      return;\n    }\n    arr.push(item);\n  });\n  return arr;\n}\nfunction stringToArray(str, separator) {\n  // convert empty string to an empty array\n  return str ? str.split(separator) : [];\n}\nfunction isInRange(testVal, min, max) {\n  var minOK = min === undefined || testVal >= min;\n  var maxOK = max === undefined || testVal <= max;\n  return minOK && maxOK;\n}\nfunction limitToRange(val, min, max) {\n  if (val < min) {\n    return min;\n  }\n  if (val > max) {\n    return max;\n  }\n  return val;\n}\nfunction createTagRepeat(tagName, repeat) {\n  var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n  var html = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';\n  var openTagSrc = Object.keys(attributes).reduce(function (src, attr) {\n    var val = attributes[attr];\n    if (typeof val === 'function') {\n      val = val(index);\n    }\n    return \"\".concat(src, \" \").concat(attr, \"=\\\"\").concat(val, \"\\\"\");\n  }, tagName);\n  html += \"<\".concat(openTagSrc, \"></\").concat(tagName, \">\");\n  var next = index + 1;\n  return next < repeat ? createTagRepeat(tagName, repeat, attributes, next, html) : html;\n}\n\n// Remove the spacing surrounding tags for HTML parser not to create text nodes\n// before/after elements\nfunction optimizeTemplateHTML(html) {\n  return html.replace(/>\\s+/g, '>').replace(/\\s+</, '<');\n}\n\nfunction stripTime(timeValue) {\n  return new Date(timeValue).setHours(0, 0, 0, 0);\n}\nfunction today() {\n  return new Date().setHours(0, 0, 0, 0);\n}\n\n// Get the time value of the start of given date or year, month and day\nfunction dateValue() {\n  switch (arguments.length) {\n    case 0:\n      return today();\n    case 1:\n      return stripTime(arguments.length <= 0 ? undefined : arguments[0]);\n  }\n\n  // use setFullYear() to keep 2-digit year from being mapped to 1900-1999\n  var newDate = new Date(0);\n  newDate.setFullYear.apply(newDate, arguments);\n  return newDate.setHours(0, 0, 0, 0);\n}\nfunction addDays(date, amount) {\n  var newDate = new Date(date);\n  return newDate.setDate(newDate.getDate() + amount);\n}\nfunction addWeeks(date, amount) {\n  return addDays(date, amount * 7);\n}\nfunction addMonths(date, amount) {\n  // If the day of the date is not in the new month, the last day of the new\n  // month will be returned. e.g. Jan 31 + 1 month \u2192 Feb 28 (not Mar 03)\n  var newDate = new Date(date);\n  var monthsToSet = newDate.getMonth() + amount;\n  var expectedMonth = monthsToSet % 12;\n  if (expectedMonth < 0) {\n    expectedMonth += 12;\n  }\n  var time = newDate.setMonth(monthsToSet);\n  return newDate.getMonth() !== expectedMonth ? newDate.setDate(0) : time;\n}\nfunction addYears(date, amount) {\n  // If the date is Feb 29 and the new year is not a leap year, Feb 28 of the\n  // new year will be returned.\n  var newDate = new Date(date);\n  var expectedMonth = newDate.getMonth();\n  var time = newDate.setFullYear(newDate.getFullYear() + amount);\n  return expectedMonth === 1 && newDate.getMonth() === 2 ? newDate.setDate(0) : time;\n}\n\n// Calculate the distance bettwen 2 days of the week\nfunction dayDiff(day, from) {\n  return (day - from + 7) % 7;\n}\n\n// Get the date of the specified day of the week of given base date\nfunction dayOfTheWeekOf(baseDate, dayOfWeek) {\n  var weekStart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  var baseDay = new Date(baseDate).getDay();\n  return addDays(baseDate, dayDiff(dayOfWeek, weekStart) - dayDiff(baseDay, weekStart));\n}\n\n// Get the ISO week of a date\nfunction getWeek(date) {\n  // start of ISO week is Monday\n  var thuOfTheWeek = dayOfTheWeekOf(date, 4, 1);\n  // 1st week == the week where the 4th of January is in\n  var firstThu = dayOfTheWeekOf(new Date(thuOfTheWeek).setMonth(0, 4), 4, 1);\n  return Math.round((thuOfTheWeek - firstThu) / 604800000) + 1;\n}\n\n// Get the start year of the period of years that includes given date\n// years: length of the year period\nfunction startOfYearPeriod(date, years) {\n  /* @see https://en.wikipedia.org/wiki/Year_zero#ISO_8601 */\n  var year = new Date(date).getFullYear();\n  return Math.floor(year / years) * years;\n}\n\n// pattern for format parts\nvar reFormatTokens = /dd?|DD?|mm?|MM?|yy?(?:yy)?/;\n// pattern for non date parts\nvar reNonDateParts = /[\\s!-/:-@[-`{-~\u5E74\u6708\u65E5]+/;\n// cache for persed formats\nvar knownFormats = {};\n// parse funtions for date parts\nvar parseFns = {\n  y: function y(date, year) {\n    return new Date(date).setFullYear(parseInt(year, 10));\n  },\n  m: function m(date, month, locale) {\n    var newDate = new Date(date);\n    var monthIndex = parseInt(month, 10) - 1;\n    if (isNaN(monthIndex)) {\n      if (!month) {\n        return NaN;\n      }\n      var monthName = month.toLowerCase();\n      var compareNames = function compareNames(name) {\n        return name.toLowerCase().startsWith(monthName);\n      };\n      // compare with both short and full names because some locales have periods\n      // in the short names (not equal to the first X letters of the full names)\n      monthIndex = locale.monthsShort.findIndex(compareNames);\n      if (monthIndex < 0) {\n        monthIndex = locale.months.findIndex(compareNames);\n      }\n      if (monthIndex < 0) {\n        return NaN;\n      }\n    }\n    newDate.setMonth(monthIndex);\n    return newDate.getMonth() !== normalizeMonth(monthIndex) ? newDate.setDate(0) : newDate.getTime();\n  },\n  d: function d(date, day) {\n    return new Date(date).setDate(parseInt(day, 10));\n  }\n};\n// format functions for date parts\nvar formatFns = {\n  d: function d(date) {\n    return date.getDate();\n  },\n  dd: function dd(date) {\n    return padZero(date.getDate(), 2);\n  },\n  D: function D(date, locale) {\n    return locale.daysShort[date.getDay()];\n  },\n  DD: function DD(date, locale) {\n    return locale.days[date.getDay()];\n  },\n  m: function m(date) {\n    return date.getMonth() + 1;\n  },\n  mm: function mm(date) {\n    return padZero(date.getMonth() + 1, 2);\n  },\n  M: function M(date, locale) {\n    return locale.monthsShort[date.getMonth()];\n  },\n  MM: function MM(date, locale) {\n    return locale.months[date.getMonth()];\n  },\n  y: function y(date) {\n    return date.getFullYear();\n  },\n  yy: function yy(date) {\n    return padZero(date.getFullYear(), 2).slice(-2);\n  },\n  yyyy: function yyyy(date) {\n    return padZero(date.getFullYear(), 4);\n  }\n};\n\n// get month index in normal range (0 - 11) from any number\nfunction normalizeMonth(monthIndex) {\n  return monthIndex > -1 ? monthIndex % 12 : normalizeMonth(monthIndex + 12);\n}\nfunction padZero(num, length) {\n  return num.toString().padStart(length, '0');\n}\nfunction parseFormatString(format) {\n  if (typeof format !== 'string') {\n    throw new Error(\"Invalid date format.\");\n  }\n  if (format in knownFormats) {\n    return knownFormats[format];\n  }\n\n  // sprit the format string into parts and seprators\n  var separators = format.split(reFormatTokens);\n  var parts = format.match(new RegExp(reFormatTokens, 'g'));\n  if (separators.length === 0 || !parts) {\n    throw new Error(\"Invalid date format.\");\n  }\n\n  // collect format functions used in the format\n  var partFormatters = parts.map(function (token) {\n    return formatFns[token];\n  });\n\n  // collect parse function keys used in the format\n  // iterate over parseFns' keys in order to keep the order of the keys.\n  var partParserKeys = Object.keys(parseFns).reduce(function (keys, key) {\n    var token = parts.find(function (part) {\n      return part[0] !== 'D' && part[0].toLowerCase() === key;\n    });\n    if (token) {\n      keys.push(key);\n    }\n    return keys;\n  }, []);\n  return knownFormats[format] = {\n    parser: function parser(dateStr, locale) {\n      var dateParts = dateStr.split(reNonDateParts).reduce(function (dtParts, part, index) {\n        if (part.length > 0 && parts[index]) {\n          var token = parts[index][0];\n          if (token === 'M') {\n            dtParts.m = part;\n          } else if (token !== 'D') {\n            dtParts[token] = part;\n          }\n        }\n        return dtParts;\n      }, {});\n\n      // iterate over partParserkeys so that the parsing is made in the oder\n      // of year, month and day to prevent the day parser from correcting last\n      // day of month wrongly\n      return partParserKeys.reduce(function (origDate, key) {\n        var newDate = parseFns[key](origDate, dateParts[key], locale);\n        // ingnore the part failed to parse\n        return isNaN(newDate) ? origDate : newDate;\n      }, today());\n    },\n    formatter: function formatter(date, locale) {\n      var dateStr = partFormatters.reduce(function (str, fn, index) {\n        return str += \"\".concat(separators[index]).concat(fn(date, locale));\n      }, '');\n      // separators' length is always parts' length + 1,\n      return dateStr += lastItemOf(separators);\n    }\n  };\n}\nfunction parseDate(dateStr, format, locale) {\n  if (dateStr instanceof Date || typeof dateStr === 'number') {\n    var date = stripTime(dateStr);\n    return isNaN(date) ? undefined : date;\n  }\n  if (!dateStr) {\n    return undefined;\n  }\n  if (dateStr === 'today') {\n    return today();\n  }\n  if (format && format.toValue) {\n    var _date = format.toValue(dateStr, format, locale);\n    return isNaN(_date) ? undefined : stripTime(_date);\n  }\n  return parseFormatString(format).parser(dateStr, locale);\n}\nfunction formatDate(date, format, locale) {\n  if (isNaN(date) || !date && date !== 0) {\n    return '';\n  }\n  var dateObj = typeof date === 'number' ? new Date(date) : date;\n  if (format.toDisplay) {\n    return format.toDisplay(dateObj, format, locale);\n  }\n  return parseFormatString(format).formatter(dateObj, locale);\n}\n\nvar listenerRegistry = new WeakMap();\nvar _EventTarget$prototyp = EventTarget.prototype,\n  addEventListener = _EventTarget$prototyp.addEventListener,\n  removeEventListener = _EventTarget$prototyp.removeEventListener;\n\n// Register event listeners to a key object\n// listeners: array of listener definitions;\n//   - each definition must be a flat array of event target and the arguments\n//     used to call addEventListener() on the target\nfunction registerListeners(keyObj, listeners) {\n  var registered = listenerRegistry.get(keyObj);\n  if (!registered) {\n    registered = [];\n    listenerRegistry.set(keyObj, registered);\n  }\n  listeners.forEach(function (listener) {\n    addEventListener.call.apply(addEventListener, _toConsumableArray(listener));\n    registered.push(listener);\n  });\n}\nfunction unregisterListeners(keyObj) {\n  var listeners = listenerRegistry.get(keyObj);\n  if (!listeners) {\n    return;\n  }\n  listeners.forEach(function (listener) {\n    removeEventListener.call.apply(removeEventListener, _toConsumableArray(listener));\n  });\n  listenerRegistry[\"delete\"](keyObj);\n}\n\n// Event.composedPath() polyfill for Edge\n// based on https://gist.github.com/kleinfreund/e9787d73776c0e3750dcfcdc89f100ec\nif (!Event.prototype.composedPath) {\n  var getComposedPath = function getComposedPath(node) {\n    var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n    path.push(node);\n    var parent;\n    if (node.parentNode) {\n      parent = node.parentNode;\n    } else if (node.host) {\n      // ShadowRoot\n      parent = node.host;\n    } else if (node.defaultView) {\n      // Document\n      parent = node.defaultView;\n    }\n    return parent ? getComposedPath(parent, path) : path;\n  };\n  Event.prototype.composedPath = function () {\n    return getComposedPath(this.target);\n  };\n}\nfunction findFromPath(path, criteria, currentTarget) {\n  var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n  var el = path[index];\n  if (criteria(el)) {\n    return el;\n  } else if (el === currentTarget || !el.parentElement) {\n    // stop when reaching currentTarget or <html>\n    return;\n  }\n  return findFromPath(path, criteria, currentTarget, index + 1);\n}\n\n// Search for the actual target of a delegated event\nfunction findElementInEventPath(ev, selector) {\n  var criteria = typeof selector === 'function' ? selector : function (el) {\n    return el.matches(selector);\n  };\n  return findFromPath(ev.composedPath(), criteria, ev.currentTarget);\n}\n\n// default locales\nvar locales = {\n  en: {\n    days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n    daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n    daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n    months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n    monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n    today: \"Today\",\n    clear: \"Clear\",\n    titleFormat: \"MM y\"\n  }\n};\n\n// config options updatable by setOptions() and their default values\nvar defaultOptions = {\n  autohide: false,\n  beforeShowDay: null,\n  beforeShowDecade: null,\n  beforeShowMonth: null,\n  beforeShowYear: null,\n  calendarWeeks: false,\n  clearBtn: false,\n  dateDelimiter: ',',\n  datesDisabled: [],\n  daysOfWeekDisabled: [],\n  daysOfWeekHighlighted: [],\n  defaultViewDate: undefined,\n  // placeholder, defaults to today() by the program\n  disableTouchKeyboard: false,\n  format: 'mm/dd/yyyy',\n  language: 'en',\n  maxDate: null,\n  maxNumberOfDates: 1,\n  maxView: 3,\n  minDate: null,\n  nextArrow: '<svg class=\"w-4 h-4 rtl:rotate-180 text-gray-800 dark:text-white\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 14 10\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M1 5h12m0 0L9 1m4 4L9 9\"/></svg>',\n  orientation: 'auto',\n  pickLevel: 0,\n  prevArrow: '<svg class=\"w-4 h-4 rtl:rotate-180 text-gray-800 dark:text-white\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 14 10\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 5H1m0 0 4 4M1 5l4-4\"/></svg>',\n  showDaysOfWeek: true,\n  showOnClick: true,\n  showOnFocus: true,\n  startView: 0,\n  title: '',\n  todayBtn: false,\n  todayBtnMode: 0,\n  todayHighlight: false,\n  updateOnBlur: true,\n  weekStart: 0\n};\n\nvar range = document.createRange();\nfunction parseHTML(html) {\n  return range.createContextualFragment(html);\n}\nfunction hideElement(el) {\n  if (el.style.display === 'none') {\n    return;\n  }\n  // back up the existing display setting in data-style-display\n  if (el.style.display) {\n    el.dataset.styleDisplay = el.style.display;\n  }\n  el.style.display = 'none';\n}\nfunction showElement(el) {\n  if (el.style.display !== 'none') {\n    return;\n  }\n  if (el.dataset.styleDisplay) {\n    // restore backed-up dispay property\n    el.style.display = el.dataset.styleDisplay;\n    delete el.dataset.styleDisplay;\n  } else {\n    el.style.display = '';\n  }\n}\nfunction emptyChildNodes(el) {\n  if (el.firstChild) {\n    el.removeChild(el.firstChild);\n    emptyChildNodes(el);\n  }\n}\nfunction replaceChildNodes(el, newChildNodes) {\n  emptyChildNodes(el);\n  if (newChildNodes instanceof DocumentFragment) {\n    el.appendChild(newChildNodes);\n  } else if (typeof newChildNodes === 'string') {\n    el.appendChild(parseHTML(newChildNodes));\n  } else if (typeof newChildNodes.forEach === 'function') {\n    newChildNodes.forEach(function (node) {\n      el.appendChild(node);\n    });\n  }\n}\n\nvar defaultLang = defaultOptions.language,\n  defaultFormat = defaultOptions.format,\n  defaultWeekStart = defaultOptions.weekStart;\n\n// Reducer function to filter out invalid day-of-week from the input\nfunction sanitizeDOW(dow, day) {\n  return dow.length < 6 && day >= 0 && day < 7 ? pushUnique(dow, day) : dow;\n}\nfunction calcEndOfWeek(startOfWeek) {\n  return (startOfWeek + 6) % 7;\n}\n\n// validate input date. if invalid, fallback to the original value\nfunction validateDate(value, format, locale, origValue) {\n  var date = parseDate(value, format, locale);\n  return date !== undefined ? date : origValue;\n}\n\n// Validate viewId. if invalid, fallback to the original value\nfunction validateViewId(value, origValue) {\n  var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n  var viewId = parseInt(value, 10);\n  return viewId >= 0 && viewId <= max ? viewId : origValue;\n}\n\n// Create Datepicker configuration to set\nfunction processOptions(options, datepicker) {\n  var inOpts = Object.assign({}, options);\n  var config = {};\n  var locales = datepicker.constructor.locales;\n  var _ref = datepicker.config || {},\n    format = _ref.format,\n    language = _ref.language,\n    locale = _ref.locale,\n    maxDate = _ref.maxDate,\n    maxView = _ref.maxView,\n    minDate = _ref.minDate,\n    pickLevel = _ref.pickLevel,\n    startView = _ref.startView,\n    weekStart = _ref.weekStart;\n  if (inOpts.language) {\n    var lang;\n    if (inOpts.language !== language) {\n      if (locales[inOpts.language]) {\n        lang = inOpts.language;\n      } else {\n        // Check if langauge + region tag can fallback to the one without\n        // region (e.g. fr-CA \u2192 fr)\n        lang = inOpts.language.split('-')[0];\n        if (locales[lang] === undefined) {\n          lang = false;\n        }\n      }\n    }\n    delete inOpts.language;\n    if (lang) {\n      language = config.language = lang;\n\n      // update locale as well when updating language\n      var origLocale = locale || locales[defaultLang];\n      // use default language's properties for the fallback\n      locale = Object.assign({\n        format: defaultFormat,\n        weekStart: defaultWeekStart\n      }, locales[defaultLang]);\n      if (language !== defaultLang) {\n        Object.assign(locale, locales[language]);\n      }\n      config.locale = locale;\n      // if format and/or weekStart are the same as old locale's defaults,\n      // update them to new locale's defaults\n      if (format === origLocale.format) {\n        format = config.format = locale.format;\n      }\n      if (weekStart === origLocale.weekStart) {\n        weekStart = config.weekStart = locale.weekStart;\n        config.weekEnd = calcEndOfWeek(locale.weekStart);\n      }\n    }\n  }\n  if (inOpts.format) {\n    var hasToDisplay = typeof inOpts.format.toDisplay === 'function';\n    var hasToValue = typeof inOpts.format.toValue === 'function';\n    var validFormatString = reFormatTokens.test(inOpts.format);\n    if (hasToDisplay && hasToValue || validFormatString) {\n      format = config.format = inOpts.format;\n    }\n    delete inOpts.format;\n  }\n\n  //*** dates ***//\n  // while min and maxDate for \"no limit\" in the options are better to be null\n  // (especially when updating), the ones in the config have to be undefined\n  // because null is treated as 0 (= unix epoch) when comparing with time value\n  var minDt = minDate;\n  var maxDt = maxDate;\n  if (inOpts.minDate !== undefined) {\n    minDt = inOpts.minDate === null ? dateValue(0, 0, 1) // set 0000-01-01 to prevent negative values for year\n    : validateDate(inOpts.minDate, format, locale, minDt);\n    delete inOpts.minDate;\n  }\n  if (inOpts.maxDate !== undefined) {\n    maxDt = inOpts.maxDate === null ? undefined : validateDate(inOpts.maxDate, format, locale, maxDt);\n    delete inOpts.maxDate;\n  }\n  if (maxDt < minDt) {\n    minDate = config.minDate = maxDt;\n    maxDate = config.maxDate = minDt;\n  } else {\n    if (minDate !== minDt) {\n      minDate = config.minDate = minDt;\n    }\n    if (maxDate !== maxDt) {\n      maxDate = config.maxDate = maxDt;\n    }\n  }\n  if (inOpts.datesDisabled) {\n    config.datesDisabled = inOpts.datesDisabled.reduce(function (dates, dt) {\n      var date = parseDate(dt, format, locale);\n      return date !== undefined ? pushUnique(dates, date) : dates;\n    }, []);\n    delete inOpts.datesDisabled;\n  }\n  if (inOpts.defaultViewDate !== undefined) {\n    var viewDate = parseDate(inOpts.defaultViewDate, format, locale);\n    if (viewDate !== undefined) {\n      config.defaultViewDate = viewDate;\n    }\n    delete inOpts.defaultViewDate;\n  }\n\n  //*** days of week ***//\n  if (inOpts.weekStart !== undefined) {\n    var wkStart = Number(inOpts.weekStart) % 7;\n    if (!isNaN(wkStart)) {\n      weekStart = config.weekStart = wkStart;\n      config.weekEnd = calcEndOfWeek(wkStart);\n    }\n    delete inOpts.weekStart;\n  }\n  if (inOpts.daysOfWeekDisabled) {\n    config.daysOfWeekDisabled = inOpts.daysOfWeekDisabled.reduce(sanitizeDOW, []);\n    delete inOpts.daysOfWeekDisabled;\n  }\n  if (inOpts.daysOfWeekHighlighted) {\n    config.daysOfWeekHighlighted = inOpts.daysOfWeekHighlighted.reduce(sanitizeDOW, []);\n    delete inOpts.daysOfWeekHighlighted;\n  }\n\n  //*** multi date ***//\n  if (inOpts.maxNumberOfDates !== undefined) {\n    var maxNumberOfDates = parseInt(inOpts.maxNumberOfDates, 10);\n    if (maxNumberOfDates >= 0) {\n      config.maxNumberOfDates = maxNumberOfDates;\n      config.multidate = maxNumberOfDates !== 1;\n    }\n    delete inOpts.maxNumberOfDates;\n  }\n  if (inOpts.dateDelimiter) {\n    config.dateDelimiter = String(inOpts.dateDelimiter);\n    delete inOpts.dateDelimiter;\n  }\n\n  //*** pick level & view ***//\n  var newPickLevel = pickLevel;\n  if (inOpts.pickLevel !== undefined) {\n    newPickLevel = validateViewId(inOpts.pickLevel, 2);\n    delete inOpts.pickLevel;\n  }\n  if (newPickLevel !== pickLevel) {\n    pickLevel = config.pickLevel = newPickLevel;\n  }\n  var newMaxView = maxView;\n  if (inOpts.maxView !== undefined) {\n    newMaxView = validateViewId(inOpts.maxView, maxView);\n    delete inOpts.maxView;\n  }\n  // ensure max view >= pick level\n  newMaxView = pickLevel > newMaxView ? pickLevel : newMaxView;\n  if (newMaxView !== maxView) {\n    maxView = config.maxView = newMaxView;\n  }\n  var newStartView = startView;\n  if (inOpts.startView !== undefined) {\n    newStartView = validateViewId(inOpts.startView, newStartView);\n    delete inOpts.startView;\n  }\n  // ensure pick level <= start view <= max view\n  if (newStartView < pickLevel) {\n    newStartView = pickLevel;\n  } else if (newStartView > maxView) {\n    newStartView = maxView;\n  }\n  if (newStartView !== startView) {\n    config.startView = newStartView;\n  }\n\n  //*** template ***//\n  if (inOpts.prevArrow) {\n    var prevArrow = parseHTML(inOpts.prevArrow);\n    if (prevArrow.childNodes.length > 0) {\n      config.prevArrow = prevArrow.childNodes;\n    }\n    delete inOpts.prevArrow;\n  }\n  if (inOpts.nextArrow) {\n    var nextArrow = parseHTML(inOpts.nextArrow);\n    if (nextArrow.childNodes.length > 0) {\n      config.nextArrow = nextArrow.childNodes;\n    }\n    delete inOpts.nextArrow;\n  }\n\n  //*** misc ***//\n  if (inOpts.disableTouchKeyboard !== undefined) {\n    config.disableTouchKeyboard = 'ontouchstart' in document && !!inOpts.disableTouchKeyboard;\n    delete inOpts.disableTouchKeyboard;\n  }\n  if (inOpts.orientation) {\n    var orientation = inOpts.orientation.toLowerCase().split(/\\s+/g);\n    config.orientation = {\n      x: orientation.find(function (x) {\n        return x === 'left' || x === 'right';\n      }) || 'auto',\n      y: orientation.find(function (y) {\n        return y === 'top' || y === 'bottom';\n      }) || 'auto'\n    };\n    delete inOpts.orientation;\n  }\n  if (inOpts.todayBtnMode !== undefined) {\n    switch (inOpts.todayBtnMode) {\n      case 0:\n      case 1:\n        config.todayBtnMode = inOpts.todayBtnMode;\n    }\n    delete inOpts.todayBtnMode;\n  }\n\n  //*** copy the rest ***//\n  Object.keys(inOpts).forEach(function (key) {\n    if (inOpts[key] !== undefined && hasProperty(defaultOptions, key)) {\n      config[key] = inOpts[key];\n    }\n  });\n  return config;\n}\n\nvar pickerTemplate = optimizeTemplateHTML(\"<div class=\\\"datepicker hidden\\\">\\n  <div class=\\\"datepicker-picker inline-block rounded-lg bg-white dark:bg-gray-700 shadow-lg p-4\\\">\\n    <div class=\\\"datepicker-header\\\">\\n      <div class=\\\"datepicker-title bg-white dark:bg-gray-700 dark:text-white px-2 py-3 text-center font-semibold\\\"></div>\\n      <div class=\\\"datepicker-controls flex justify-between mb-2\\\">\\n        <button type=\\\"button\\\" class=\\\"bg-white dark:bg-gray-700 rounded-lg text-gray-500 dark:text-white hover:bg-gray-100 dark:hover:bg-gray-600 hover:text-gray-900 dark:hover:text-white text-lg p-2.5 focus:outline-none focus:ring-2 focus:ring-gray-200 prev-btn\\\"></button>\\n        <button type=\\\"button\\\" class=\\\"text-sm rounded-lg text-gray-900 dark:text-white bg-white dark:bg-gray-700 font-semibold py-2.5 px-5 hover:bg-gray-100 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-gray-200 view-switch\\\"></button>\\n        <button type=\\\"button\\\" class=\\\"bg-white dark:bg-gray-700 rounded-lg text-gray-500 dark:text-white hover:bg-gray-100 dark:hover:bg-gray-600 hover:text-gray-900 dark:hover:text-white text-lg p-2.5 focus:outline-none focus:ring-2 focus:ring-gray-200 next-btn\\\"></button>\\n      </div>\\n    </div>\\n    <div class=\\\"datepicker-main p-1\\\"></div>\\n    <div class=\\\"datepicker-footer\\\">\\n      <div class=\\\"datepicker-controls flex space-x-2 rtl:space-x-reverse mt-2\\\">\\n        <button type=\\\"button\\\" class=\\\"%buttonClass% today-btn text-white bg-blue-700 !bg-primary-700 dark:bg-blue-600 dark:!bg-primary-600 hover:bg-blue-800 hover:!bg-primary-800 dark:hover:bg-blue-700 dark:hover:!bg-primary-700 focus:ring-4 focus:ring-blue-300 focus:!ring-primary-300 font-medium rounded-lg text-sm px-5 py-2 text-center w-1/2\\\"></button>\\n        <button type=\\\"button\\\" class=\\\"%buttonClass% clear-btn text-gray-900 dark:text-white bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 hover:bg-gray-100 dark:hover:bg-gray-600 focus:ring-4 focus:ring-blue-300 focus:!ring-primary-300 font-medium rounded-lg text-sm px-5 py-2 text-center w-1/2\\\"></button>\\n      </div>\\n    </div>\\n  </div>\\n</div>\");\n\nvar daysTemplate = optimizeTemplateHTML(\"<div class=\\\"days\\\">\\n  <div class=\\\"days-of-week grid grid-cols-7 mb-1\\\">\".concat(createTagRepeat('span', 7, {\n  \"class\": 'dow block flex-1 leading-9 border-0 rounded-lg cursor-default text-center text-gray-900 font-semibold text-sm'\n}), \"</div>\\n  <div class=\\\"datepicker-grid w-64 grid grid-cols-7\\\">\").concat(createTagRepeat('span', 42, {\n  \"class\": 'block flex-1 leading-9 border-0 rounded-lg cursor-default text-center text-gray-900 font-semibold text-sm h-6 leading-6 text-sm font-medium text-gray-500 dark:text-gray-400'\n}), \"</div>\\n</div>\"));\n\nvar calendarWeeksTemplate = optimizeTemplateHTML(\"<div class=\\\"calendar-weeks\\\">\\n  <div class=\\\"days-of-week flex\\\"><span class=\\\"dow h-6 leading-6 text-sm font-medium text-gray-500 dark:text-gray-400\\\"></span></div>\\n  <div class=\\\"weeks\\\">\".concat(createTagRepeat('span', 6, {\n  \"class\": 'week block flex-1 leading-9 border-0 rounded-lg cursor-default text-center text-gray-900 font-semibold text-sm'\n}), \"</div>\\n</div>\"));\n\n// Base class of the view classes\nvar View = /*#__PURE__*/function () {\n  function View(picker, config) {\n    _classCallCheck(this, View);\n    Object.assign(this, config, {\n      picker: picker,\n      element: parseHTML(\"<div class=\\\"datepicker-view flex\\\"></div>\").firstChild,\n      selected: []\n    });\n    this.init(this.picker.datepicker.config);\n  }\n  return _createClass(View, [{\n    key: \"init\",\n    value: function init(options) {\n      if (options.pickLevel !== undefined) {\n        this.isMinView = this.id === options.pickLevel;\n      }\n      this.setOptions(options);\n      this.updateFocus();\n      this.updateSelection();\n    }\n\n    // Execute beforeShow() callback and apply the result to the element\n    // args:\n    // - current - current value on the iteration on view rendering\n    // - timeValue - time value of the date to pass to beforeShow()\n  }, {\n    key: \"performBeforeHook\",\n    value: function performBeforeHook(el, current, timeValue) {\n      var result = this.beforeShow(new Date(timeValue));\n      switch (_typeof(result)) {\n        case 'boolean':\n          result = {\n            enabled: result\n          };\n          break;\n        case 'string':\n          result = {\n            classes: result\n          };\n      }\n      if (result) {\n        if (result.enabled === false) {\n          el.classList.add('disabled');\n          pushUnique(this.disabled, current);\n        }\n        if (result.classes) {\n          var _el$classList;\n          var extraClasses = result.classes.split(/\\s+/);\n          (_el$classList = el.classList).add.apply(_el$classList, _toConsumableArray(extraClasses));\n          if (extraClasses.includes('disabled')) {\n            pushUnique(this.disabled, current);\n          }\n        }\n        if (result.content) {\n          replaceChildNodes(el, result.content);\n        }\n      }\n    }\n  }]);\n}();\n\nvar DaysView = /*#__PURE__*/function (_View) {\n  function DaysView(picker) {\n    _classCallCheck(this, DaysView);\n    return _callSuper(this, DaysView, [picker, {\n      id: 0,\n      name: 'days',\n      cellClass: 'day'\n    }]);\n  }\n  _inherits(DaysView, _View);\n  return _createClass(DaysView, [{\n    key: \"init\",\n    value: function init(options) {\n      var onConstruction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      if (onConstruction) {\n        var inner = parseHTML(daysTemplate).firstChild;\n        this.dow = inner.firstChild;\n        this.grid = inner.lastChild;\n        this.element.appendChild(inner);\n      }\n      _get(_getPrototypeOf(DaysView.prototype), \"init\", this).call(this, options);\n    }\n  }, {\n    key: \"setOptions\",\n    value: function setOptions(options) {\n      var _this = this;\n      var updateDOW;\n      if (hasProperty(options, 'minDate')) {\n        this.minDate = options.minDate;\n      }\n      if (hasProperty(options, 'maxDate')) {\n        this.maxDate = options.maxDate;\n      }\n      if (options.datesDisabled) {\n        this.datesDisabled = options.datesDisabled;\n      }\n      if (options.daysOfWeekDisabled) {\n        this.daysOfWeekDisabled = options.daysOfWeekDisabled;\n        updateDOW = true;\n      }\n      if (options.daysOfWeekHighlighted) {\n        this.daysOfWeekHighlighted = options.daysOfWeekHighlighted;\n      }\n      if (options.todayHighlight !== undefined) {\n        this.todayHighlight = options.todayHighlight;\n      }\n      if (options.weekStart !== undefined) {\n        this.weekStart = options.weekStart;\n        this.weekEnd = options.weekEnd;\n        updateDOW = true;\n      }\n      if (options.locale) {\n        var locale = this.locale = options.locale;\n        this.dayNames = locale.daysMin;\n        this.switchLabelFormat = locale.titleFormat;\n        updateDOW = true;\n      }\n      if (options.beforeShowDay !== undefined) {\n        this.beforeShow = typeof options.beforeShowDay === 'function' ? options.beforeShowDay : undefined;\n      }\n      if (options.calendarWeeks !== undefined) {\n        if (options.calendarWeeks && !this.calendarWeeks) {\n          var weeksElem = parseHTML(calendarWeeksTemplate).firstChild;\n          this.calendarWeeks = {\n            element: weeksElem,\n            dow: weeksElem.firstChild,\n            weeks: weeksElem.lastChild\n          };\n          this.element.insertBefore(weeksElem, this.element.firstChild);\n        } else if (this.calendarWeeks && !options.calendarWeeks) {\n          this.element.removeChild(this.calendarWeeks.element);\n          this.calendarWeeks = null;\n        }\n      }\n      if (options.showDaysOfWeek !== undefined) {\n        if (options.showDaysOfWeek) {\n          showElement(this.dow);\n          if (this.calendarWeeks) {\n            showElement(this.calendarWeeks.dow);\n          }\n        } else {\n          hideElement(this.dow);\n          if (this.calendarWeeks) {\n            hideElement(this.calendarWeeks.dow);\n          }\n        }\n      }\n\n      // update days-of-week when locale, daysOfweekDisabled or weekStart is changed\n      if (updateDOW) {\n        Array.from(this.dow.children).forEach(function (el, index) {\n          var dow = (_this.weekStart + index) % 7;\n          el.textContent = _this.dayNames[dow];\n          el.className = _this.daysOfWeekDisabled.includes(dow) ? 'dow disabled text-center h-6 leading-6 text-sm font-medium text-gray-500 dark:text-gray-400 cursor-not-allowed' : 'dow text-center h-6 leading-6 text-sm font-medium text-gray-500 dark:text-gray-400';\n        });\n      }\n    }\n\n    // Apply update on the focused date to view's settings\n  }, {\n    key: \"updateFocus\",\n    value: function updateFocus() {\n      var viewDate = new Date(this.picker.viewDate);\n      var viewYear = viewDate.getFullYear();\n      var viewMonth = viewDate.getMonth();\n      var firstOfMonth = dateValue(viewYear, viewMonth, 1);\n      var start = dayOfTheWeekOf(firstOfMonth, this.weekStart, this.weekStart);\n      this.first = firstOfMonth;\n      this.last = dateValue(viewYear, viewMonth + 1, 0);\n      this.start = start;\n      this.focused = this.picker.viewDate;\n    }\n\n    // Apply update on the selected dates to view's settings\n  }, {\n    key: \"updateSelection\",\n    value: function updateSelection() {\n      var _this$picker$datepick = this.picker.datepicker,\n        dates = _this$picker$datepick.dates,\n        rangepicker = _this$picker$datepick.rangepicker;\n      this.selected = dates;\n      if (rangepicker) {\n        this.range = rangepicker.dates;\n      }\n    }\n\n    // Update the entire view UI\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n      // update today marker on ever render\n      this.today = this.todayHighlight ? today() : undefined;\n      // refresh disabled dates on every render in order to clear the ones added\n      // by beforeShow hook at previous render\n      this.disabled = _toConsumableArray(this.datesDisabled);\n      var switchLabel = formatDate(this.focused, this.switchLabelFormat, this.locale);\n      this.picker.setViewSwitchLabel(switchLabel);\n      this.picker.setPrevBtnDisabled(this.first <= this.minDate);\n      this.picker.setNextBtnDisabled(this.last >= this.maxDate);\n      if (this.calendarWeeks) {\n        // start of the UTC week (Monday) of the 1st of the month\n        var startOfWeek = dayOfTheWeekOf(this.first, 1, 1);\n        Array.from(this.calendarWeeks.weeks.children).forEach(function (el, index) {\n          el.textContent = getWeek(addWeeks(startOfWeek, index));\n        });\n      }\n      Array.from(this.grid.children).forEach(function (el, index) {\n        var classList = el.classList;\n        var current = addDays(_this2.start, index);\n        var date = new Date(current);\n        var day = date.getDay();\n        el.className = \"datepicker-cell hover:bg-gray-100 dark:hover:bg-gray-600 block flex-1 leading-9 border-0 rounded-lg cursor-pointer text-center text-gray-900 dark:text-white font-semibold text-sm \".concat(_this2.cellClass);\n        el.dataset.date = current;\n        el.textContent = date.getDate();\n        if (current < _this2.first) {\n          classList.add('prev', 'text-gray-500', 'dark:text-white');\n        } else if (current > _this2.last) {\n          classList.add('next', 'text-gray-500', 'dark:text-white');\n        }\n        if (_this2.today === current) {\n          classList.add('today', 'bg-gray-100', 'dark:bg-gray-600');\n        }\n        if (current < _this2.minDate || current > _this2.maxDate || _this2.disabled.includes(current)) {\n          classList.add('disabled', 'cursor-not-allowed', 'text-gray-400', 'dark:text-gray-500');\n          classList.remove('hover:bg-gray-100', 'dark:hover:bg-gray-600', 'text-gray-900', 'dark:text-white', 'cursor-pointer');\n        }\n        if (_this2.daysOfWeekDisabled.includes(day)) {\n          classList.add('disabled', 'cursor-not-allowed', 'text-gray-400', 'dark:text-gray-500');\n          classList.remove('hover:bg-gray-100', 'dark:hover:bg-gray-600', 'text-gray-900', 'dark:text-white', 'cursor-pointer');\n          pushUnique(_this2.disabled, current);\n        }\n        if (_this2.daysOfWeekHighlighted.includes(day)) {\n          classList.add('highlighted');\n        }\n        if (_this2.range) {\n          var _this2$range = _slicedToArray(_this2.range, 2),\n            rangeStart = _this2$range[0],\n            rangeEnd = _this2$range[1];\n          if (current > rangeStart && current < rangeEnd) {\n            classList.add('range', 'bg-gray-200', 'dark:bg-gray-600');\n            classList.remove('rounded-lg', 'rounded-l-lg', 'rounded-r-lg');\n          }\n          if (current === rangeStart) {\n            classList.add('range-start', 'bg-gray-100', 'dark:bg-gray-600', 'rounded-l-lg');\n            classList.remove('rounded-lg', 'rounded-r-lg');\n          }\n          if (current === rangeEnd) {\n            classList.add('range-end', 'bg-gray-100', 'dark:bg-gray-600', 'rounded-r-lg');\n            classList.remove('rounded-lg', 'rounded-l-lg');\n          }\n        }\n        if (_this2.selected.includes(current)) {\n          classList.add('selected', 'bg-blue-700', '!bg-primary-700', 'text-white', 'dark:bg-blue-600', 'dark:!bg-primary-600', 'dark:text-white');\n          classList.remove('text-gray-900', 'text-gray-500', 'hover:bg-gray-100', 'dark:text-white', 'dark:hover:bg-gray-600', 'dark:bg-gray-600', 'bg-gray-100', 'bg-gray-200');\n        }\n        if (current === _this2.focused) {\n          classList.add('focused');\n        }\n        if (_this2.beforeShow) {\n          _this2.performBeforeHook(el, current, current);\n        }\n      });\n    }\n\n    // Update the view UI by applying the changes of selected and focused items\n  }, {\n    key: \"refresh\",\n    value: function refresh() {\n      var _this3 = this;\n      var _ref = this.range || [],\n        _ref2 = _slicedToArray(_ref, 2),\n        rangeStart = _ref2[0],\n        rangeEnd = _ref2[1];\n      this.grid.querySelectorAll('.range, .range-start, .range-end, .selected, .focused').forEach(function (el) {\n        el.classList.remove('range', 'range-start', 'range-end', 'selected', 'bg-blue-700', '!bg-primary-700', 'text-white', 'dark:bg-blue-600', 'dark:!bg-primary-600', 'dark:text-white', 'focused');\n        el.classList.add('text-gray-900', 'rounded-lg', 'dark:text-white');\n      });\n      Array.from(this.grid.children).forEach(function (el) {\n        var current = Number(el.dataset.date);\n        var classList = el.classList;\n        classList.remove('bg-gray-200', 'dark:bg-gray-600', 'rounded-l-lg', 'rounded-r-lg');\n        if (current > rangeStart && current < rangeEnd) {\n          classList.add('range', 'bg-gray-200', 'dark:bg-gray-600');\n          classList.remove('rounded-lg');\n        }\n        if (current === rangeStart) {\n          classList.add('range-start', 'bg-gray-200', 'dark:bg-gray-600', 'rounded-l-lg');\n          classList.remove('rounded-lg');\n        }\n        if (current === rangeEnd) {\n          classList.add('range-end', 'bg-gray-200', 'dark:bg-gray-600', 'rounded-r-lg');\n          classList.remove('rounded-lg');\n        }\n        if (_this3.selected.includes(current)) {\n          classList.add('selected', 'bg-blue-700', '!bg-primary-700', 'text-white', 'dark:bg-blue-600', 'dark:!bg-primary-600', 'dark:text-white');\n          classList.remove('text-gray-900', 'hover:bg-gray-100', 'dark:text-white', 'dark:hover:bg-gray-600', 'bg-gray-100', 'bg-gray-200', 'dark:bg-gray-600');\n        }\n        if (current === _this3.focused) {\n          classList.add('focused');\n        }\n      });\n    }\n\n    // Update the view UI by applying the change of focused item\n  }, {\n    key: \"refreshFocus\",\n    value: function refreshFocus() {\n      var index = Math.round((this.focused - this.start) / 86400000);\n      this.grid.querySelectorAll('.focused').forEach(function (el) {\n        el.classList.remove('focused');\n      });\n      this.grid.children[index].classList.add('focused');\n    }\n  }]);\n}(View);\n\nfunction computeMonthRange(range, thisYear) {\n  if (!range || !range[0] || !range[1]) {\n    return;\n  }\n  var _range = _slicedToArray(range, 2),\n    _range$ = _slicedToArray(_range[0], 2),\n    startY = _range$[0],\n    startM = _range$[1],\n    _range$2 = _slicedToArray(_range[1], 2),\n    endY = _range$2[0],\n    endM = _range$2[1];\n  if (startY > thisYear || endY < thisYear) {\n    return;\n  }\n  return [startY === thisYear ? startM : -1, endY === thisYear ? endM : 12];\n}\nvar MonthsView = /*#__PURE__*/function (_View) {\n  function MonthsView(picker) {\n    _classCallCheck(this, MonthsView);\n    return _callSuper(this, MonthsView, [picker, {\n      id: 1,\n      name: 'months',\n      cellClass: 'month'\n    }]);\n  }\n  _inherits(MonthsView, _View);\n  return _createClass(MonthsView, [{\n    key: \"init\",\n    value: function init(options) {\n      var onConstruction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      if (onConstruction) {\n        this.grid = this.element;\n        this.element.classList.add('months', 'datepicker-grid', 'w-64', 'grid', 'grid-cols-4');\n        this.grid.appendChild(parseHTML(createTagRepeat('span', 12, {\n          'data-month': function dataMonth(ix) {\n            return ix;\n          }\n        })));\n      }\n      _get(_getPrototypeOf(MonthsView.prototype), \"init\", this).call(this, options);\n    }\n  }, {\n    key: \"setOptions\",\n    value: function setOptions(options) {\n      if (options.locale) {\n        this.monthNames = options.locale.monthsShort;\n      }\n      if (hasProperty(options, 'minDate')) {\n        if (options.minDate === undefined) {\n          this.minYear = this.minMonth = this.minDate = undefined;\n        } else {\n          var minDateObj = new Date(options.minDate);\n          this.minYear = minDateObj.getFullYear();\n          this.minMonth = minDateObj.getMonth();\n          this.minDate = minDateObj.setDate(1);\n        }\n      }\n      if (hasProperty(options, 'maxDate')) {\n        if (options.maxDate === undefined) {\n          this.maxYear = this.maxMonth = this.maxDate = undefined;\n        } else {\n          var maxDateObj = new Date(options.maxDate);\n          this.maxYear = maxDateObj.getFullYear();\n          this.maxMonth = maxDateObj.getMonth();\n          this.maxDate = dateValue(this.maxYear, this.maxMonth + 1, 0);\n        }\n      }\n      if (options.beforeShowMonth !== undefined) {\n        this.beforeShow = typeof options.beforeShowMonth === 'function' ? options.beforeShowMonth : undefined;\n      }\n    }\n\n    // Update view's settings to reflect the viewDate set on the picker\n  }, {\n    key: \"updateFocus\",\n    value: function updateFocus() {\n      var viewDate = new Date(this.picker.viewDate);\n      this.year = viewDate.getFullYear();\n      this.focused = viewDate.getMonth();\n    }\n\n    // Update view's settings to reflect the selected dates\n  }, {\n    key: \"updateSelection\",\n    value: function updateSelection() {\n      var _this$picker$datepick = this.picker.datepicker,\n        dates = _this$picker$datepick.dates,\n        rangepicker = _this$picker$datepick.rangepicker;\n      this.selected = dates.reduce(function (selected, timeValue) {\n        var date = new Date(timeValue);\n        var year = date.getFullYear();\n        var month = date.getMonth();\n        if (selected[year] === undefined) {\n          selected[year] = [month];\n        } else {\n          pushUnique(selected[year], month);\n        }\n        return selected;\n      }, {});\n      if (rangepicker && rangepicker.dates) {\n        this.range = rangepicker.dates.map(function (timeValue) {\n          var date = new Date(timeValue);\n          return isNaN(date) ? undefined : [date.getFullYear(), date.getMonth()];\n        });\n      }\n    }\n\n    // Update the entire view UI\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this = this;\n      // refresh disabled months on every render in order to clear the ones added\n      // by beforeShow hook at previous render\n      this.disabled = [];\n      this.picker.setViewSwitchLabel(this.year);\n      this.picker.setPrevBtnDisabled(this.year <= this.minYear);\n      this.picker.setNextBtnDisabled(this.year >= this.maxYear);\n      var selected = this.selected[this.year] || [];\n      var yrOutOfRange = this.year < this.minYear || this.year > this.maxYear;\n      var isMinYear = this.year === this.minYear;\n      var isMaxYear = this.year === this.maxYear;\n      var range = computeMonthRange(this.range, this.year);\n      Array.from(this.grid.children).forEach(function (el, index) {\n        var classList = el.classList;\n        var date = dateValue(_this.year, index, 1);\n        el.className = \"datepicker-cell hover:bg-gray-100 dark:hover:bg-gray-600 block flex-1 leading-9 border-0 rounded-lg cursor-pointer text-center text-gray-900 dark:text-white font-semibold text-sm \".concat(_this.cellClass);\n        if (_this.isMinView) {\n          el.dataset.date = date;\n        }\n        // reset text on every render to clear the custom content set\n        // by beforeShow hook at previous render\n        el.textContent = _this.monthNames[index];\n        if (yrOutOfRange || isMinYear && index < _this.minMonth || isMaxYear && index > _this.maxMonth) {\n          classList.add('disabled');\n        }\n        if (range) {\n          var _range2 = _slicedToArray(range, 2),\n            rangeStart = _range2[0],\n            rangeEnd = _range2[1];\n          if (index > rangeStart && index < rangeEnd) {\n            classList.add('range');\n          }\n          if (index === rangeStart) {\n            classList.add('range-start');\n          }\n          if (index === rangeEnd) {\n            classList.add('range-end');\n          }\n        }\n        if (selected.includes(index)) {\n          classList.add('selected', 'bg-blue-700', '!bg-primary-700', 'text-white', 'dark:bg-blue-600', 'dark:!bg-primary-600', 'dark:text-white');\n          classList.remove('text-gray-900', 'hover:bg-gray-100', 'dark:text-white', 'dark:hover:bg-gray-600');\n        }\n        if (index === _this.focused) {\n          classList.add('focused');\n        }\n        if (_this.beforeShow) {\n          _this.performBeforeHook(el, index, date);\n        }\n      });\n    }\n\n    // Update the view UI by applying the changes of selected and focused items\n  }, {\n    key: \"refresh\",\n    value: function refresh() {\n      var _this2 = this;\n      var selected = this.selected[this.year] || [];\n      var _ref = computeMonthRange(this.range, this.year) || [],\n        _ref2 = _slicedToArray(_ref, 2),\n        rangeStart = _ref2[0],\n        rangeEnd = _ref2[1];\n      this.grid.querySelectorAll('.range, .range-start, .range-end, .selected, .focused').forEach(function (el) {\n        el.classList.remove('range', 'range-start', 'range-end', 'selected', 'bg-blue-700', '!bg-primary-700', 'dark:bg-blue-600', 'dark:!bg-primary-700', 'dark:text-white', 'text-white', 'focused');\n        el.classList.add('text-gray-900', 'hover:bg-gray-100', 'dark:text-white', 'dark:hover:bg-gray-600');\n      });\n      Array.from(this.grid.children).forEach(function (el, index) {\n        var classList = el.classList;\n        if (index > rangeStart && index < rangeEnd) {\n          classList.add('range');\n        }\n        if (index === rangeStart) {\n          classList.add('range-start');\n        }\n        if (index === rangeEnd) {\n          classList.add('range-end');\n        }\n        if (selected.includes(index)) {\n          classList.add('selected', 'bg-blue-700', '!bg-primary-700', 'text-white', 'dark:bg-blue-600', 'dark:!bg-primary-600', 'dark:text-white');\n          classList.remove('text-gray-900', 'hover:bg-gray-100', 'dark:text-white', 'dark:hover:bg-gray-600');\n        }\n        if (index === _this2.focused) {\n          classList.add('focused');\n        }\n      });\n    }\n\n    // Update the view UI by applying the change of focused item\n  }, {\n    key: \"refreshFocus\",\n    value: function refreshFocus() {\n      this.grid.querySelectorAll('.focused').forEach(function (el) {\n        el.classList.remove('focused');\n      });\n      this.grid.children[this.focused].classList.add('focused');\n    }\n  }]);\n}(View);\n\nfunction toTitleCase(word) {\n  return _toConsumableArray(word).reduce(function (str, ch, ix) {\n    return str += ix ? ch : ch.toUpperCase();\n  }, '');\n}\n\n// Class representing the years and decades view elements\nvar YearsView = /*#__PURE__*/function (_View) {\n  function YearsView(picker, config) {\n    _classCallCheck(this, YearsView);\n    return _callSuper(this, YearsView, [picker, config]);\n  }\n  _inherits(YearsView, _View);\n  return _createClass(YearsView, [{\n    key: \"init\",\n    value: function init(options) {\n      var onConstruction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      if (onConstruction) {\n        this.navStep = this.step * 10;\n        this.beforeShowOption = \"beforeShow\".concat(toTitleCase(this.cellClass));\n        this.grid = this.element;\n        this.element.classList.add(this.name, 'datepicker-grid', 'w-64', 'grid', 'grid-cols-4');\n        this.grid.appendChild(parseHTML(createTagRepeat('span', 12)));\n      }\n      _get(_getPrototypeOf(YearsView.prototype), \"init\", this).call(this, options);\n    }\n  }, {\n    key: \"setOptions\",\n    value: function setOptions(options) {\n      if (hasProperty(options, 'minDate')) {\n        if (options.minDate === undefined) {\n          this.minYear = this.minDate = undefined;\n        } else {\n          this.minYear = startOfYearPeriod(options.minDate, this.step);\n          this.minDate = dateValue(this.minYear, 0, 1);\n        }\n      }\n      if (hasProperty(options, 'maxDate')) {\n        if (options.maxDate === undefined) {\n          this.maxYear = this.maxDate = undefined;\n        } else {\n          this.maxYear = startOfYearPeriod(options.maxDate, this.step);\n          this.maxDate = dateValue(this.maxYear, 11, 31);\n        }\n      }\n      if (options[this.beforeShowOption] !== undefined) {\n        var beforeShow = options[this.beforeShowOption];\n        this.beforeShow = typeof beforeShow === 'function' ? beforeShow : undefined;\n      }\n    }\n\n    // Update view's settings to reflect the viewDate set on the picker\n  }, {\n    key: \"updateFocus\",\n    value: function updateFocus() {\n      var viewDate = new Date(this.picker.viewDate);\n      var first = startOfYearPeriod(viewDate, this.navStep);\n      var last = first + 9 * this.step;\n      this.first = first;\n      this.last = last;\n      this.start = first - this.step;\n      this.focused = startOfYearPeriod(viewDate, this.step);\n    }\n\n    // Update view's settings to reflect the selected dates\n  }, {\n    key: \"updateSelection\",\n    value: function updateSelection() {\n      var _this = this;\n      var _this$picker$datepick = this.picker.datepicker,\n        dates = _this$picker$datepick.dates,\n        rangepicker = _this$picker$datepick.rangepicker;\n      this.selected = dates.reduce(function (years, timeValue) {\n        return pushUnique(years, startOfYearPeriod(timeValue, _this.step));\n      }, []);\n      if (rangepicker && rangepicker.dates) {\n        this.range = rangepicker.dates.map(function (timeValue) {\n          if (timeValue !== undefined) {\n            return startOfYearPeriod(timeValue, _this.step);\n          }\n        });\n      }\n    }\n\n    // Update the entire view UI\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n      // refresh disabled years on every render in order to clear the ones added\n      // by beforeShow hook at previous render\n      this.disabled = [];\n      this.picker.setViewSwitchLabel(\"\".concat(this.first, \"-\").concat(this.last));\n      this.picker.setPrevBtnDisabled(this.first <= this.minYear);\n      this.picker.setNextBtnDisabled(this.last >= this.maxYear);\n      Array.from(this.grid.children).forEach(function (el, index) {\n        var classList = el.classList;\n        var current = _this2.start + index * _this2.step;\n        var date = dateValue(current, 0, 1);\n        el.className = \"datepicker-cell hover:bg-gray-100 dark:hover:bg-gray-600 block flex-1 leading-9 border-0 rounded-lg cursor-pointer text-center text-gray-900 dark:text-white font-semibold text-sm \".concat(_this2.cellClass);\n        if (_this2.isMinView) {\n          el.dataset.date = date;\n        }\n        el.textContent = el.dataset.year = current;\n        if (index === 0) {\n          classList.add('prev');\n        } else if (index === 11) {\n          classList.add('next');\n        }\n        if (current < _this2.minYear || current > _this2.maxYear) {\n          classList.add('disabled');\n        }\n        if (_this2.range) {\n          var _this2$range = _slicedToArray(_this2.range, 2),\n            rangeStart = _this2$range[0],\n            rangeEnd = _this2$range[1];\n          if (current > rangeStart && current < rangeEnd) {\n            classList.add('range');\n          }\n          if (current === rangeStart) {\n            classList.add('range-start');\n          }\n          if (current === rangeEnd) {\n            classList.add('range-end');\n          }\n        }\n        if (_this2.selected.includes(current)) {\n          classList.add('selected', 'bg-blue-700', '!bg-primary-700', 'text-white', 'dark:bg-blue-600', 'dark:!bg-primary-600', 'dark:text-white');\n          classList.remove('text-gray-900', 'hover:bg-gray-100', 'dark:text-white', 'dark:hover:bg-gray-600');\n        }\n        if (current === _this2.focused) {\n          classList.add('focused');\n        }\n        if (_this2.beforeShow) {\n          _this2.performBeforeHook(el, current, date);\n        }\n      });\n    }\n\n    // Update the view UI by applying the changes of selected and focused items\n  }, {\n    key: \"refresh\",\n    value: function refresh() {\n      var _this3 = this;\n      var _ref = this.range || [],\n        _ref2 = _slicedToArray(_ref, 2),\n        rangeStart = _ref2[0],\n        rangeEnd = _ref2[1];\n      this.grid.querySelectorAll('.range, .range-start, .range-end, .selected, .focused').forEach(function (el) {\n        el.classList.remove('range', 'range-start', 'range-end', 'selected', 'bg-blue-700', '!bg-primary-700', 'text-white', 'dark:bg-blue-600', 'dark!bg-primary-600', 'dark:text-white', 'focused');\n      });\n      Array.from(this.grid.children).forEach(function (el) {\n        var current = Number(el.textContent);\n        var classList = el.classList;\n        if (current > rangeStart && current < rangeEnd) {\n          classList.add('range');\n        }\n        if (current === rangeStart) {\n          classList.add('range-start');\n        }\n        if (current === rangeEnd) {\n          classList.add('range-end');\n        }\n        if (_this3.selected.includes(current)) {\n          classList.add('selected', 'bg-blue-700', '!bg-primary-700', 'text-white', 'dark:bg-blue-600', 'dark:!bg-primary-600', 'dark:text-white');\n          classList.remove('text-gray-900', 'hover:bg-gray-100', 'dark:text-white', 'dark:hover:bg-gray-600');\n        }\n        if (current === _this3.focused) {\n          classList.add('focused');\n        }\n      });\n    }\n\n    // Update the view UI by applying the change of focused item\n  }, {\n    key: \"refreshFocus\",\n    value: function refreshFocus() {\n      var index = Math.round((this.focused - this.start) / this.step);\n      this.grid.querySelectorAll('.focused').forEach(function (el) {\n        el.classList.remove('focused');\n      });\n      this.grid.children[index].classList.add('focused');\n    }\n  }]);\n}(View);\n\nfunction triggerDatepickerEvent(datepicker, type) {\n  var detail = {\n    date: datepicker.getDate(),\n    viewDate: new Date(datepicker.picker.viewDate),\n    viewId: datepicker.picker.currentView.id,\n    datepicker: datepicker\n  };\n  datepicker.element.dispatchEvent(new CustomEvent(type, {\n    detail: detail\n  }));\n}\n\n// direction: -1 (to previous), 1 (to next)\nfunction goToPrevOrNext(datepicker, direction) {\n  var _datepicker$config = datepicker.config,\n    minDate = _datepicker$config.minDate,\n    maxDate = _datepicker$config.maxDate;\n  var _datepicker$picker = datepicker.picker,\n    currentView = _datepicker$picker.currentView,\n    viewDate = _datepicker$picker.viewDate;\n  var newViewDate;\n  switch (currentView.id) {\n    case 0:\n      newViewDate = addMonths(viewDate, direction);\n      break;\n    case 1:\n      newViewDate = addYears(viewDate, direction);\n      break;\n    default:\n      newViewDate = addYears(viewDate, direction * currentView.navStep);\n  }\n  newViewDate = limitToRange(newViewDate, minDate, maxDate);\n  datepicker.picker.changeFocus(newViewDate).render();\n}\nfunction switchView(datepicker) {\n  var viewId = datepicker.picker.currentView.id;\n  if (viewId === datepicker.config.maxView) {\n    return;\n  }\n  datepicker.picker.changeView(viewId + 1).render();\n}\nfunction unfocus(datepicker) {\n  if (datepicker.config.updateOnBlur) {\n    datepicker.update({\n      autohide: true\n    });\n  } else {\n    datepicker.refresh('input');\n    datepicker.hide();\n  }\n}\n\nfunction goToSelectedMonthOrYear(datepicker, selection) {\n  var picker = datepicker.picker;\n  var viewDate = new Date(picker.viewDate);\n  var viewId = picker.currentView.id;\n  var newDate = viewId === 1 ? addMonths(viewDate, selection - viewDate.getMonth()) : addYears(viewDate, selection - viewDate.getFullYear());\n  picker.changeFocus(newDate).changeView(viewId - 1).render();\n}\nfunction onClickTodayBtn(datepicker) {\n  var picker = datepicker.picker;\n  var currentDate = today();\n  if (datepicker.config.todayBtnMode === 1) {\n    if (datepicker.config.autohide) {\n      datepicker.setDate(currentDate);\n      return;\n    }\n    datepicker.setDate(currentDate, {\n      render: false\n    });\n    picker.update();\n  }\n  if (picker.viewDate !== currentDate) {\n    picker.changeFocus(currentDate);\n  }\n  picker.changeView(0).render();\n}\nfunction onClickClearBtn(datepicker) {\n  datepicker.setDate({\n    clear: true\n  });\n}\nfunction onClickViewSwitch(datepicker) {\n  switchView(datepicker);\n}\nfunction onClickPrevBtn(datepicker) {\n  goToPrevOrNext(datepicker, -1);\n}\nfunction onClickNextBtn(datepicker) {\n  goToPrevOrNext(datepicker, 1);\n}\n\n// For the picker's main block to delegete the events from `datepicker-cell`s\nfunction onClickView(datepicker, ev) {\n  var target = findElementInEventPath(ev, '.datepicker-cell');\n  if (!target || target.classList.contains('disabled')) {\n    return;\n  }\n  var _datepicker$picker$cu = datepicker.picker.currentView,\n    id = _datepicker$picker$cu.id,\n    isMinView = _datepicker$picker$cu.isMinView;\n  if (isMinView) {\n    datepicker.setDate(Number(target.dataset.date));\n  } else if (id === 1) {\n    goToSelectedMonthOrYear(datepicker, Number(target.dataset.month));\n  } else {\n    goToSelectedMonthOrYear(datepicker, Number(target.dataset.year));\n  }\n}\nfunction onClickPicker(datepicker) {\n  if (!datepicker.inline && !datepicker.config.disableTouchKeyboard) {\n    datepicker.inputField.focus();\n  }\n}\n\nfunction processPickerOptions(picker, options) {\n  if (options.title !== undefined) {\n    if (options.title) {\n      picker.controls.title.textContent = options.title;\n      showElement(picker.controls.title);\n    } else {\n      picker.controls.title.textContent = '';\n      hideElement(picker.controls.title);\n    }\n  }\n  if (options.prevArrow) {\n    var prevBtn = picker.controls.prevBtn;\n    emptyChildNodes(prevBtn);\n    options.prevArrow.forEach(function (node) {\n      prevBtn.appendChild(node.cloneNode(true));\n    });\n  }\n  if (options.nextArrow) {\n    var nextBtn = picker.controls.nextBtn;\n    emptyChildNodes(nextBtn);\n    options.nextArrow.forEach(function (node) {\n      nextBtn.appendChild(node.cloneNode(true));\n    });\n  }\n  if (options.locale) {\n    picker.controls.todayBtn.textContent = options.locale.today;\n    picker.controls.clearBtn.textContent = options.locale.clear;\n  }\n  if (options.todayBtn !== undefined) {\n    if (options.todayBtn) {\n      showElement(picker.controls.todayBtn);\n    } else {\n      hideElement(picker.controls.todayBtn);\n    }\n  }\n  if (hasProperty(options, 'minDate') || hasProperty(options, 'maxDate')) {\n    var _picker$datepicker$co = picker.datepicker.config,\n      minDate = _picker$datepicker$co.minDate,\n      maxDate = _picker$datepicker$co.maxDate;\n    picker.controls.todayBtn.disabled = !isInRange(today(), minDate, maxDate);\n  }\n  if (options.clearBtn !== undefined) {\n    if (options.clearBtn) {\n      showElement(picker.controls.clearBtn);\n    } else {\n      hideElement(picker.controls.clearBtn);\n    }\n  }\n}\n\n// Compute view date to reset, which will be...\n// - the last item of the selected dates or defaultViewDate if no selection\n// - limitted to minDate or maxDate if it exceeds the range\nfunction computeResetViewDate(datepicker) {\n  var dates = datepicker.dates,\n    config = datepicker.config;\n  var viewDate = dates.length > 0 ? lastItemOf(dates) : config.defaultViewDate;\n  return limitToRange(viewDate, config.minDate, config.maxDate);\n}\n\n// Change current view's view date\nfunction setViewDate(picker, newDate) {\n  var oldViewDate = new Date(picker.viewDate);\n  var newViewDate = new Date(newDate);\n  var _picker$currentView = picker.currentView,\n    id = _picker$currentView.id,\n    year = _picker$currentView.year,\n    first = _picker$currentView.first,\n    last = _picker$currentView.last;\n  var viewYear = newViewDate.getFullYear();\n  picker.viewDate = newDate;\n  if (viewYear !== oldViewDate.getFullYear()) {\n    triggerDatepickerEvent(picker.datepicker, 'changeYear');\n  }\n  if (newViewDate.getMonth() !== oldViewDate.getMonth()) {\n    triggerDatepickerEvent(picker.datepicker, 'changeMonth');\n  }\n\n  // return whether the new date is in different period on time from the one\n  // displayed in the current view\n  // when true, the view needs to be re-rendered on the next UI refresh.\n  switch (id) {\n    case 0:\n      return newDate < first || newDate > last;\n    case 1:\n      return viewYear !== year;\n    default:\n      return viewYear < first || viewYear > last;\n  }\n}\nfunction getTextDirection(el) {\n  return window.getComputedStyle(el).direction;\n}\n\n// Class representing the picker UI\nvar Picker = /*#__PURE__*/function () {\n  function Picker(datepicker) {\n    _classCallCheck(this, Picker);\n    this.datepicker = datepicker;\n    var template = pickerTemplate.replace(/%buttonClass%/g, datepicker.config.buttonClass);\n    var element = this.element = parseHTML(template).firstChild;\n    var _element$firstChild$c = _slicedToArray(element.firstChild.children, 3),\n      header = _element$firstChild$c[0],\n      main = _element$firstChild$c[1],\n      footer = _element$firstChild$c[2];\n    var title = header.firstElementChild;\n    var _header$lastElementCh = _slicedToArray(header.lastElementChild.children, 3),\n      prevBtn = _header$lastElementCh[0],\n      viewSwitch = _header$lastElementCh[1],\n      nextBtn = _header$lastElementCh[2];\n    var _footer$firstChild$ch = _slicedToArray(footer.firstChild.children, 2),\n      todayBtn = _footer$firstChild$ch[0],\n      clearBtn = _footer$firstChild$ch[1];\n    var controls = {\n      title: title,\n      prevBtn: prevBtn,\n      viewSwitch: viewSwitch,\n      nextBtn: nextBtn,\n      todayBtn: todayBtn,\n      clearBtn: clearBtn\n    };\n    this.main = main;\n    this.controls = controls;\n    var elementClass = datepicker.inline ? 'inline' : 'dropdown';\n    element.classList.add(\"datepicker-\".concat(elementClass));\n    elementClass === 'dropdown' ? element.classList.add('dropdown', 'absolute', 'top-0', 'left-0', 'z-50', 'pt-2') : null;\n    processPickerOptions(this, datepicker.config);\n    this.viewDate = computeResetViewDate(datepicker);\n\n    // set up event listeners\n    registerListeners(datepicker, [[element, 'click', onClickPicker.bind(null, datepicker), {\n      capture: true\n    }], [main, 'click', onClickView.bind(null, datepicker)], [controls.viewSwitch, 'click', onClickViewSwitch.bind(null, datepicker)], [controls.prevBtn, 'click', onClickPrevBtn.bind(null, datepicker)], [controls.nextBtn, 'click', onClickNextBtn.bind(null, datepicker)], [controls.todayBtn, 'click', onClickTodayBtn.bind(null, datepicker)], [controls.clearBtn, 'click', onClickClearBtn.bind(null, datepicker)]]);\n\n    // set up views\n    this.views = [new DaysView(this), new MonthsView(this), new YearsView(this, {\n      id: 2,\n      name: 'years',\n      cellClass: 'year',\n      step: 1\n    }), new YearsView(this, {\n      id: 3,\n      name: 'decades',\n      cellClass: 'decade',\n      step: 10\n    })];\n    this.currentView = this.views[datepicker.config.startView];\n    this.currentView.render();\n    this.main.appendChild(this.currentView.element);\n    datepicker.config.container.appendChild(this.element);\n  }\n  return _createClass(Picker, [{\n    key: \"setOptions\",\n    value: function setOptions(options) {\n      processPickerOptions(this, options);\n      this.views.forEach(function (view) {\n        view.init(options, false);\n      });\n      this.currentView.render();\n    }\n  }, {\n    key: \"detach\",\n    value: function detach() {\n      this.datepicker.config.container.removeChild(this.element);\n    }\n  }, {\n    key: \"show\",\n    value: function show() {\n      if (this.active) {\n        return;\n      }\n      this.element.classList.add('active', 'block');\n      this.element.classList.remove('hidden');\n      this.active = true;\n      var datepicker = this.datepicker;\n      if (!datepicker.inline) {\n        // ensure picker's direction matches input's\n        var inputDirection = getTextDirection(datepicker.inputField);\n        if (inputDirection !== getTextDirection(datepicker.config.container)) {\n          this.element.dir = inputDirection;\n        } else if (this.element.dir) {\n          this.element.removeAttribute('dir');\n        }\n        this.place();\n        if (datepicker.config.disableTouchKeyboard) {\n          datepicker.inputField.blur();\n        }\n      }\n      triggerDatepickerEvent(datepicker, 'show');\n    }\n  }, {\n    key: \"hide\",\n    value: function hide() {\n      if (!this.active) {\n        return;\n      }\n      this.datepicker.exitEditMode();\n      this.element.classList.remove('active', 'block');\n      this.element.classList.add('active', 'block', 'hidden');\n      this.active = false;\n      triggerDatepickerEvent(this.datepicker, 'hide');\n    }\n  }, {\n    key: \"place\",\n    value: function place() {\n      var _this$element = this.element,\n        classList = _this$element.classList,\n        style = _this$element.style;\n      var _this$datepicker = this.datepicker,\n        config = _this$datepicker.config,\n        inputField = _this$datepicker.inputField;\n      var container = config.container;\n      var _this$element$getBoun = this.element.getBoundingClientRect(),\n        calendarWidth = _this$element$getBoun.width,\n        calendarHeight = _this$element$getBoun.height;\n      var _container$getBoundin = container.getBoundingClientRect(),\n        containerLeft = _container$getBoundin.left,\n        containerTop = _container$getBoundin.top,\n        containerWidth = _container$getBoundin.width;\n      var _inputField$getBoundi = inputField.getBoundingClientRect(),\n        inputLeft = _inputField$getBoundi.left,\n        inputTop = _inputField$getBoundi.top,\n        inputWidth = _inputField$getBoundi.width,\n        inputHeight = _inputField$getBoundi.height;\n      var _config$orientation = config.orientation,\n        orientX = _config$orientation.x,\n        orientY = _config$orientation.y;\n      var scrollTop;\n      var left;\n      var top;\n      if (container === document.body) {\n        scrollTop = window.scrollY;\n        left = inputLeft + window.scrollX;\n        top = inputTop + scrollTop;\n      } else {\n        scrollTop = container.scrollTop;\n        left = inputLeft - containerLeft;\n        top = inputTop - containerTop + scrollTop;\n      }\n      if (orientX === 'auto') {\n        if (left < 0) {\n          // align to the left and move into visible area if input's left edge < window's\n          orientX = 'left';\n          left = 10;\n        } else if (left + calendarWidth > containerWidth) {\n          // align to the right if canlendar's right edge > container's\n          orientX = 'right';\n        } else {\n          orientX = getTextDirection(inputField) === 'rtl' ? 'right' : 'left';\n        }\n      }\n      if (orientX === 'right') {\n        left -= calendarWidth - inputWidth;\n      }\n      if (orientY === 'auto') {\n        orientY = top - calendarHeight < scrollTop ? 'bottom' : 'top';\n      }\n      if (orientY === 'top') {\n        top -= calendarHeight;\n      } else {\n        top += inputHeight;\n      }\n      classList.remove('datepicker-orient-top', 'datepicker-orient-bottom', 'datepicker-orient-right', 'datepicker-orient-left');\n      classList.add(\"datepicker-orient-\".concat(orientY), \"datepicker-orient-\".concat(orientX));\n      style.top = top ? \"\".concat(top, \"px\") : top;\n      style.left = left ? \"\".concat(left, \"px\") : left;\n    }\n  }, {\n    key: \"setViewSwitchLabel\",\n    value: function setViewSwitchLabel(labelText) {\n      this.controls.viewSwitch.textContent = labelText;\n    }\n  }, {\n    key: \"setPrevBtnDisabled\",\n    value: function setPrevBtnDisabled(disabled) {\n      this.controls.prevBtn.disabled = disabled;\n    }\n  }, {\n    key: \"setNextBtnDisabled\",\n    value: function setNextBtnDisabled(disabled) {\n      this.controls.nextBtn.disabled = disabled;\n    }\n  }, {\n    key: \"changeView\",\n    value: function changeView(viewId) {\n      var oldView = this.currentView;\n      var newView = this.views[viewId];\n      if (newView.id !== oldView.id) {\n        this.currentView = newView;\n        this._renderMethod = 'render';\n        triggerDatepickerEvent(this.datepicker, 'changeView');\n        this.main.replaceChild(newView.element, oldView.element);\n      }\n      return this;\n    }\n\n    // Change the focused date (view date)\n  }, {\n    key: \"changeFocus\",\n    value: function changeFocus(newViewDate) {\n      this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refreshFocus';\n      this.views.forEach(function (view) {\n        view.updateFocus();\n      });\n      return this;\n    }\n\n    // Apply the change of the selected dates\n  }, {\n    key: \"update\",\n    value: function update() {\n      var newViewDate = computeResetViewDate(this.datepicker);\n      this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refresh';\n      this.views.forEach(function (view) {\n        view.updateFocus();\n        view.updateSelection();\n      });\n      return this;\n    }\n\n    // Refresh the picker UI\n  }, {\n    key: \"render\",\n    value: function render() {\n      var quickRender = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      var renderMethod = quickRender && this._renderMethod || 'render';\n      delete this._renderMethod;\n      this.currentView[renderMethod]();\n    }\n  }]);\n}();\n\n// Find the closest date that doesn't meet the condition for unavailable date\n// Returns undefined if no available date is found\n// addFn: function to calculate the next date\n//   - args: time value, amount\n// increase: amount to pass to addFn\n// testFn: function to test the unavailablity of the date\n//   - args: time value; retun: true if unavailable\nfunction findNextAvailableOne(date, addFn, increase, testFn, min, max) {\n  if (!isInRange(date, min, max)) {\n    return;\n  }\n  if (testFn(date)) {\n    var newDate = addFn(date, increase);\n    return findNextAvailableOne(newDate, addFn, increase, testFn, min, max);\n  }\n  return date;\n}\n\n// direction: -1 (left/up), 1 (right/down)\n// vertical: true for up/down, false for left/right\nfunction moveByArrowKey(datepicker, ev, direction, vertical) {\n  var picker = datepicker.picker;\n  var currentView = picker.currentView;\n  var step = currentView.step || 1;\n  var viewDate = picker.viewDate;\n  var addFn;\n  var testFn;\n  switch (currentView.id) {\n    case 0:\n      if (vertical) {\n        viewDate = addDays(viewDate, direction * 7);\n      } else if (ev.ctrlKey || ev.metaKey) {\n        viewDate = addYears(viewDate, direction);\n      } else {\n        viewDate = addDays(viewDate, direction);\n      }\n      addFn = addDays;\n      testFn = function testFn(date) {\n        return currentView.disabled.includes(date);\n      };\n      break;\n    case 1:\n      viewDate = addMonths(viewDate, vertical ? direction * 4 : direction);\n      addFn = addMonths;\n      testFn = function testFn(date) {\n        var dt = new Date(date);\n        var year = currentView.year,\n          disabled = currentView.disabled;\n        return dt.getFullYear() === year && disabled.includes(dt.getMonth());\n      };\n      break;\n    default:\n      viewDate = addYears(viewDate, direction * (vertical ? 4 : 1) * step);\n      addFn = addYears;\n      testFn = function testFn(date) {\n        return currentView.disabled.includes(startOfYearPeriod(date, step));\n      };\n  }\n  viewDate = findNextAvailableOne(viewDate, addFn, direction < 0 ? -step : step, testFn, currentView.minDate, currentView.maxDate);\n  if (viewDate !== undefined) {\n    picker.changeFocus(viewDate).render();\n  }\n}\nfunction onKeydown(datepicker, ev) {\n  if (ev.key === 'Tab') {\n    unfocus(datepicker);\n    return;\n  }\n  var picker = datepicker.picker;\n  var _picker$currentView = picker.currentView,\n    id = _picker$currentView.id,\n    isMinView = _picker$currentView.isMinView;\n  if (!picker.active) {\n    switch (ev.key) {\n      case 'ArrowDown':\n      case 'Escape':\n        picker.show();\n        break;\n      case 'Enter':\n        datepicker.update();\n        break;\n      default:\n        return;\n    }\n  } else if (datepicker.editMode) {\n    switch (ev.key) {\n      case 'Escape':\n        picker.hide();\n        break;\n      case 'Enter':\n        datepicker.exitEditMode({\n          update: true,\n          autohide: datepicker.config.autohide\n        });\n        break;\n      default:\n        return;\n    }\n  } else {\n    switch (ev.key) {\n      case 'Escape':\n        picker.hide();\n        break;\n      case 'ArrowLeft':\n        if (ev.ctrlKey || ev.metaKey) {\n          goToPrevOrNext(datepicker, -1);\n        } else if (ev.shiftKey) {\n          datepicker.enterEditMode();\n          return;\n        } else {\n          moveByArrowKey(datepicker, ev, -1, false);\n        }\n        break;\n      case 'ArrowRight':\n        if (ev.ctrlKey || ev.metaKey) {\n          goToPrevOrNext(datepicker, 1);\n        } else if (ev.shiftKey) {\n          datepicker.enterEditMode();\n          return;\n        } else {\n          moveByArrowKey(datepicker, ev, 1, false);\n        }\n        break;\n      case 'ArrowUp':\n        if (ev.ctrlKey || ev.metaKey) {\n          switchView(datepicker);\n        } else if (ev.shiftKey) {\n          datepicker.enterEditMode();\n          return;\n        } else {\n          moveByArrowKey(datepicker, ev, -1, true);\n        }\n        break;\n      case 'ArrowDown':\n        if (ev.shiftKey && !ev.ctrlKey && !ev.metaKey) {\n          datepicker.enterEditMode();\n          return;\n        }\n        moveByArrowKey(datepicker, ev, 1, true);\n        break;\n      case 'Enter':\n        if (isMinView) {\n          datepicker.setDate(picker.viewDate);\n        } else {\n          picker.changeView(id - 1).render();\n        }\n        break;\n      case 'Backspace':\n      case 'Delete':\n        datepicker.enterEditMode();\n        return;\n      default:\n        if (ev.key.length === 1 && !ev.ctrlKey && !ev.metaKey) {\n          datepicker.enterEditMode();\n        }\n        return;\n    }\n  }\n  ev.preventDefault();\n  ev.stopPropagation();\n}\nfunction onFocus(datepicker) {\n  if (datepicker.config.showOnFocus && !datepicker._showing) {\n    datepicker.show();\n  }\n}\n\n// for the prevention for entering edit mode while getting focus on click\nfunction onMousedown(datepicker, ev) {\n  var el = ev.target;\n  if (datepicker.picker.active || datepicker.config.showOnClick) {\n    el._active = el === document.activeElement;\n    el._clicking = setTimeout(function () {\n      delete el._active;\n      delete el._clicking;\n    }, 2000);\n  }\n}\nfunction onClickInput(datepicker, ev) {\n  var el = ev.target;\n  if (!el._clicking) {\n    return;\n  }\n  clearTimeout(el._clicking);\n  delete el._clicking;\n  if (el._active) {\n    datepicker.enterEditMode();\n  }\n  delete el._active;\n  if (datepicker.config.showOnClick) {\n    datepicker.show();\n  }\n}\nfunction onPaste(datepicker, ev) {\n  if (ev.clipboardData.types.includes('text/plain')) {\n    datepicker.enterEditMode();\n  }\n}\n\n// for the `document` to delegate the events from outside the picker/input field\nfunction onClickOutside(datepicker, ev) {\n  var element = datepicker.element;\n  if (element !== document.activeElement) {\n    return;\n  }\n  var pickerElem = datepicker.picker.element;\n  if (findElementInEventPath(ev, function (el) {\n    return el === element || el === pickerElem;\n  })) {\n    return;\n  }\n  unfocus(datepicker);\n}\n\nfunction stringifyDates(dates, config) {\n  return dates.map(function (dt) {\n    return formatDate(dt, config.format, config.locale);\n  }).join(config.dateDelimiter);\n}\n\n// parse input dates and create an array of time values for selection\n// returns undefined if there are no valid dates in inputDates\n// when origDates (current selection) is passed, the function works to mix\n// the input dates into the current selection\nfunction processInputDates(datepicker, inputDates) {\n  var clear = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var config = datepicker.config,\n    origDates = datepicker.dates,\n    rangepicker = datepicker.rangepicker;\n  if (inputDates.length === 0) {\n    // empty input is considered valid unless origiDates is passed\n    return clear ? [] : undefined;\n  }\n  var rangeEnd = rangepicker && datepicker === rangepicker.datepickers[1];\n  var newDates = inputDates.reduce(function (dates, dt) {\n    var date = parseDate(dt, config.format, config.locale);\n    if (date === undefined) {\n      return dates;\n    }\n    if (config.pickLevel > 0) {\n      // adjust to 1st of the month/Jan 1st of the year\n      // or to the last day of the monh/Dec 31st of the year if the datepicker\n      // is the range-end picker of a rangepicker\n      var _dt = new Date(date);\n      if (config.pickLevel === 1) {\n        date = rangeEnd ? _dt.setMonth(_dt.getMonth() + 1, 0) : _dt.setDate(1);\n      } else {\n        date = rangeEnd ? _dt.setFullYear(_dt.getFullYear() + 1, 0, 0) : _dt.setMonth(0, 1);\n      }\n    }\n    if (isInRange(date, config.minDate, config.maxDate) && !dates.includes(date) && !config.datesDisabled.includes(date) && !config.daysOfWeekDisabled.includes(new Date(date).getDay())) {\n      dates.push(date);\n    }\n    return dates;\n  }, []);\n  if (newDates.length === 0) {\n    return;\n  }\n  if (config.multidate && !clear) {\n    // get the synmetric difference between origDates and newDates\n    newDates = newDates.reduce(function (dates, date) {\n      if (!origDates.includes(date)) {\n        dates.push(date);\n      }\n      return dates;\n    }, origDates.filter(function (date) {\n      return !newDates.includes(date);\n    }));\n  }\n  // do length check always because user can input multiple dates regardless of the mode\n  return config.maxNumberOfDates && newDates.length > config.maxNumberOfDates ? newDates.slice(config.maxNumberOfDates * -1) : newDates;\n}\n\n// refresh the UI elements\n// modes: 1: input only, 2, picker only, 3 both\nfunction refreshUI(datepicker) {\n  var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;\n  var quickRender = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  var config = datepicker.config,\n    picker = datepicker.picker,\n    inputField = datepicker.inputField;\n  if (mode & 2) {\n    var newView = picker.active ? config.pickLevel : config.startView;\n    picker.update().changeView(newView).render(quickRender);\n  }\n  if (mode & 1 && inputField) {\n    inputField.value = stringifyDates(datepicker.dates, config);\n  }\n}\nfunction _setDate(datepicker, inputDates, options) {\n  var clear = options.clear,\n    render = options.render,\n    autohide = options.autohide;\n  if (render === undefined) {\n    render = true;\n  }\n  if (!render) {\n    autohide = false;\n  } else if (autohide === undefined) {\n    autohide = datepicker.config.autohide;\n  }\n  var newDates = processInputDates(datepicker, inputDates, clear);\n  if (!newDates) {\n    return;\n  }\n  if (newDates.toString() !== datepicker.dates.toString()) {\n    datepicker.dates = newDates;\n    refreshUI(datepicker, render ? 3 : 1);\n    triggerDatepickerEvent(datepicker, 'changeDate');\n  } else {\n    refreshUI(datepicker, 1);\n  }\n  if (autohide) {\n    datepicker.hide();\n  }\n}\n\n/**\n * Class representing a date picker\n */\nvar Datepicker = /*#__PURE__*/function () {\n  /**\n   * Create a date picker\n   * @param  {Element} element - element to bind a date picker\n   * @param  {Object} [options] - config options\n   * @param  {DateRangePicker} [rangepicker] - DateRangePicker instance the\n   * date picker belongs to. Use this only when creating date picker as a part\n   * of date range picker\n   */\n  function Datepicker(element) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var rangepicker = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n    _classCallCheck(this, Datepicker);\n    element.datepicker = this;\n    this.element = element;\n\n    // set up config\n    var config = this.config = Object.assign({\n      buttonClass: options.buttonClass && String(options.buttonClass) || 'button',\n      container: document.body,\n      defaultViewDate: today(),\n      maxDate: undefined,\n      minDate: undefined\n    }, processOptions(defaultOptions, this));\n    this._options = options;\n    Object.assign(config, processOptions(options, this));\n\n    // configure by type\n    var inline = this.inline = element.tagName !== 'INPUT';\n    var inputField;\n    var initialDates;\n    if (inline) {\n      config.container = element;\n      initialDates = stringToArray(element.dataset.date, config.dateDelimiter);\n      delete element.dataset.date;\n    } else {\n      var container = options.container ? document.querySelector(options.container) : null;\n      if (container) {\n        config.container = container;\n      }\n      inputField = this.inputField = element;\n      inputField.classList.add('datepicker-input');\n      initialDates = stringToArray(inputField.value, config.dateDelimiter);\n    }\n    if (rangepicker) {\n      // check validiry\n      var index = rangepicker.inputs.indexOf(inputField);\n      var datepickers = rangepicker.datepickers;\n      if (index < 0 || index > 1 || !Array.isArray(datepickers)) {\n        throw Error('Invalid rangepicker object.');\n      }\n      // attach itaelf to the rangepicker here so that processInputDates() can\n      // determine if this is the range-end picker of the rangepicker while\n      // setting inital values when pickLevel > 0\n      datepickers[index] = this;\n      // add getter for rangepicker\n      Object.defineProperty(this, 'rangepicker', {\n        get: function get() {\n          return rangepicker;\n        }\n      });\n    }\n\n    // set initial dates\n    this.dates = [];\n    // process initial value\n    var inputDateValues = processInputDates(this, initialDates);\n    if (inputDateValues && inputDateValues.length > 0) {\n      this.dates = inputDateValues;\n    }\n    if (inputField) {\n      inputField.value = stringifyDates(this.dates, config);\n    }\n    var picker = this.picker = new Picker(this);\n    if (inline) {\n      this.show();\n    } else {\n      // set up event listeners in other modes\n      var onMousedownDocument = onClickOutside.bind(null, this);\n      var listeners = [[inputField, 'keydown', onKeydown.bind(null, this)], [inputField, 'focus', onFocus.bind(null, this)], [inputField, 'mousedown', onMousedown.bind(null, this)], [inputField, 'click', onClickInput.bind(null, this)], [inputField, 'paste', onPaste.bind(null, this)], [document, 'mousedown', onMousedownDocument], [document, 'touchstart', onMousedownDocument], [window, 'resize', picker.place.bind(picker)]];\n      registerListeners(this, listeners);\n    }\n  }\n\n  /**\n   * Format Date object or time value in given format and language\n   * @param  {Date|Number} date - date or time value to format\n   * @param  {String|Object} format - format string or object that contains\n   * toDisplay() custom formatter, whose signature is\n   * - args:\n   *   - date: {Date} - Date instance of the date passed to the method\n   *   - format: {Object} - the format object passed to the method\n   *   - locale: {Object} - locale for the language specified by `lang`\n   * - return:\n   *     {String} formatted date\n   * @param  {String} [lang=en] - language code for the locale to use\n   * @return {String} formatted date\n   */\n  return _createClass(Datepicker, [{\n    key: \"active\",\n    get:\n    /**\n     * @type {Boolean} - Whether the picker element is shown. `true` whne shown\n     */\n    function get() {\n      return !!(this.picker && this.picker.active);\n    }\n\n    /**\n     * @type {HTMLDivElement} - DOM object of picker element\n     */\n  }, {\n    key: \"pickerElement\",\n    get: function get() {\n      return this.picker ? this.picker.element : undefined;\n    }\n\n    /**\n     * Set new values to the config options\n     * @param {Object} options - config options to update\n     */\n  }, {\n    key: \"setOptions\",\n    value: function setOptions(options) {\n      var picker = this.picker;\n      var newOptions = processOptions(options, this);\n      Object.assign(this._options, options);\n      Object.assign(this.config, newOptions);\n      picker.setOptions(newOptions);\n      refreshUI(this, 3);\n    }\n\n    /**\n     * Show the picker element\n     */\n  }, {\n    key: \"show\",\n    value: function show() {\n      if (this.inputField) {\n        if (this.inputField.disabled) {\n          return;\n        }\n        if (this.inputField !== document.activeElement) {\n          this._showing = true;\n          this.inputField.focus();\n          delete this._showing;\n        }\n      }\n      this.picker.show();\n    }\n\n    /**\n     * Hide the picker element\n     * Not available on inline picker\n     */\n  }, {\n    key: \"hide\",\n    value: function hide() {\n      if (this.inline) {\n        return;\n      }\n      this.picker.hide();\n      this.picker.update().changeView(this.config.startView).render();\n    }\n\n    /**\n     * Destroy the Datepicker instance\n     * @return {Detepicker} - the instance destroyed\n     */\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.hide();\n      unregisterListeners(this);\n      this.picker.detach();\n      if (!this.inline) {\n        this.inputField.classList.remove('datepicker-input');\n      }\n      delete this.element.datepicker;\n      return this;\n    }\n\n    /**\n     * Get the selected date(s)\n     *\n     * The method returns a Date object of selected date by default, and returns\n     * an array of selected dates in multidate mode. If format string is passed,\n     * it returns date string(s) formatted in given format.\n     *\n     * @param  {String} [format] - Format string to stringify the date(s)\n     * @return {Date|String|Date[]|String[]} - selected date(s), or if none is\n     * selected, empty array in multidate mode and untitled in sigledate mode\n     */\n  }, {\n    key: \"getDate\",\n    value: function getDate() {\n      var _this = this;\n      var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n      var callback = format ? function (date) {\n        return formatDate(date, format, _this.config.locale);\n      } : function (date) {\n        return new Date(date);\n      };\n      if (this.config.multidate) {\n        return this.dates.map(callback);\n      }\n      if (this.dates.length > 0) {\n        return callback(this.dates[0]);\n      }\n    }\n\n    /**\n     * Set selected date(s)\n     *\n     * In multidate mode, you can pass multiple dates as a series of arguments\n     * or an array. (Since each date is parsed individually, the type of the\n     * dates doesn't have to be the same.)\n     * The given dates are used to toggle the select status of each date. The\n     * number of selected dates is kept from exceeding the length set to\n     * maxNumberOfDates.\n     *\n     * With clear: true option, the method can be used to clear the selection\n     * and to replace the selection instead of toggling in multidate mode.\n     * If the option is passed with no date arguments or an empty dates array,\n     * it works as \"clear\" (clear the selection then set nothing), and if the\n     * option is passed with new dates to select, it works as \"replace\" (clear\n     * the selection then set the given dates)\n     *\n     * When render: false option is used, the method omits re-rendering the\n     * picker element. In this case, you need to call refresh() method later in\n     * order for the picker element to reflect the changes. The input field is\n     * refreshed always regardless of this option.\n     *\n     * When invalid (unparsable, repeated, disabled or out-of-range) dates are\n     * passed, the method ignores them and applies only valid ones. In the case\n     * that all the given dates are invalid, which is distinguished from passing\n     * no dates, the method considers it as an error and leaves the selection\n     * untouched.\n     *\n     * @param {...(Date|Number|String)|Array} [dates] - Date strings, Date\n     * objects, time values or mix of those for new selection\n     * @param {Object} [options] - function options\n     * - clear: {boolean} - Whether to clear the existing selection\n     *     defualt: false\n     * - render: {boolean} - Whether to re-render the picker element\n     *     default: true\n     * - autohide: {boolean} - Whether to hide the picker element after re-render\n     *     Ignored when used with render: false\n     *     default: config.autohide\n     */\n  }, {\n    key: \"setDate\",\n    value: function setDate() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      var dates = [].concat(args);\n      var opts = {};\n      var lastArg = lastItemOf(args);\n      if (_typeof(lastArg) === 'object' && !Array.isArray(lastArg) && !(lastArg instanceof Date) && lastArg) {\n        Object.assign(opts, dates.pop());\n      }\n      var inputDates = Array.isArray(dates[0]) ? dates[0] : dates;\n      _setDate(this, inputDates, opts);\n    }\n\n    /**\n     * Update the selected date(s) with input field's value\n     * Not available on inline picker\n     *\n     * The input field will be refreshed with properly formatted date string.\n     *\n     * @param  {Object} [options] - function options\n     * - autohide: {boolean} - whether to hide the picker element after refresh\n     *     default: false\n     */\n  }, {\n    key: \"update\",\n    value: function update() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n      if (this.inline) {\n        return;\n      }\n      var opts = {\n        clear: true,\n        autohide: !!(options && options.autohide)\n      };\n      var inputDates = stringToArray(this.inputField.value, this.config.dateDelimiter);\n      _setDate(this, inputDates, opts);\n    }\n\n    /**\n     * Refresh the picker element and the associated input field\n     * @param {String} [target] - target item when refreshing one item only\n     * 'picker' or 'input'\n     * @param {Boolean} [forceRender] - whether to re-render the picker element\n     * regardless of its state instead of optimized refresh\n     */\n  }, {\n    key: \"refresh\",\n    value: function refresh() {\n      var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n      var forceRender = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      if (target && typeof target !== 'string') {\n        forceRender = target;\n        target = undefined;\n      }\n      var mode;\n      if (target === 'picker') {\n        mode = 2;\n      } else if (target === 'input') {\n        mode = 1;\n      } else {\n        mode = 3;\n      }\n      refreshUI(this, mode, !forceRender);\n    }\n\n    /**\n     * Enter edit mode\n     * Not available on inline picker or when the picker element is hidden\n     */\n  }, {\n    key: \"enterEditMode\",\n    value: function enterEditMode() {\n      if (this.inline || !this.picker.active || this.editMode) {\n        return;\n      }\n      this.editMode = true;\n      this.inputField.classList.add('in-edit', 'border-blue-700', '!border-primary-700');\n    }\n\n    /**\n     * Exit from edit mode\n     * Not available on inline picker\n     * @param  {Object} [options] - function options\n     * - update: {boolean} - whether to call update() after exiting\n     *     If false, input field is revert to the existing selection\n     *     default: false\n     */\n  }, {\n    key: \"exitEditMode\",\n    value: function exitEditMode() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n      if (this.inline || !this.editMode) {\n        return;\n      }\n      var opts = Object.assign({\n        update: false\n      }, options);\n      delete this.editMode;\n      this.inputField.classList.remove('in-edit', 'border-blue-700', '!border-primary-700');\n      if (opts.update) {\n        this.update(opts);\n      }\n    }\n  }], [{\n    key: \"formatDate\",\n    value: function formatDate$1(date, format, lang) {\n      return formatDate(date, format, lang && locales[lang] || locales.en);\n    }\n\n    /**\n     * Parse date string\n     * @param  {String|Date|Number} dateStr - date string, Date object or time\n     * value to parse\n     * @param  {String|Object} format - format string or object that contains\n     * toValue() custom parser, whose signature is\n     * - args:\n     *   - dateStr: {String|Date|Number} - the dateStr passed to the method\n     *   - format: {Object} - the format object passed to the method\n     *   - locale: {Object} - locale for the language specified by `lang`\n     * - return:\n     *     {Date|Number} parsed date or its time value\n     * @param  {String} [lang=en] - language code for the locale to use\n     * @return {Number} time value of parsed date\n     */\n  }, {\n    key: \"parseDate\",\n    value: function parseDate$1(dateStr, format, lang) {\n      return parseDate(dateStr, format, lang && locales[lang] || locales.en);\n    }\n\n    /**\n     * @type {Object} - Installed locales in `[languageCode]: localeObject` format\n     * en`:_English (US)_ is pre-installed.\n     */\n  }, {\n    key: \"locales\",\n    get: function get() {\n      return locales;\n    }\n  }]);\n}();\n\n// filter out the config options inapproprite to pass to Datepicker\nfunction filterOptions(options) {\n  var newOpts = Object.assign({}, options);\n  delete newOpts.inputs;\n  delete newOpts.allowOneSidedRange;\n  delete newOpts.maxNumberOfDates; // to ensure each datepicker handles a single date\n\n  return newOpts;\n}\nfunction setupDatepicker(rangepicker, changeDateListener, el, options) {\n  registerListeners(rangepicker, [[el, 'changeDate', changeDateListener]]);\n  new Datepicker(el, options, rangepicker);\n}\nfunction onChangeDate(rangepicker, ev) {\n  // to prevent both datepickers trigger the other side's update each other\n  if (rangepicker._updating) {\n    return;\n  }\n  rangepicker._updating = true;\n  var target = ev.target;\n  if (target.datepicker === undefined) {\n    return;\n  }\n  var datepickers = rangepicker.datepickers;\n  var setDateOptions = {\n    render: false\n  };\n  var changedSide = rangepicker.inputs.indexOf(target);\n  var otherSide = changedSide === 0 ? 1 : 0;\n  var changedDate = datepickers[changedSide].dates[0];\n  var otherDate = datepickers[otherSide].dates[0];\n  if (changedDate !== undefined && otherDate !== undefined) {\n    // if the start of the range > the end, swap them\n    if (changedSide === 0 && changedDate > otherDate) {\n      datepickers[0].setDate(otherDate, setDateOptions);\n      datepickers[1].setDate(changedDate, setDateOptions);\n    } else if (changedSide === 1 && changedDate < otherDate) {\n      datepickers[0].setDate(changedDate, setDateOptions);\n      datepickers[1].setDate(otherDate, setDateOptions);\n    }\n  } else if (!rangepicker.allowOneSidedRange) {\n    // to prevent the range from becoming one-sided, copy changed side's\n    // selection (no matter if it's empty) to the other side\n    if (changedDate !== undefined || otherDate !== undefined) {\n      setDateOptions.clear = true;\n      datepickers[otherSide].setDate(datepickers[changedSide].dates, setDateOptions);\n    }\n  }\n  datepickers[0].picker.update().render();\n  datepickers[1].picker.update().render();\n  delete rangepicker._updating;\n}\n\n/**\n * Class representing a date range picker\n */\nvar DateRangePicker = /*#__PURE__*/function () {\n  /**\n   * Create a date range picker\n   * @param  {Element} element - element to bind a date range picker\n   * @param  {Object} [options] - config options\n   */\n  function DateRangePicker(element) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _classCallCheck(this, DateRangePicker);\n    var inputs = Array.isArray(options.inputs) ? options.inputs : Array.from(element.querySelectorAll('input'));\n    if (inputs.length < 2) {\n      return;\n    }\n    element.rangepicker = this;\n    this.element = element;\n    this.inputs = inputs.slice(0, 2);\n    this.allowOneSidedRange = !!options.allowOneSidedRange;\n    var changeDateListener = onChangeDate.bind(null, this);\n    var cleanOptions = filterOptions(options);\n    // in order for initial date setup to work right when pcicLvel > 0,\n    // let Datepicker constructor add the instance to the rangepicker\n    var datepickers = [];\n    Object.defineProperty(this, 'datepickers', {\n      get: function get() {\n        return datepickers;\n      }\n    });\n    setupDatepicker(this, changeDateListener, this.inputs[0], cleanOptions);\n    setupDatepicker(this, changeDateListener, this.inputs[1], cleanOptions);\n    Object.freeze(datepickers);\n    // normalize the range if inital dates are given\n    if (datepickers[0].dates.length > 0) {\n      onChangeDate(this, {\n        target: this.inputs[0]\n      });\n    } else if (datepickers[1].dates.length > 0) {\n      onChangeDate(this, {\n        target: this.inputs[1]\n      });\n    }\n  }\n\n  /**\n   * @type {Array} - selected date of the linked date pickers\n   */\n  return _createClass(DateRangePicker, [{\n    key: \"dates\",\n    get: function get() {\n      return this.datepickers.length === 2 ? [this.datepickers[0].dates[0], this.datepickers[1].dates[0]] : undefined;\n    }\n\n    /**\n     * Set new values to the config options\n     * @param {Object} options - config options to update\n     */\n  }, {\n    key: \"setOptions\",\n    value: function setOptions(options) {\n      this.allowOneSidedRange = !!options.allowOneSidedRange;\n      var cleanOptions = filterOptions(options);\n      this.datepickers[0].setOptions(cleanOptions);\n      this.datepickers[1].setOptions(cleanOptions);\n    }\n\n    /**\n     * Destroy the DateRangePicker instance\n     * @return {DateRangePicker} - the instance destroyed\n     */\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.datepickers[0].destroy();\n      this.datepickers[1].destroy();\n      unregisterListeners(this);\n      delete this.element.rangepicker;\n    }\n\n    /**\n     * Get the start and end dates of the date range\n     *\n     * The method returns Date objects by default. If format string is passed,\n     * it returns date strings formatted in given format.\n     * The result array always contains 2 items (start date/end date) and\n     * undefined is used for unselected side. (e.g. If none is selected,\n     * the result will be [undefined, undefined]. If only the end date is set\n     * when allowOneSidedRange config option is true, [undefined, endDate] will\n     * be returned.)\n     *\n     * @param  {String} [format] - Format string to stringify the dates\n     * @return {Array} - Start and end dates\n     */\n  }, {\n    key: \"getDates\",\n    value: function getDates() {\n      var _this = this;\n      var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n      var callback = format ? function (date) {\n        return formatDate(date, format, _this.datepickers[0].config.locale);\n      } : function (date) {\n        return new Date(date);\n      };\n      return this.dates.map(function (date) {\n        return date === undefined ? date : callback(date);\n      });\n    }\n\n    /**\n     * Set the start and end dates of the date range\n     *\n     * The method calls datepicker.setDate() internally using each of the\n     * arguments in start\u2192end order.\n     *\n     * When a clear: true option object is passed instead of a date, the method\n     * clears the date.\n     *\n     * If an invalid date, the same date as the current one or an option object\n     * without clear: true is passed, the method considers that argument as an\n     * \"ineffective\" argument because calling datepicker.setDate() with those\n     * values makes no changes to the date selection.\n     *\n     * When the allowOneSidedRange config option is false, passing {clear: true}\n     * to clear the range works only when it is done to the last effective\n     * argument (in other words, passed to rangeEnd or to rangeStart along with\n     * ineffective rangeEnd). This is because when the date range is changed,\n     * it gets normalized based on the last change at the end of the changing\n     * process.\n     *\n     * @param {Date|Number|String|Object} rangeStart - Start date of the range\n     * or {clear: true} to clear the date\n     * @param {Date|Number|String|Object} rangeEnd - End date of the range\n     * or {clear: true} to clear the date\n     */\n  }, {\n    key: \"setDates\",\n    value: function setDates(rangeStart, rangeEnd) {\n      var _this$datepickers = _slicedToArray(this.datepickers, 2),\n        datepicker0 = _this$datepickers[0],\n        datepicker1 = _this$datepickers[1];\n      var origDates = this.dates;\n\n      // If range normalization runs on every change, we can't set a new range\n      // that starts after the end of the current range correctly because the\n      // normalization process swaps start\u2194\uFE0Eend right after setting the new start\n      // date. To prevent this, the normalization process needs to run once after\n      // both of the new dates are set.\n      this._updating = true;\n      datepicker0.setDate(rangeStart);\n      datepicker1.setDate(rangeEnd);\n      delete this._updating;\n      if (datepicker1.dates[0] !== origDates[1]) {\n        onChangeDate(this, {\n          target: this.inputs[1]\n        });\n      } else if (datepicker0.dates[0] !== origDates[0]) {\n        onChangeDate(this, {\n          target: this.inputs[0]\n        });\n      }\n    }\n  }]);\n}();\n\nexport { DateRangePicker, Datepicker };\n", null, null, null, "import { Controller } from '@hotwired/stimulus'\n\n// DTG production dashboard (#776). Auto-reloads the page on an interval (the\n// metrics are recomputed server-side each load). If a reload ever fails\n// (network/server down), the page keeps living past the interval \u2014 so a\n// separate, longer \"stale\" timer reveals a STALE banner, making a frozen wall\n// TV obvious from across the floor instead of silently showing old numbers.\nexport default class extends Controller {\n  static values = {\n    refreshInterval: { type: Number, default: 90000 }, // 90s\n    staleAfter: { type: Number, default: 300000 }       // 5 min\n  }\n  static targets = ['stale']\n\n  connect() {\n    this.refreshTimer = setInterval(() => window.location.reload(), this.refreshIntervalValue)\n    // A successful reload re-runs connect() and resets this. If we get here and\n    // 5 min elapse, reloads are failing \u2014 surface staleness.\n    this.staleTimer = setTimeout(() => this.markStale(), this.staleAfterValue)\n  }\n\n  disconnect() {\n    clearInterval(this.refreshTimer)\n    clearTimeout(this.staleTimer)\n  }\n\n  markStale() {\n    this.staleTargets.forEach((el) => el.classList.remove('hidden'))\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\n    \"listingInput\",\n    \"catalogSelect\",\n    \"loadButton\",\n    \"continueButton\",\n    \"importButton\",\n    \"errorContainer\",\n    \"errorMessage\",\n    \"progressIndicator\",\n    \"previewUrl\",\n    \"importMappingsField\",\n    \"listingImage\",\n    \"noImage\",\n    \"listingTitle\",\n    \"listingStatus\",\n    \"variantCount\",\n    \"catalogInfo\",\n    \"maxVariants\",\n    \"variantLimitWarning\",\n    \"availableVariants\",\n    \"selectedVariants\",\n    \"emptyState\",\n    \"selectionCounter\",\n    \"skuStatus\",\n    \"skuMessages\",\n    \"selectedVariantCard\",\n    \"skuManagement\",\n    \"baseSkuInput\",\n    \"autoMatchButton\",\n    \"existingImportsInfo\",\n    \"catalogItemAlreadyImported\",\n    \"catalogItemAlreadyImportedMessage\"\n  ]\n\n  static values = {\n    currentStep: String\n  }\n\n  connect() {\n    this.selectedVariants = new Set()\n    this.variantMappings = {}\n    this.customSkus = {}\n    this.listingData = null\n    this.catalogItemData = null\n    this.catalogVariantLimit = 0\n    this.mappingSuggestions = {}\n    this.existingImports = []\n    \n    // Initialize step visibility\n    this.showStep('listing_id')\n  }\n\n  // Loading state management\n  setLoadingState(loading, target = null, originalContent = null) {\n    const button = target || this.autoMatchButtonTarget\n    \n    if (loading) {\n      button.disabled = true\n      button.dataset.originalContent = button.innerHTML\n      button.innerHTML = `\n        <svg class=\"animate-spin h-4 w-4 mr-2 inline\" fill=\"none\" viewBox=\"0 0 24 24\">\n          <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n          <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"></path>\n        </svg>\n        ${button.dataset.loadingText || 'Loading...'}\n      `\n    } else {\n      button.disabled = false\n      button.innerHTML = button.dataset.originalContent || originalContent\n    }\n  }\n\n  // Step navigation methods\n  showStep(stepName) {\n    // Hide all steps\n    this.element.querySelectorAll('.step-section').forEach(section => {\n      section.classList.add('hidden')\n    })\n    \n    // Show requested step\n    const stepSection = this.element.querySelector(`[data-step=\"${stepName}\"]`)\n    if (stepSection) {\n      stepSection.classList.remove('hidden')\n    }\n    \n    // Update progress indicator\n    this.updateProgressIndicator(stepName)\n    \n    // Update current step value\n    this.currentStepValue = stepName\n  }\n\n  updateProgressIndicator(currentStep) {\n    const steps = ['listing_id', 'listing_info', 'variant_selection']\n    const currentIndex = steps.indexOf(currentStep)\n    \n    steps.forEach((step, index) => {\n      const indicator = this.element.querySelector(`[data-step-indicator=\"${step}\"]`)\n      if (!indicator) return\n      \n      const numberElement = indicator.querySelector('[data-step-number]')\n      const textElement = indicator.querySelector('span.ml-2')\n      \n      if (index < currentIndex) {\n        // Completed step\n        numberElement.classList.remove('bg-gray-300', 'text-gray-600')\n        numberElement.classList.add('bg-green-600', 'text-white')\n        textElement.classList.remove('text-gray-500')\n        textElement.classList.add('text-green-600')\n      } else if (index === currentIndex) {\n        // Current step\n        numberElement.classList.remove('bg-gray-300', 'text-gray-600', 'bg-green-600')\n        numberElement.classList.add('bg-blue-600', 'text-white')\n        textElement.classList.remove('text-gray-500', 'text-green-600')\n        textElement.classList.add('text-gray-900')\n      } else {\n        // Future step\n        numberElement.classList.remove('bg-blue-600', 'bg-green-600', 'text-white')\n        numberElement.classList.add('bg-gray-300', 'text-gray-600')\n        textElement.classList.remove('text-gray-900', 'text-green-600')\n        textElement.classList.add('text-gray-500')\n      }\n    })\n    \n    // Update connectors\n    const connectors = this.element.querySelectorAll('[data-step-connector]')\n    connectors.forEach((connector, index) => {\n      if (index < currentIndex) {\n        connector.classList.remove('bg-gray-300')\n        connector.classList.add('bg-green-600')\n      } else {\n        connector.classList.remove('bg-green-600')\n        connector.classList.add('bg-gray-300')\n      }\n    })\n  }\n\n  goBack() {\n    if (this.currentStepValue === 'listing_info') {\n      this.showStep('listing_id')\n    } else if (this.currentStepValue === 'variant_selection') {\n      this.showStep('listing_info')\n    }\n  }\n\n  // Step 1: Listing ID handlers\n  handleListingIdInput(event) {\n    const value = event.target.value.trim()\n    if (this.hasLoadButtonTarget) {\n      this.loadButtonTarget.disabled = !value\n    }\n  }\n\n  async loadListing() {\n    const listingId = this.listingInputTarget.value.trim()\n    \n    if (!listingId) {\n      this.showError(\"Please enter an Etsy listing ID or URL\")\n      return\n    }\n    \n    // Add loading state\n    this.setLoadingState(true, this.loadButtonTarget)\n    this.loadButtonTarget.dataset.loadingText = \"Loading Etsy listing...\"\n    \n    try {\n      const url = this.previewUrlTarget.value\n      const response = await fetch(url, {\n        method: \"POST\",\n        headers: {\n          \"X-CSRF-Token\": this.csrfToken,\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\"\n        },\n        body: JSON.stringify({ listing_id: listingId })\n      })\n      \n      if (!response.ok) {\n        const data = await response.json()\n        throw new Error(data.error || \"Failed to load listing\")\n      }\n      \n      const data = await response.json()\n      this.listingData = data\n      \n      // Populate listing info\n      this.populateListingInfo(data)\n      \n      // Move to next step\n      this.showStep('listing_info')\n      \n    } catch (error) {\n      this.showError(error.message)\n    } finally {\n      // Remove loading state\n      this.setLoadingState(false, this.loadButtonTarget)\n    }\n  }\n\n  populateListingInfo(data) {\n    // Update image\n    if (data.image_url && this.hasListingImageTarget) {\n      this.listingImageTarget.src = data.image_url\n      this.listingImageTarget.classList.remove('hidden')\n      if (this.hasNoImageTarget) {\n        this.noImageTarget.classList.add('hidden')\n      }\n    }\n\n    // Update text fields\n    if (this.hasListingTitleTarget) {\n      this.listingTitleTarget.textContent = data.title || 'Untitled'\n    }\n\n    if (this.hasListingStatusTarget) {\n      this.listingStatusTarget.textContent = data.status || 'Unknown'\n      this.listingStatusTarget.classList.toggle('text-green-600', data.status === 'active')\n      this.listingStatusTarget.classList.toggle('text-gray-600', data.status !== 'active')\n    }\n\n    if (this.hasVariantCountTarget) {\n      this.variantCountTarget.textContent = data.variants?.length || 0\n    }\n\n    // Store and display existing imports info\n    this.existingImports = data.existing_imports || []\n    this.renderExistingImportsInfo()\n  }\n\n  renderExistingImportsInfo() {\n    if (!this.hasExistingImportsInfoTarget) return\n\n    if (this.existingImports.length === 0) {\n      this.existingImportsInfoTarget.classList.add('hidden')\n      return\n    }\n\n    const catalogItems = this.existingImports\n      .map(imp => imp.catalog_item_name || 'Unknown')\n      .join(', ')\n\n    this.existingImportsInfoTarget.innerHTML = `\n      <div class=\"p-4 bg-blue-50 border border-blue-200 rounded-lg\">\n        <div class=\"flex items-start\">\n          <div class=\"flex-shrink-0\">\n            <svg class=\"h-5 w-5 text-blue-400\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n              <path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clip-rule=\"evenodd\"/>\n            </svg>\n          </div>\n          <div class=\"ml-3 text-sm\">\n            <p class=\"text-blue-700 font-medium\">This listing has already been imported</p>\n            <p class=\"text-blue-600 mt-1\">\n              Existing product${this.existingImports.length > 1 ? 's' : ''}: ${this.existingImports.map(imp =>\n                `<strong>${imp.title || 'Untitled'}</strong> (${imp.catalog_item_name || 'Unknown'})`\n              ).join(', ')}\n            </p>\n            <p class=\"text-blue-600 mt-1\">You can still import this listing to a different catalog item.</p>\n          </div>\n        </div>\n      </div>\n    `\n    this.existingImportsInfoTarget.classList.remove('hidden')\n  }\n\n  // Step 2: Catalog selection handlers\n  catalogItemChanged(event) {\n    const selectedOption = event.target.selectedOptions[0]\n\n    if (!selectedOption || !selectedOption.value) {\n      this.catalogItemData = null\n      this.catalogVariantLimit = 0\n      if (this.hasCatalogInfoTarget) {\n        this.catalogInfoTarget.classList.add('hidden')\n      }\n      if (this.hasContinueButtonTarget) {\n        this.continueButtonTarget.disabled = true\n      }\n      this.hideCatalogItemAlreadyImported()\n      return\n    }\n\n    // Extract variant count from data attribute\n    const variantCount = parseInt(selectedOption.dataset.variantCount || '0', 10)\n    this.catalogVariantLimit = variantCount\n\n    // Show catalog info\n    if (this.hasCatalogInfoTarget) {\n      this.catalogInfoTarget.classList.remove('hidden')\n    }\n\n    if (this.hasMaxVariantsTarget) {\n      this.maxVariantsTarget.textContent = variantCount\n    }\n\n    // Check if listing has more variants than catalog supports\n    const listingVariantCount = this.listingData?.variants?.length || 0\n    if (this.hasVariantLimitWarningTarget) {\n      this.variantLimitWarningTarget.classList.toggle('hidden', listingVariantCount <= variantCount)\n    }\n\n    // Check if this catalog item was already imported for this listing\n    const selectedCatalogItemId = parseInt(selectedOption.value, 10)\n    const existingImport = this.existingImports.find(imp => imp.catalog_item_id === selectedCatalogItemId)\n\n    if (existingImport) {\n      this.showCatalogItemAlreadyImported(existingImport)\n      if (this.hasContinueButtonTarget) {\n        this.continueButtonTarget.disabled = true\n      }\n    } else {\n      this.hideCatalogItemAlreadyImported()\n      if (this.hasContinueButtonTarget) {\n        this.continueButtonTarget.disabled = false\n      }\n    }\n\n    // Store catalog item data\n    this.catalogItemData = {\n      id: selectedOption.value,\n      name: selectedOption.text,\n      variantCount: variantCount\n    }\n  }\n\n  showCatalogItemAlreadyImported(existingImport) {\n    if (this.hasCatalogItemAlreadyImportedTarget) {\n      this.catalogItemAlreadyImportedTarget.classList.remove('hidden')\n    }\n    if (this.hasCatalogItemAlreadyImportedMessageTarget) {\n      this.catalogItemAlreadyImportedMessageTarget.textContent =\n        `This listing was already imported as \"${existingImport.title || 'Untitled'}\" using this catalog item.`\n    }\n  }\n\n  hideCatalogItemAlreadyImported() {\n    if (this.hasCatalogItemAlreadyImportedTarget) {\n      this.catalogItemAlreadyImportedTarget.classList.add('hidden')\n    }\n  }\n\n  async proceedToVariantSelection() {\n    if (!this.catalogItemData || !this.listingData) {\n      return\n    }\n\n    // Prevent double-clicks: disable continue button and show loading\n    const proceedBtn = this.hasContinueButtonTarget ? this.continueButtonTarget : null\n    if (proceedBtn) {\n      proceedBtn.disabled = true\n      proceedBtn.dataset.originalContent = proceedBtn.innerHTML\n      proceedBtn.innerHTML = `\n        <svg class=\"animate-spin h-4 w-4 mr-2 inline\" fill=\"none\" viewBox=\"0 0 24 24\">\n          <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n          <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"></path>\n        </svg>\n        Loading variants...\n      `\n    }\n\n    try {\n      // Load catalog variants for the selected catalog item\n      await this.loadCatalogVariants()\n\n      // Render variant cards\n      this.renderVariantCards()\n\n      // Update selection counter\n      this.updateSelectionCounter()\n\n      // Hide auto-match button if only one variant\n      this.updateAutoMatchButtonVisibility()\n\n      // Move to variant selection step\n      this.showStep('variant_selection')\n    } finally {\n      // Always restore button state\n      if (proceedBtn) {\n        proceedBtn.disabled = false\n        proceedBtn.innerHTML = proceedBtn.dataset.originalContent || 'Continue to Variant Selection'\n      }\n    }\n  }\n\n  async loadCatalogVariants() {\n    try {\n      // First load catalog variants\n      const variantsResponse = await fetch(`/products/etsy_imports/catalog_variants?catalog_item_id=${this.catalogItemData.id}`, {\n        headers: {\n          \"X-CSRF-Token\": this.csrfToken,\n          \"Accept\": \"application/json\"\n        }\n      })\n      \n      if (!variantsResponse.ok) {\n        const errorData = await variantsResponse.json().catch(() => null)\n        const errorMessage = errorData?.error || `Failed to load catalog variants (${variantsResponse.status})`\n        throw new Error(errorMessage)\n      }\n      \n      const variantsData = await variantsResponse.json()\n      \n      // Check if variants exist\n      if (!variantsData.variants || variantsData.variants.length === 0) {\n        throw new Error(\"This catalog item has no variants configured\")\n      }\n      \n      // Sort catalog variants alphabetically by name\n      this.catalogVariants = variantsData.variants.sort((a, b) => a.name.localeCompare(b.name))\n      \n      // Log for debugging\n      console.log(`Loaded ${this.catalogVariants.length} catalog variants`)\n      \n      // Now load the full preview with mapping suggestions\n      const previewResponse = await fetch(this.previewUrlTarget.value, {\n        method: \"POST\",\n        headers: {\n          \"X-CSRF-Token\": this.csrfToken,\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\"\n        },\n        body: JSON.stringify({\n          listing_id: this.listingInputTarget.value.trim(),\n          catalog_item_id: this.catalogItemData.id\n        })\n      })\n      \n      if (!previewResponse.ok) {\n        const errorData = await previewResponse.json().catch(() => null)\n        const errorMessage = errorData?.error || `Failed to load variant mapping suggestions (${previewResponse.status})`\n        throw new Error(errorMessage)\n      }\n      \n      const previewData = await previewResponse.json()\n      // Store the mapping suggestions\n      this.mappingSuggestions = previewData.suggestions || {}\n      \n      console.log(`Loaded mapping suggestions for ${Object.keys(this.mappingSuggestions).length} variants`)\n      \n    } catch (error) {\n      // Show the specific error message\n      this.showError(error.message || \"Failed to load catalog variants\")\n      console.error(\"Error in loadCatalogVariants:\", error)\n    }\n  }\n\n  renderVariantCards() {\n    if (!this.hasAvailableVariantsTarget || !this.listingData?.variants) {\n      return\n    }\n    \n    // Clear existing cards\n    this.availableVariantsTarget.innerHTML = ''\n    \n    // Render a card for each Etsy variant\n    this.listingData.variants.forEach(variant => {\n      const card = this.createVariantCard(variant)\n      this.availableVariantsTarget.appendChild(card)\n    })\n  }\n\n  createVariantCard(variant) {\n    const div = document.createElement('div')\n    const isSelected = this.selectedVariants.has(variant.id)\n    const duplicateSku = this.checkDuplicateSku(variant.sku)\n    \n    div.innerHTML = `\n      <div class=\"variant-card p-3 border rounded-lg cursor-pointer transition-all duration-200 hover:shadow-md ${isSelected ? 'border-blue-500 bg-blue-50' : 'border-gray-200 bg-white hover:border-gray-300'}\"\n           data-variant-id=\"${variant.id}\"\n           data-variant-sku=\"${variant.sku || ''}\"\n           data-variant-name=\"${variant.display_name || variant.title}\"\n           data-action=\"click->etsy-import#toggleVariant\">\n        <div class=\"flex items-start justify-between\">\n          <div class=\"flex-1\">\n            <h4 class=\"font-medium text-sm text-gray-900\">${variant.display_name || variant.title}</h4>\n            <div class=\"mt-1 space-y-1\">\n              ${variant.sku ? `\n                <p class=\"text-xs text-gray-600\">\n                  SKU: <span class=\"font-mono\">${variant.sku}</span>\n                  ${duplicateSku ? `\n                    <span class=\"ml-1 inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-amber-100 text-amber-800\">\n                      Duplicate\n                    </span>\n                  ` : ''}\n                </p>\n              ` : '<p class=\"text-xs text-gray-500 italic\">No SKU</p>'}\n              ${variant.price_cents ? `\n                <p class=\"text-xs text-gray-600\">Price: $${(variant.price_cents / 100.0).toFixed(2)}</p>\n              ` : ''}\n            </div>\n          </div>\n          <div class=\"ml-3 flex-shrink-0\">\n            ${isSelected ? `\n              <svg class=\"w-5 h-5 text-blue-600\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n                <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/>\n              </svg>\n            ` : `\n              <svg class=\"w-5 h-5 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 6v6m0 0v6m0-6h6m-6 0H6\"></path>\n              </svg>\n            `}\n          </div>\n        </div>\n      </div>\n    `\n    \n    return div.firstElementChild\n  }\n\n  toggleVariant(event) {\n    const card = event.currentTarget\n    const variantId = card.dataset.variantId\n    \n    if (this.selectedVariants.has(variantId)) {\n      this.removeSelectedVariant(variantId)\n    } else {\n      // Check limit\n      if (this.selectedVariants.size >= this.catalogVariantLimit) {\n        this.showError(`You can only select up to ${this.catalogVariantLimit} variants for this catalog item.`)\n        return\n      }\n      \n      this.addSelectedVariant(variantId)\n    }\n    \n    // Update UI\n    this.refreshVariantCards()\n    this.updateSelectionCounter()\n    this.updateImportButton()\n  }\n\n  addSelectedVariant(variantId) {\n    this.selectedVariants.add(variantId)\n    \n    // Find variant data\n    const variant = this.listingData.variants.find(v => v.id === variantId)\n    if (!variant) return\n    \n    // Create selected variant card\n    const selectedCard = this.createSelectedVariantCard(variant)\n    \n    // Add to selected container\n    if (this.hasSelectedVariantsTarget) {\n      // Hide empty state if shown\n      if (this.hasEmptyStateTarget) {\n        this.emptyStateTarget.classList.add('hidden')\n      }\n      \n      this.selectedVariantsTarget.appendChild(selectedCard)\n    }\n  }\n\n  removeSelectedVariant(variantId) {\n    this.selectedVariants.delete(variantId)\n    delete this.variantMappings[variantId]\n    delete this.customSkus[variantId]\n    \n    // Remove from selected container\n    const selectedCard = this.selectedVariantsTarget.querySelector(`[data-variant-id=\"${variantId}\"]`)\n    if (selectedCard) {\n      selectedCard.remove()\n    }\n    \n    // Show empty state if no variants selected\n    if (this.selectedVariants.size === 0 && this.hasEmptyStateTarget) {\n      this.emptyStateTarget.classList.remove('hidden')\n    }\n  }\n\n  createSelectedVariantCard(variant) {\n    const needsNewSku = this.checkDuplicateSku(variant.sku) || !variant.sku\n    const suggestedSku = needsNewSku ? this.generateSuggestedSku(variant) : variant.sku\n    \n    // Check if we have a mapping suggestion for this variant\n    const suggestedCatalogVariantId = this.mappingSuggestions[variant.id]\n    const isAutoMatched = !!suggestedCatalogVariantId\n    \n    // If we have a suggestion, apply it to the mapping\n    if (suggestedCatalogVariantId && !this.variantMappings[variant.id]) {\n      this.variantMappings[variant.id] = suggestedCatalogVariantId\n    }\n    \n    // Group and sort catalog variants for the dropdown\n    const groupedVariants = this.groupAndSortCatalogVariants()\n    \n    const div = document.createElement('div')\n    div.innerHTML = `\n      <div class=\"selected-variant-card p-3 border border-blue-200 rounded-lg bg-blue-50\"\n           data-variant-id=\"${variant.id}\"\n           data-etsy-import-target=\"selectedVariantCard\">\n        <div class=\"flex items-start justify-between mb-2\">\n          <div class=\"flex-1 mr-2\">\n            <h4 class=\"font-medium text-sm text-gray-900\">\n              ${variant.display_name || variant.title}\n              ${isAutoMatched ? `\n                <span class=\"ml-2 inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-green-100 text-green-800\">\n                  <svg class=\"w-3 h-3 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n                    <path fill-rule=\"evenodd\" d=\"M6.267 3.455a3.066 3.066 0 001.745-.723 3.066 3.066 0 013.976 0 3.066 3.066 0 001.745.723 3.066 3.066 0 012.812 2.812c.051.643.304 1.254.723 1.745a3.066 3.066 0 010 3.976 3.066 3.066 0 00-.723 1.745 3.066 3.066 0 01-2.812 2.812 3.066 3.066 0 00-1.745.723 3.066 3.066 0 01-3.976 0 3.066 3.066 0 00-1.745-.723 3.066 3.066 0 01-2.812-2.812 3.066 3.066 0 00-.723-1.745 3.066 3.066 0 010-3.976 3.066 3.066 0 00.723-1.745 3.066 3.066 0 012.812-2.812zm7.44 5.252a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/>\n                  </svg>\n                  Auto-matched\n                </span>\n              ` : ''}\n            </h4>\n            <p class=\"text-xs text-gray-600\">\n              ${variant.sku ? `SKU: <span class=\"font-mono\">${variant.sku}</span>` : '<span class=\"italic\">No SKU</span>'}\n            </p>\n          </div>\n          <button type=\"button\"\n                  class=\"text-gray-400 hover:text-red-600 transition-colors flex-shrink-0\"\n                  data-action=\"click->etsy-import#handleRemoveClick\"\n                  data-variant-id=\"${variant.id}\">\n            <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n              <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path>\n            </svg>\n          </button>\n        </div>\n        \n        <div class=\"space-y-2\">\n          <div>\n            <label class=\"block text-xs font-medium text-gray-700 mb-1\">Map to Catalog Variant</label>\n            <select class=\"variant-select block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 text-sm\"\n                    data-etsy-variant-id=\"${variant.id}\"\n                    data-action=\"change->etsy-import#updateMapping\">\n              <option value=\"\">Select variant...</option>\n              ${groupedVariants}\n            </select>\n          </div>\n          \n          <div class=\"sku-management\" data-etsy-import-target=\"skuManagement\">\n            <label class=\"block text-xs font-medium text-gray-700 mb-1\">Product SKU</label>\n            \n            ${needsNewSku ? `\n              <div class=\"space-y-1\">\n                <div class=\"flex items-center space-x-2\">\n                  <input type=\"text\"\n                         class=\"flex-1 rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 text-sm\"\n                         placeholder=\"Enter SKU\"\n                         data-etsy-variant-id=\"${variant.id}\"\n                         data-action=\"input->etsy-import#updateCustomSku\"\n                         value=\"${suggestedSku}\">\n                  <button type=\"button\"\n                          class=\"text-xs text-blue-600 hover:text-blue-700 whitespace-nowrap px-2 py-1\"\n                          data-action=\"click->etsy-import#generateSku\"\n                          data-variant-id=\"${variant.id}\">\n                    Generate\n                  </button>\n                </div>\n                <p class=\"text-xs text-amber-600 flex items-center\">\n                  <svg class=\"inline w-3 h-3 mr-1 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n                    <path fill-rule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clip-rule=\"evenodd\"/>\n                  </svg>\n                  New SKU required\n                </p>\n              </div>\n            ` : `\n              <div class=\"flex items-center space-x-2\">\n                <input type=\"text\"\n                       class=\"flex-1 rounded-md border-gray-300 shadow-sm bg-gray-50 text-sm\"\n                       value=\"${variant.sku}\"\n                       readonly>\n                <span class=\"text-xs text-green-600 flex items-center\">\n                  <svg class=\"w-3 h-3 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n                    <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/>\n                  </svg>\n                  Valid\n                </span>\n              </div>\n            `}\n          </div>\n        </div>\n      </div>\n    `\n    \n    const cardElement = div.firstElementChild\n    \n    // Set the selected value if we have a suggestion\n    if (suggestedCatalogVariantId) {\n      const selectElement = cardElement.querySelector('.variant-select')\n      if (selectElement) {\n        selectElement.value = String(suggestedCatalogVariantId)\n      }\n    }\n    \n    return cardElement\n  }\n\n  // Add new method to group and sort catalog variants\n  groupAndSortCatalogVariants() {\n    if (!this.catalogVariants) return ''\n    \n    // Group variants by color\n    const grouped = {}\n    this.catalogVariants.forEach(variant => {\n      const group = variant.color_group || 'Other'\n      if (!grouped[group]) {\n        grouped[group] = []\n      }\n      grouped[group].push(variant)\n    })\n    \n    // Sort groups and build option HTML\n    let html = ''\n    Object.keys(grouped).sort().forEach(group => {\n      html += `<optgroup label=\"${group}\">`\n      grouped[group]\n        .sort((a, b) => (a.display_order || 999) - (b.display_order || 999))\n        .forEach(variant => {\n          html += `<option value=\"${variant.id}\">${variant.name}</option>`\n        })\n      html += '</optgroup>'\n    })\n    \n    return html\n  }\n\n\n  handleRemoveClick(event) {\n    event.stopPropagation()\n    const variantId = event.currentTarget.dataset.variantId\n    this.removeSelectedVariant(variantId)\n    this.refreshVariantCards()\n    this.updateSelectionCounter()\n    this.updateImportButton()\n  }\n\n  updateMapping(event) {\n    const etsyVariantId = event.target.dataset.etsyVariantId\n    const catalogVariantId = event.target.value\n    \n    if (catalogVariantId) {\n      this.variantMappings[etsyVariantId] = catalogVariantId\n    } else {\n      delete this.variantMappings[etsyVariantId]\n    }\n    \n    this.updateImportMappingsField()\n    this.updateImportButton()\n  }\n\n  updateCustomSku(event) {\n    const etsyVariantId = event.target.dataset.etsyVariantId\n    const customSku = event.target.value.trim()\n    \n    if (customSku) {\n      this.customSkus[etsyVariantId] = customSku\n    } else {\n      delete this.customSkus[etsyVariantId]\n    }\n    \n    this.updateImportMappingsField()\n  }\n\n  generateSku(event) {\n    const variantId = event.currentTarget.dataset.variantId\n    const variant = this.listingData.variants.find(v => v.id === variantId)\n    if (!variant) return\n    \n    // Generate a new SKU using base SKU if available\n    const baseSkuValue = this.hasBaseSkuInputTarget ? this.baseSkuInputTarget.value.trim() : ''\n    const prefix = baseSkuValue ? `${baseSkuValue}-` : 'PODP-'\n    // Calculate remaining length to fill 32 char Etsy limit (minimum 6 for uniqueness)\n    const remainingLength = Math.max(32 - prefix.length, 6)\n    const randomSuffix = this.generateRandomString(remainingLength)\n    const generatedSku = `${prefix}${randomSuffix}`\n    \n    // Update the input field\n    const input = this.selectedVariantsTarget.querySelector(`input[data-etsy-variant-id=\"${variantId}\"]`)\n    if (input) {\n      input.value = generatedSku\n      this.customSkus[variantId] = generatedSku\n      this.updateImportMappingsField()\n      this.flashField(input)\n    }\n  }\n\n  refreshVariantCards() {\n    // Update available variant cards\n    if (this.hasAvailableVariantsTarget) {\n      this.availableVariantsTarget.querySelectorAll('.variant-card').forEach(card => {\n        const variantId = card.dataset.variantId\n        const isSelected = this.selectedVariants.has(variantId)\n        \n        // Update styling\n        if (isSelected) {\n          card.classList.remove('border-gray-200', 'bg-white', 'hover:border-gray-300')\n          card.classList.add('border-blue-500', 'bg-blue-50')\n        } else {\n          card.classList.remove('border-blue-500', 'bg-blue-50')\n          card.classList.add('border-gray-200', 'bg-white', 'hover:border-gray-300')\n        }\n        \n        // Update icon\n        const iconContainer = card.querySelector('.ml-3.flex-shrink-0')\n        if (iconContainer) {\n          iconContainer.innerHTML = isSelected ? `\n            <svg class=\"w-5 h-5 text-blue-600\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n              <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/>\n            </svg>\n          ` : `\n            <svg class=\"w-5 h-5 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n              <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 6v6m0 0v6m0-6h6m-6 0H6\"></path>\n            </svg>\n          `\n        }\n      })\n    }\n    \n    // Don't refresh selected variant cards - preserve their state and dropdown selections\n  }\n  \n  refreshSelectedVariantCards() {\n    if (!this.hasSelectedVariantsTarget) return\n    \n    // Clear and rebuild selected variants\n    this.selectedVariantsTarget.innerHTML = ''\n    \n    // Check if any variants are selected\n    if (this.selectedVariants.size === 0) {\n      this.selectedVariantsTarget.innerHTML = `\n        <div class=\"text-center py-8 text-gray-400\" data-etsy-import-target=\"emptyState\">\n          <svg class=\"mx-auto h-12 w-12 mb-3\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10\"></path>\n          </svg>\n          <p class=\"text-sm\">Click variants on the left to add them here</p>\n        </div>\n      `\n      return\n    }\n    \n    // Create cards for each selected variant\n    this.selectedVariants.forEach(variantId => {\n      const variant = this.listingData.variants.find(v => v.id === variantId)\n      if (variant) {\n        const card = this.createSelectedVariantCard(variant)\n        this.selectedVariantsTarget.appendChild(card)\n      }\n    })\n  }\n\n  updateSelectionCounter() {\n    if (this.hasSelectionCounterTarget) {\n      this.selectionCounterTarget.textContent = `${this.selectedVariants.size} of ${this.catalogVariantLimit} variants selected`\n    }\n    \n    // Update SKU status\n    this.updateSkuStatus()\n  }\n  \n  updateAutoMatchButtonVisibility() {\n    if (this.hasAutoMatchButtonTarget) {\n      if (this.catalogVariantLimit === 1) {\n        this.autoMatchButtonTarget.style.display = 'none'\n      } else {\n        this.autoMatchButtonTarget.style.display = 'inline-flex'\n      }\n    }\n  }\n  \n  updateSkuStatus() {\n    if (!this.hasSkuMessagesTarget) return\n    \n    // Check for duplicate SKUs among selected variants\n    const selectedVariantData = Array.from(this.selectedVariants).map(id => \n      this.listingData.variants.find(v => v.id === id)\n    ).filter(Boolean)\n    \n    const skuGroups = {}\n    selectedVariantData.forEach(variant => {\n      if (variant.sku) {\n        if (!skuGroups[variant.sku]) {\n          skuGroups[variant.sku] = []\n        }\n        skuGroups[variant.sku].push(variant)\n      }\n    })\n    \n    const duplicateSkus = Object.entries(skuGroups).filter(([sku, variants]) => variants.length > 1)\n    \n    if (duplicateSkus.length > 0) {\n      const duplicateCount = duplicateSkus.reduce((sum, [sku, variants]) => sum + variants.length, 0)\n      this.skuMessagesTarget.innerHTML = `\n        <div class=\"text-sm text-amber-600\">\n          <svg class=\"inline w-4 h-4 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n            <path fill-rule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clip-rule=\"evenodd\"/>\n          </svg>\n          <strong>Warning:</strong> ${duplicateCount} variants have duplicate SKUs. Each variant will be assigned a unique SKU during import.\n        </div>\n        <div class=\"mt-2 text-xs text-gray-600\">\n          Duplicate SKUs found: ${duplicateSkus.map(([sku]) => `<span class=\"font-mono\">${sku}</span>`).join(', ')}\n        </div>\n      `\n    } else if (selectedVariantData.length > 0) {\n      const skuCount = selectedVariantData.filter(v => v.sku).length\n      const noSkuCount = selectedVariantData.length - skuCount\n      \n      if (noSkuCount > 0) {\n        this.skuMessagesTarget.innerHTML = `\n          <p class=\"text-sm text-gray-600\">\n            <svg class=\"inline w-4 h-4 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n              <path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clip-rule=\"evenodd\"/>\n            </svg>\n            ${noSkuCount} variant${noSkuCount > 1 ? 's' : ''} without SKU will be assigned new SKUs\n          </p>\n        `\n      } else {\n        this.skuMessagesTarget.innerHTML = `\n          <p class=\"text-sm text-green-600\">\n            <svg class=\"inline w-4 h-4 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n              <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/>\n            </svg>\n            All selected variants have unique SKUs\n          </p>\n        `\n      }\n    } else {\n      this.skuMessagesTarget.innerHTML = '<p class=\"text-sm text-gray-500\">Select variants to check SKU validity</p>'\n    }\n  }\n\n  updateImportButton() {\n    if (this.hasImportButtonTarget) {\n      // Enable button only if we have at least one fully mapped variant\n      const hasMappings = Object.keys(this.variantMappings).length > 0\n      this.importButtonTarget.disabled = !hasMappings\n    }\n  }\n\n  updateImportMappingsField() {\n    if (this.hasImportMappingsFieldTarget) {\n      const data = {\n        catalog_item_id: this.catalogSelectTarget.value,\n        mappings: this.variantMappings,\n        custom_skus: this.customSkus\n      }\n      this.importMappingsFieldTarget.value = JSON.stringify(data)\n    }\n  }\n\n  checkDuplicateSku(sku) {\n    if (!sku) return false\n    \n    // Check for duplicates within the current listing's variants\n    if (!this.listingData?.variants) return false\n    \n    const skuCount = this.listingData.variants.filter(v => v.sku === sku).length\n    return skuCount > 1\n  }\n\n  generateSuggestedSku(variant) {\n    // Generate a suggested SKU based on variant properties\n    const baseSkuValue = this.hasBaseSkuInputTarget ? this.baseSkuInputTarget.value.trim() : ''\n    const prefix = baseSkuValue || 'PODP'\n    const timestamp = Date.now().toString().slice(-6)\n    const variantSuffix = variant.display_name ? \n      variant.display_name.replace(/[^A-Z0-9]/gi, '').toUpperCase().slice(0, 4) : \n      'VAR'\n    \n    return `${prefix}-${timestamp}-${variantSuffix}`\n  }\n  \n  handleBaseSkuChange(event) {\n    // Optional: Update all existing custom SKUs when base SKU changes\n    // For now, just store the value for future generation\n  }\n  \n  async autoMatchAll(event) {\n    if (!this.listingData || !this.catalogItemData) {\n      this.showError(\"Please load listing and select catalog first\")\n      return\n    }\n    \n    // Add loading state\n    this.setLoadingState(true, this.autoMatchButtonTarget)\n    this.autoMatchButtonTarget.dataset.loadingText = \"Matching variants...\"\n    \n    try {\n      // Call the LLM auto-match endpoint\n      const response = await fetch('/products/etsy_imports/auto_match', {\n        method: 'POST',\n        headers: {\n          'X-CSRF-Token': this.csrfToken,\n          'Content-Type': 'application/json',\n          'Accept': 'application/json'\n        },\n        body: JSON.stringify({\n          listing_id: this.listingData.listing_id,\n          catalog_item_id: this.catalogItemData.id\n        })\n      })\n      \n      if (!response.ok) {\n        const errorData = await response.json().catch(() => null)\n        throw new Error(errorData?.error || 'Failed to generate matches')\n      }\n      \n      const data = await response.json()\n      \n      // Log which service was used\n      console.log(`Auto-match service used: ${data.service_used}`)\n      console.log(`Message: ${data.message}`)\n      \n      // Update mapping suggestions with LLM results\n      this.mappingSuggestions = data.suggestions || {}\n      \n      // Only select variants that have valid mapping suggestions\n      this.listingData.variants.forEach(variant => {\n        // Only add if there's a non-null mapping suggestion\n        if (this.mappingSuggestions[variant.id] && !this.selectedVariants.has(variant.id)) {\n          // Check limit\n          if (this.selectedVariants.size < this.catalogVariantLimit) {\n            this.addSelectedVariant(variant.id)\n          }\n        }\n      })\n      \n      // Refresh the variant cards to show all selected variants with auto-matching\n      this.refreshVariantCards()\n      this.updateSelectionCounter()\n      this.updateImportButton()\n      \n      // Show success message based on service used\n      const matchedCount = Object.keys(this.mappingSuggestions).filter(id => \n        this.selectedVariants.has(id) && this.mappingSuggestions[id]\n      ).length\n      \n      if (data.service_used === 'fallback') {\n        this.showWarning(`${data.message}. Matched ${matchedCount} variant${matchedCount > 1 ? 's' : ''}.`)\n      } else if (matchedCount > 0) {\n        this.showSuccess(`Auto-matched ${matchedCount} variant${matchedCount > 1 ? 's' : ''} using AI`)\n      } else {\n        this.showInfo(\"No variants could be auto-matched. Please map them manually.\")\n      }\n    } catch (error) {\n      console.error('Auto-match error:', error)\n      this.showError(error.message || 'Failed to auto-match variants')\n    } finally {\n      // Remove loading state\n      this.setLoadingState(false, this.autoMatchButtonTarget)\n    }\n  }\n  \n  generateAllPodpSkus(event) {\n    // Generate PODP-style SKUs for all selected variants\n    const baseSkuValue = this.hasBaseSkuInputTarget ? this.baseSkuInputTarget.value.trim() : ''\n    const prefix = baseSkuValue ? `${baseSkuValue}-` : 'PODP-'\n    // Calculate remaining length to fill 32 char Etsy limit (minimum 6 for uniqueness)\n    const remainingLength = Math.max(32 - prefix.length, 6)\n\n    // Update custom SKUs for all selected variants\n    this.selectedVariants.forEach(variantId => {\n      const randomSuffix = this.generateRandomString(remainingLength)\n      this.customSkus[variantId] = `${prefix}${randomSuffix}`\n      \n      // Update the input field if it exists\n      const input = this.selectedVariantsTarget.querySelector(`input[data-etsy-variant-id=\"${variantId}\"]`)\n      if (input) {\n        input.value = this.customSkus[variantId]\n        this.flashField(input)\n      }\n    })\n    \n    this.updateImportMappingsField()\n    this.showSuccess('Generated PODP SKUs for all selected variants')\n  }\n  \n  generateAllCatalogSkus(event) {\n    // Generate SKUs based on catalog variant SKUs\n    const baseSkuValue = this.hasBaseSkuInputTarget ? this.baseSkuInputTarget.value.trim() : ''\n    \n    // For each selected variant, generate SKU based on its mapped catalog variant\n    this.selectedVariants.forEach(variantId => {\n      const catalogVariantId = this.variantMappings[variantId]\n      if (!catalogVariantId) return\n      \n      const catalogVariant = this.catalogVariants.find(cv => cv.id == catalogVariantId)\n      if (!catalogVariant) return\n      \n      const sku = baseSkuValue ? `${baseSkuValue}-${catalogVariant.sku}` : catalogVariant.sku\n      this.customSkus[variantId] = sku\n      \n      // Update the input field if it exists\n      const input = this.selectedVariantsTarget.querySelector(`input[data-etsy-variant-id=\"${variantId}\"]`)\n      if (input) {\n        input.value = sku\n        this.flashField(input)\n      }\n    })\n    \n    this.updateImportMappingsField()\n    this.showSuccess('Generated catalog-based SKUs for all mapped variants')\n  }\n  \n  generateRandomString(length) {\n    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'\n    let result = ''\n    for (let i = 0; i < length; i++) {\n      result += chars.charAt(Math.floor(Math.random() * chars.length))\n    }\n    return result\n  }\n  \n  flashField(field) {\n    // Add a brief visual highlight to show the field was updated\n    field.classList.add('bg-green-100', 'border-green-400')\n    setTimeout(() => {\n      field.classList.remove('bg-green-100', 'border-green-400')\n    }, 1000)\n  }\n  \n\n  submitForm(event) {\n    // Validate before submission\n    if (this.selectedVariants.size === 0) {\n      event.preventDefault()\n      this.showError(\"Please select at least one variant to import.\")\n      return false\n    }\n    \n    const mappedCount = Object.keys(this.variantMappings).length\n    if (mappedCount === 0) {\n      event.preventDefault()\n      this.showError(\"Please map all selected variants to catalog variants before importing.\")\n      return false\n    }\n    \n    // Update hidden field with final data\n    this.updateImportMappingsField()\n  }\n\n  // Utility methods\n  showError(message) {\n    this.showMessage(message, 'error')\n  }\n  \n  showSuccess(message) {\n    this.showMessage(message, 'success')\n  }\n  \n  showInfo(message) {\n    this.showMessage(message, 'info')\n  }\n  \n  showWarning(message) {\n    this.showMessage(message, 'warning')\n  }\n  \n  showMessage(message, type = 'error') {\n    if (this.hasErrorContainerTarget && this.hasErrorMessageTarget) {\n      this.errorMessageTarget.textContent = message\n      \n      // Update container classes based on type\n      this.errorContainerTarget.classList.remove('hidden', 'bg-red-50', 'bg-green-50', 'bg-blue-50', 'bg-yellow-50', 'border-red-400', 'border-green-400', 'border-blue-400', 'border-yellow-400')\n      \n      if (type === 'success') {\n        this.errorContainerTarget.classList.add('bg-green-50', 'border-green-400')\n      } else if (type === 'info') {\n        this.errorContainerTarget.classList.add('bg-blue-50', 'border-blue-400')\n      } else if (type === 'warning') {\n        this.errorContainerTarget.classList.add('bg-yellow-50', 'border-yellow-400')\n      } else {\n        this.errorContainerTarget.classList.add('bg-red-50', 'border-red-400')\n      }\n      \n      // Scroll to message\n      this.errorContainerTarget.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\n      \n      // Auto-hide after 5 seconds\n      setTimeout(() => {\n        this.errorContainerTarget.classList.add('hidden')\n      }, 5000)\n    }\n  }\n\n  get csrfToken() {\n    const token = document.querySelector(\"[name='csrf-token']\")?.content\n    return token || null\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\n    \"syncButton\", \"syncButtonText\", \"syncSpinner\",\n    \"progressPanel\", \"progressBarFill\", \"progressPercent\",\n    \"progressStatus\", \"progressCurrentListing\",\n    \"progressComplete\", \"progressSummary\"\n  ]\n\n  static values = {\n    syncUrl: String,\n    statusUrl: String\n  }\n\n  syncId = null\n  pollInterval = null\n\n  disconnect() {\n    this.stopPolling()\n  }\n\n  async startSync() {\n    this.syncButtonTarget.disabled = true\n    this.syncButtonTextTarget.textContent = \"Starting...\"\n    this.syncSpinnerTarget.classList.remove(\"hidden\")\n\n    try {\n      const response = await fetch(this.syncUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"X-CSRF-Token\": document.querySelector('[name=\"csrf-token\"]').content,\n          \"Accept\": \"application/json\"\n        }\n      })\n\n      const data = await response.json()\n\n      if (response.ok && data.sync_id) {\n        this.syncId = data.sync_id\n        this.progressPanelTarget.classList.remove(\"hidden\")\n        this.progressCompleteTarget.classList.add(\"hidden\")\n        this.progressBarFillTarget.style.width = \"0%\"\n        this.progressBarFillTarget.className = \"h-full rounded-full bg-brand-500 transition-all duration-300\"\n        this.startPolling()\n      } else {\n        this.resetButton()\n        alert(data.error || \"Failed to start sync\")\n      }\n    } catch (error) {\n      this.resetButton()\n      alert(`Sync failed: ${error.message}`)\n    }\n  }\n\n  startPolling() {\n    this.pollStatus()\n    this.pollInterval = setInterval(() => this.pollStatus(), 2000)\n  }\n\n  stopPolling() {\n    if (this.pollInterval) {\n      clearInterval(this.pollInterval)\n      this.pollInterval = null\n    }\n  }\n\n  async pollStatus() {\n    if (!this.syncId) return\n\n    try {\n      const url = `${this.statusUrlValue}?sync_id=${this.syncId}`\n      const response = await fetch(url, {\n        headers: { \"Accept\": \"application/json\" }\n      })\n\n      if (!response.ok) return\n\n      const data = await response.json()\n      this.updateProgressUI(data)\n\n      if (data.status === \"completed\" || data.status === \"failed\") {\n        this.stopPolling()\n        this.showCompletion(data)\n      }\n    } catch {\n      // Silently retry on next interval\n    }\n  }\n\n  updateProgressUI(data) {\n    const total = data.total || 1\n    const processed = data.processed || 0\n    const percent = total > 0 ? Math.round((processed / total) * 100) : 0\n\n    this.progressBarFillTarget.style.width = `${percent}%`\n    this.progressPercentTarget.textContent = `${percent}%`\n\n    if (data.status === \"queued\") {\n      this.progressStatusTarget.textContent = \"Starting sync...\"\n    } else {\n      this.progressStatusTarget.textContent = `${processed.toLocaleString()} of ${total.toLocaleString()} listings processed`\n    }\n\n    if (data.current_listing) {\n      this.progressCurrentListingTarget.textContent = data.current_listing\n      this.progressCurrentListingTarget.classList.remove(\"hidden\")\n    } else {\n      this.progressCurrentListingTarget.classList.add(\"hidden\")\n    }\n  }\n\n  showCompletion(data) {\n    this.progressBarFillTarget.style.width = \"100%\"\n    this.progressCurrentListingTarget.classList.add(\"hidden\")\n\n    if (data.status === \"failed\") {\n      this.progressBarFillTarget.className = \"h-full rounded-full bg-red-500 transition-all duration-300\"\n      this.progressStatusTarget.textContent = \"Sync failed\"\n      this.progressPercentTarget.textContent = \"\"\n    } else {\n      this.progressBarFillTarget.className = \"h-full rounded-full bg-green-500 transition-all duration-300\"\n      this.progressPercentTarget.textContent = \"100%\"\n\n      const parts = []\n      if (data.imported > 0) parts.push(`${data.imported} new`)\n      if (data.updated > 0) parts.push(`${data.updated} updated`)\n      if (data.removed > 0) parts.push(`${data.removed} removed`)\n\n      this.progressStatusTarget.textContent = \"Sync complete!\"\n      this.progressCompleteTarget.classList.remove(\"hidden\")\n      this.progressSummaryTarget.textContent = parts.length > 0 ? `Synced ${parts.join(\", \")}` : \"No changes found\"\n\n      setTimeout(() => window.location.reload(), 2000)\n    }\n\n    this.resetButton()\n  }\n\n  resetButton() {\n    this.syncButtonTarget.disabled = false\n    this.syncButtonTextTarget.textContent = \"Sync Listings\"\n    this.syncSpinnerTarget.classList.add(\"hidden\")\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Live product picker for the \"Map existing product\" modal on the Etsy listing\n// detail page (#955). Replaces the <select> that listed every account product \u2014\n// unusable once a shop has hundreds of products. Search-as-you-type against\n// current_account products; each result is a native submit button (name=product_id)\n// so Rails handles the actual mapping POST \u2014 the controller never submits.\n//\n// One instance per row modal. Recent products load lazily on first focus, so a\n// listing with many unmapped rows doesn't fire one fetch per row on page load.\nexport default class extends Controller {\n  static targets = [\"searchInput\", \"results\"]\n  static values  = { endpointUrl: String }\n\n  connect() {\n    this._timeout = null\n    this._loadedOnce = false\n  }\n\n  // First focus on this modal's search box -> show recent products as defaults.\n  loadRecent() {\n    if (this._loadedOnce) return\n    this._loadedOnce = true\n    this._runSearch(\"\")\n  }\n\n  search(event) {\n    const query = event.target.value.trim()\n    this._loadedOnce = true\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(() => this._runSearch(query), 200)\n  }\n\n  // The search box lives inside the map form; Enter would submit it with no\n  // product_id. Swallow Enter \u2014 selection happens by clicking a result.\n  preventSubmit(event) {\n    if (event.key === \"Enter\") event.preventDefault()\n  }\n\n  async _runSearch(query) {\n    if (query.length === 1) {\n      this._message(\"Type at least 2 characters to search\u2026\")\n      return\n    }\n\n    this._message(\"Searching\u2026\")\n    const url = `${this.endpointUrlValue}?q=${encodeURIComponent(query)}`\n\n    try {\n      const response = await fetch(url, {\n        headers: { Accept: \"application/json\", \"X-CSRF-Token\": this._csrfToken() }\n      })\n      if (!response.ok) {\n        this._message(\"Search failed. Try again.\")\n        return\n      }\n      this._renderResults(await response.json())\n    } catch {\n      this._message(\"Search failed. Try again.\")\n    }\n  }\n\n  _renderResults(data) {\n    if (!this.hasResultsTarget) return\n\n    const products  = Array.isArray(data?.products) ? data.products : []\n    const truncated = Boolean(data?.truncated)\n    const limit     = data?.limit\n\n    if (products.length === 0) {\n      this._message(\"No matching products.\")\n      return\n    }\n\n    const notice = truncated\n      ? `<div class=\"mb-2 px-3 py-2 rounded-lg text-xs bg-[rgba(255,122,24,.08)] border border-[rgba(255,122,24,.20)] text-pz-ink\">\n           Showing the first ${limit} matches \u2014 refine your search to narrow it down.\n         </div>`\n      : \"\"\n\n    this.resultsTarget.innerHTML = notice + products.map(p => `\n      <button type=\"submit\" name=\"product_id\" value=\"${p.id}\"\n              class=\"w-full text-left p-2.5 rounded-xl border border-transparent hover:bg-[rgba(59,42,143,.04)] hover:border-[rgba(59,42,143,.08)] transition-colors mb-1\">\n        <div class=\"flex items-center gap-3\">\n          ${p.photo_url\n            ? `<img src=\"${this._escape(p.photo_url)}\" class=\"w-11 h-11 rounded-lg object-cover flex-shrink-0\" />`\n            : `<div class=\"w-11 h-11 rounded-lg bg-gray-100 flex items-center justify-center flex-shrink-0\">\n                 <svg class=\"w-5 h-5 text-[var(--muted)]\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                   <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4\"/>\n                 </svg>\n               </div>`}\n          <div class=\"min-w-0 flex-1\">\n            <div class=\"font-medium text-sm truncate text-pz-ink\">${this._escape(p.title || \"\")}</div>\n            ${p.sku ? `<div class=\"text-xs font-mono text-[var(--muted)] truncate\">${this._escape(p.sku)}</div>` : \"\"}\n            <div class=\"text-xs text-[var(--muted)] truncate\">\n              ${this._escape(p.catalog_item_title || \"No catalog item\")} &middot; ${p.variant_count || 0} variants\n            </div>\n          </div>\n        </div>\n      </button>\n    `).join(\"\")\n  }\n\n  _message(text) {\n    if (!this.hasResultsTarget) return\n    this.resultsTarget.innerHTML = `<p class=\"text-sm text-[var(--muted)] text-center py-6\">${this._escape(text)}</p>`\n  }\n\n  _csrfToken() {\n    return document.querySelector(\"meta[name='csrf-token']\")?.content || \"\"\n  }\n\n  _escape(text) {\n    const div = document.createElement(\"div\")\n    div.textContent = String(text)\n    return div.innerHTML\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"feature-flag\"\nexport default class extends Controller {\n  static targets = [\"toggle\", \"status\"]\n  static values = { \n    url: String,\n    enabled: Boolean \n  }\n\n  connect() {\n    this.updateUI()\n  }\n\n  toggle(event) {\n    event.preventDefault()\n    \n    // Disable the toggle during request\n    if (this.hasToggleTarget) {\n      this.toggleTarget.disabled = true\n    }\n    \n    // Add loading state\n    this.element.classList.add(\"opacity-50\")\n    \n    fetch(this.urlValue, {\n      method: \"PATCH\",\n      headers: {\n        \"X-CSRF-Token\": this.csrfToken(),\n        \"Accept\": \"text/vnd.turbo-stream.html\",\n        \"Content-Type\": \"application/json\"\n      },\n      body: JSON.stringify({\n        feature_flag: {\n          enabled_globally: !this.enabledValue\n        }\n      })\n    })\n    .then(response => {\n      if (!response.ok) {\n        throw new Error(\"Network response was not ok\")\n      }\n      return response.text()\n    })\n    .then(html => {\n      // Turbo will handle the stream response automatically\n      Turbo.renderStreamMessage(html)\n    })\n    .catch(error => {\n      console.error(\"Error:\", error)\n      this.showError(\"Failed to toggle feature flag. Please try again.\")\n      this.resetUI()\n    })\n  }\n\n  updateUI() {\n    if (this.hasStatusTarget) {\n      if (this.enabledValue) {\n        this.statusTarget.textContent = \"Enabled\"\n        this.statusTarget.classList.remove(\"badge-error\")\n        this.statusTarget.classList.add(\"badge-success\")\n      } else {\n        this.statusTarget.textContent = \"Disabled\"\n        this.statusTarget.classList.remove(\"badge-success\")\n        this.statusTarget.classList.add(\"badge-error\")\n      }\n    }\n    \n    if (this.hasToggleTarget) {\n      this.toggleTarget.checked = this.enabledValue\n    }\n  }\n\n  resetUI() {\n    if (this.hasToggleTarget) {\n      this.toggleTarget.disabled = false\n    }\n    this.element.classList.remove(\"opacity-50\")\n  }\n\n  showError(message) {\n    // Create a flash message element\n    const flash = document.createElement(\"div\")\n    flash.className = \"pz-alert pz-alert-danger mb-4\"\n    flash.innerHTML = `\n      <svg class=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"none\"><circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M15 9l-6 6M9 9l6 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>\n      <span>${message}</span>\n    `\n    \n    // Insert at the top of the page\n    const container = document.querySelector(\".container\") || document.body\n    container.insertBefore(flash, container.firstChild)\n    \n    // Auto-remove after 5 seconds\n    setTimeout(() => flash.remove(), 5000)\n  }\n\n  csrfToken() {\n    const meta = document.querySelector('meta[name=\"csrf-token\"]')\n    return meta ? meta.content : \"\"\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// \"Show help\" toggle for the listing builder (POC). Flips every field-help popover\n// in the builder into an inline, always-visible callout by adding `help-expanded`\n// to <body> - a global class (not the controller element) so the state survives\n// turbo-frame replaces (autosave, product add/swap) and standalone frame reloads.\n// The choice persists in localStorage so it sticks across renders and visits.\n//\n// Connects to data-controller=\"field-help\"\nexport default class extends Controller {\n  static targets = [\"label\"]\n\n  connect() {\n    this.expanded = localStorage.getItem(this.key) === \"true\"\n    this.reflect()\n  }\n\n  toggle() {\n    this.expanded = !this.expanded\n    localStorage.setItem(this.key, this.expanded)\n    this.reflect()\n  }\n\n  reflect() {\n    document.body.classList.toggle(\"help-expanded\", this.expanded)\n    if (this.hasLabelTarget) this.labelTarget.textContent = this.expanded ? \"Hide help\" : \"Show help\"\n    this.element.querySelectorAll(\"[data-field-help-toggle]\").forEach(el =>\n      el.setAttribute(\"aria-pressed\", this.expanded ? \"true\" : \"false\")\n    )\n  }\n\n  get key() {\n    return \"listing-builder:help-expanded\"\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Manages the compact filter UI with dropdowns and count badges\nexport default class extends Controller {\n  static targets = [\n    \"form\",\n    \"orderNumber\",\n    // Dropdowns\n    \"accountDropdown\", \"statusDropdown\", \"jobStatusDropdown\",\n    \"productTypeDropdown\", \"orderTypeDropdown\", \"decorationTypeDropdown\", \"variantsDropdown\", \"engravedDropdown\",\n    // Count badges\n    \"accountCount\", \"statusCount\", \"jobStatusCount\",\n    \"productTypeCount\", \"orderTypeCount\", \"decorationTypeCount\", \"variantsCount\", \"engravedCount\",\n    // Search inputs\n    \"accountSearch\", \"productTypeSearch\", \"variantSearch\",\n    // Filter items\n    \"accountItem\", \"productTypeItem\", \"variantItem\", \"variantTypeSection\"\n  ]\n\n  connect() {\n    this.openDropdown = null\n    \n    // Initialize counts and active filters display\n    // Use setTimeout to ensure form elements are fully loaded\n    setTimeout(() => {\n      this.updateAllCounts()\n      this.updateActiveFiltersDisplay()\n    }, 0)\n    \n    // Close dropdowns when clicking outside\n    document.addEventListener(\"click\", this.closeDropdownsOnOutsideClick.bind(this))\n    \n    // Listen for Turbo frame updates to refresh filter display\n    document.addEventListener(\"turbo:frame-load\", this.handleTurboFrameLoad.bind(this))\n    \n    // Listen for form submission to close dropdowns\n    this.formTarget.addEventListener(\"submit\", this.handleFormSubmit.bind(this))\n  }\n\n  disconnect() {\n    document.removeEventListener(\"click\", this.closeDropdownsOnOutsideClick.bind(this))\n    document.removeEventListener(\"turbo:frame-load\", this.handleTurboFrameLoad.bind(this))\n    this.formTarget.removeEventListener(\"submit\", this.handleFormSubmit.bind(this))\n  }\n\n  toggleDropdown(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    \n    const dropdownName = event.params.dropdown\n    const dropdown = this[`${dropdownName}DropdownTarget`]\n    \n    if (this.openDropdown && this.openDropdown !== dropdown) {\n      this.openDropdown.classList.add(\"hidden\")\n    }\n    \n    dropdown.classList.toggle(\"hidden\")\n    this.openDropdown = dropdown.classList.contains(\"hidden\") ? null : dropdown\n  }\n\n  closeDropdownsOnOutsideClick(event) {\n    if (this.openDropdown && !this.element.contains(event.target)) {\n      this.openDropdown.classList.add(\"hidden\")\n      this.openDropdown = null\n    }\n  }\n\n  handleTurboFrameLoad(event) {\n    // Update filter display after Turbo frame loads\n    // Only update if it's the jobs_orders_index frame\n    if (event.target.id === 'jobs_orders_index') {\n      // Use setTimeout to ensure DOM is fully updated\n      setTimeout(() => {\n        this.updateAllCounts()\n        this.updateActiveFiltersDisplay()\n      }, 0)\n    }\n  }\n\n  handleFormSubmit(event) {\n    // Close any open dropdown when form is submitted\n    if (this.openDropdown) {\n      this.openDropdown.classList.add(\"hidden\")\n      this.openDropdown = null\n    }\n  }\n\n  updateCounts(event) {\n    this.updateAllCounts()\n    this.updateActiveFiltersDisplay()\n    \n    // Auto-submit form when checkboxes change (optional - remove if you prefer manual submit)\n    // if (event && event.target.type === 'checkbox') {\n    //   this.formTarget.requestSubmit()\n    // }\n  }\n\n  updateAllCounts() {\n    // Account count\n    if (this.hasAccountCountTarget) {\n      const count = this.formTarget.querySelectorAll('input[name=\"account_ids[]\"]:checked').length\n      this.updateCountBadge(this.accountCountTarget, count)\n    }\n\n    // Status count\n    if (this.hasStatusCountTarget) {\n      const statusCount = this.formTarget.querySelectorAll('input[name=\"statuses[]\"]:checked').length\n      const ignoredChecked = this.formTarget.querySelector('input[name=\"ignored\"]:checked') ? 1 : 0\n      const count = statusCount + ignoredChecked\n      this.updateCountBadge(this.statusCountTarget, count)\n    }\n\n    // Job Status count\n    if (this.hasJobStatusCountTarget) {\n      const count = this.formTarget.querySelectorAll('input[name=\"job_statuses[]\"]:checked').length\n      this.updateCountBadge(this.jobStatusCountTarget, count)\n    }\n\n    // Product Type count\n    if (this.hasProductTypeCountTarget) {\n      const count = this.formTarget.querySelectorAll('input[name=\"catalog_item_ids[]\"]:checked').length\n      this.updateCountBadge(this.productTypeCountTarget, count)\n    }\n\n    // Order Type count\n    if (this.hasOrderTypeCountTarget) {\n      const count = this.formTarget.querySelectorAll('input[name=\"order_types[]\"]:checked').length\n      this.updateCountBadge(this.orderTypeCountTarget, count)\n    }\n\n    // Decoration Type count\n    if (this.hasDecorationTypeCountTarget) {\n      const count = this.formTarget.querySelectorAll('input[name=\"decoration_method_ids[]\"]:checked').length\n      this.updateCountBadge(this.decorationTypeCountTarget, count)\n    }\n\n    // Variants count\n    if (this.hasVariantsCountTarget) {\n      const count = this.formTarget.querySelectorAll('input[name=\"variant_option_ids[]\"]:checked').length\n      this.updateCountBadge(this.variantsCountTarget, count)\n    }\n\n    // Engraved count\n    if (this.hasEngravedCountTarget) {\n      const count = this.formTarget.querySelector('input[name=\"engraved\"]:checked') ? 1 : 0\n      this.updateCountBadge(this.engravedCountTarget, count)\n    }\n  }\n\n  updateCountBadge(badge, count) {\n    if (count > 0) {\n      badge.textContent = count\n      badge.classList.remove(\"hidden\")\n    } else {\n      badge.classList.add(\"hidden\")\n    }\n  }\n\n  filterAccounts(event) {\n    const searchTerm = event.target.value.toLowerCase()\n    \n    this.accountItemTargets.forEach(item => {\n      const label = item.querySelector('label').textContent.toLowerCase()\n      if (label.includes(searchTerm)) {\n        item.style.display = ''\n      } else {\n        item.style.display = 'none'\n      }\n    })\n  }\n\n  filterProductTypes(event) {\n    const searchTerm = event.target.value.toLowerCase()\n    \n    this.productTypeItemTargets.forEach(item => {\n      const label = item.querySelector('label').textContent.toLowerCase()\n      if (label.includes(searchTerm)) {\n        item.style.display = ''\n      } else {\n        item.style.display = 'none'\n      }\n    })\n  }\n\n  selectAllProductTypes(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    \n    // Only select visible items\n    this.productTypeItemTargets.forEach(item => {\n      if (item.style.display !== 'none') {\n        const checkbox = item.querySelector('input[type=\"checkbox\"]')\n        if (checkbox && !checkbox.checked) {\n          checkbox.checked = true\n        }\n      }\n    })\n    \n    this.updateCounts()\n  }\n\n  deselectAllProductTypes(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    \n    // Only deselect visible items\n    this.productTypeItemTargets.forEach(item => {\n      if (item.style.display !== 'none') {\n        const checkbox = item.querySelector('input[type=\"checkbox\"]')\n        if (checkbox && checkbox.checked) {\n          checkbox.checked = false\n        }\n      }\n    })\n    \n    this.updateCounts()\n  }\n\n  filterVariants(event) {\n    const searchTerm = event.target.value.toLowerCase()\n    \n    this.variantTypeSectionTargets.forEach(section => {\n      let hasVisibleItems = false\n      const items = section.querySelectorAll('[data-filter-manager-target=\"variantItem\"]')\n      \n      items.forEach(item => {\n        const label = item.querySelector('label').textContent.toLowerCase()\n        if (label.includes(searchTerm)) {\n          item.style.display = ''\n          hasVisibleItems = true\n        } else {\n          item.style.display = 'none'\n        }\n      })\n      \n      // Hide section if no items are visible\n      section.style.display = hasVisibleItems ? '' : 'none'\n    })\n  }\n\n  updateActiveFiltersDisplay() {\n    const tagsContainer = document.getElementById('active-filter-tags')\n    \n    if (!tagsContainer) {\n      console.warn('Active filter tags container not found')\n      return\n    }\n    \n    tagsContainer.innerHTML = ''\n    \n    // Check order number\n    if (this.hasOrderNumberTarget && this.orderNumberTarget.value) {\n      this.addFilterTag(tagsContainer, `Order #${this.orderNumberTarget.value}`, () => {\n        this.orderNumberTarget.value = ''\n        this.formTarget.requestSubmit()\n      })\n    }\n    \n    // Check accounts\n    const selectedAccounts = this.formTarget.querySelectorAll('input[name=\"account_ids[]\"]:checked')\n    selectedAccounts.forEach(checkbox => {\n      const label = checkbox.parentElement.parentElement.parentElement.querySelector('label').textContent.trim()\n      this.addFilterTag(tagsContainer, label, () => {\n        checkbox.checked = false\n        this.updateCounts()\n        this.formTarget.requestSubmit()\n      })\n    })\n    \n    // Check statuses\n    const selectedStatuses = this.formTarget.querySelectorAll('input[name=\"statuses[]\"]:checked')\n    selectedStatuses.forEach(checkbox => {\n      const label = checkbox.parentElement.parentElement.parentElement.querySelector('label').textContent.trim()\n      this.addFilterTag(tagsContainer, `Status: ${label}`, () => {\n        checkbox.checked = false\n        this.updateCounts()\n        this.formTarget.requestSubmit()\n      })\n    })\n    \n    // Check ignored\n    const ignoredCheckbox = this.formTarget.querySelector('input[name=\"ignored\"]:checked')\n    if (ignoredCheckbox) {\n      this.addFilterTag(tagsContainer, 'Ignored', () => {\n        ignoredCheckbox.checked = false\n        this.updateCounts()\n        this.formTarget.requestSubmit()\n      })\n    }\n    \n    // Check job statuses\n    const selectedJobStatuses = this.formTarget.querySelectorAll('input[name=\"job_statuses[]\"]:checked')\n    selectedJobStatuses.forEach(checkbox => {\n      const label = checkbox.parentElement.parentElement.parentElement.querySelector('label').textContent.trim()\n      this.addFilterTag(tagsContainer, `Production: ${label}`, () => {\n        checkbox.checked = false\n        this.updateCounts()\n        this.formTarget.requestSubmit()\n      })\n    })\n    \n    // Check product types\n    const selectedProductTypes = this.formTarget.querySelectorAll('input[name=\"catalog_item_ids[]\"]:checked')\n    selectedProductTypes.forEach(checkbox => {\n      const label = checkbox.parentElement.parentElement.parentElement.querySelector('label').textContent.trim()\n      this.addFilterTag(tagsContainer, label, () => {\n        checkbox.checked = false\n        this.updateCounts()\n        this.formTarget.requestSubmit()\n      })\n    })\n    \n    // Check order types\n    const selectedOrderTypes = this.formTarget.querySelectorAll('input[name=\"order_types[]\"]:checked')\n    selectedOrderTypes.forEach(checkbox => {\n      const label = checkbox.parentElement.parentElement.parentElement.querySelector('label').textContent.trim()\n      this.addFilterTag(tagsContainer, `Type: ${label}`, () => {\n        checkbox.checked = false\n        this.updateCounts()\n        this.formTarget.requestSubmit()\n      })\n    })\n    \n    // Check decoration methods\n    const selectedDecorationMethods = this.formTarget.querySelectorAll('input[name=\"decoration_method_ids[]\"]:checked')\n    selectedDecorationMethods.forEach(checkbox => {\n      const label = checkbox.parentElement.parentElement.parentElement.querySelector('label').textContent.trim()\n      this.addFilterTag(tagsContainer, `Decoration: ${label}`, () => {\n        checkbox.checked = false\n        this.updateCounts()\n        this.formTarget.requestSubmit()\n      })\n    })\n\n    // Check variants\n    const selectedVariants = this.formTarget.querySelectorAll('input[name=\"variant_option_ids[]\"]:checked')\n    selectedVariants.forEach(checkbox => {\n      const label = checkbox.parentElement.parentElement.parentElement.querySelector('label').textContent.trim()\n      this.addFilterTag(tagsContainer, label, () => {\n        checkbox.checked = false\n        this.updateCounts()\n        this.formTarget.requestSubmit()\n      })\n    })\n    \n    // Check variant SKU\n    if (this.hasVariantSearchTarget && this.variantSearchTarget.value) {\n      this.addFilterTag(tagsContainer, `SKU: ${this.variantSearchTarget.value}`, () => {\n        this.variantSearchTarget.value = ''\n        this.formTarget.requestSubmit()\n      })\n    }\n    \n    // Check engraved\n    const engravedCheckbox = this.formTarget.querySelector('input[name=\"engraved\"]:checked')\n    if (engravedCheckbox) {\n      this.addFilterTag(tagsContainer, 'Engraved', () => {\n        engravedCheckbox.checked = false\n        this.updateCounts()\n        this.formTarget.requestSubmit()\n      })\n    }\n  }\n\n  addFilterTag(container, text, removeCallback) {\n    const span = document.createElement('span')\n    span.className = 'm-0.5 inline-flex items-center rounded-full border border-gray-200 bg-white py-1 pl-2 pr-1.5 text-xs font-medium text-gray-900'\n    \n    const textSpan = document.createElement('span')\n    textSpan.textContent = text\n    \n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = 'ml-1 inline-flex size-3.5 shrink-0 rounded-full p-0.5 text-gray-400 hover:bg-gray-200 hover:text-gray-500'\n    button.innerHTML = `\n      <span class=\"sr-only\">Remove filter for ${text}</span>\n      <svg viewBox=\"0 0 8 8\" fill=\"none\" stroke=\"currentColor\" class=\"size-2\">\n        <path d=\"M1 1l6 6m0-6L1 7\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n      </svg>\n    `\n    button.addEventListener('click', removeCallback)\n    \n    span.appendChild(textSpan)\n    span.appendChild(button)\n    container.appendChild(span)\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  connect() {\n    setTimeout(() => {\n      let element = document.getElementById(\"flash\")\n      element.classList.add(\"hidden\")\n    }, 5000)\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  submit(event) {\n    // Prevent default form submission if it's a select change\n    if (event.type === \"change\") {\n      event.preventDefault()\n      this.element.requestSubmit()\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"catalogItemId\", \"slotSection\", \"buyerSelectsCheckbox\", \"fixedVariantWrapper\", \"fixedVariantSelect\"]\n\n  // Slots, slot labels, and per-slot allowed catalog items are all rendered\n  // server-side from the chosen template. Switching template means the whole\n  // slot section needs to be re-rendered, so navigate with template_id in the\n  // query string and let the controller pick the right template.\n  templateChanged(event) {\n    const templateId = event.target.value\n    if (!templateId) return\n\n    const url = new URL(window.location.href)\n    url.searchParams.set(\"template_id\", templateId)\n    window.location.assign(url.toString())\n  }\n\n  // When a product is selected for a slot, populate the fixed variant dropdown\n  // with that product's variants from the hidden input's data-variants attribute.\n  // Triggered by the picker controller via dispatchEvent('change') after writing\n  // the new product_id and variants payload onto the hidden input.\n  productChanged(event) {\n    const input = event.target\n    const slotId = input.dataset.slotId\n    const variantSelect = this.findFixedVariantSelect(slotId)\n\n    if (!variantSelect) return\n\n    variantSelect.innerHTML = '<option value=\"\">Select a variant...</option>'\n\n    if (!input.value) return\n\n    try {\n      const variants = JSON.parse(input.dataset.variants || \"[]\")\n      variants.forEach(variant => {\n        const option = document.createElement(\"option\")\n        option.value = variant.id\n        option.textContent = variant.label || variant.sku\n        variantSelect.appendChild(option)\n      })\n    } catch {\n      // Silently handle parse errors \u2014 the select stays empty\n    }\n  }\n\n  // Toggle visibility of the fixed variant dropdown based on the checkbox state.\n  toggleVariantSelect(event) {\n    const checkbox = event.target\n    const slotId = checkbox.dataset.slotId\n    const wrapper = this.findFixedVariantWrapper(slotId)\n\n    if (!wrapper) return\n\n    if (checkbox.checked) {\n      wrapper.classList.add(\"hidden\")\n    } else {\n      wrapper.classList.remove(\"hidden\")\n    }\n  }\n\n  // --- Helpers ---\n\n  findFixedVariantSelect(slotId) {\n    return this.fixedVariantSelectTargets.find(el => el.dataset.slotId === slotId)\n  }\n\n  findFixedVariantWrapper(slotId) {\n    return this.fixedVariantWrapperTargets.find(el => el.dataset.slotId === slotId)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { escapeHtml } from \"./helpers/escape\"\n\nexport default class extends Controller {\n  static targets = [\n    \"input\", \"status\", \"log\",\n    \"orderCard\", \"orderNumber\", \"orderBuyer\", \"orderAccount\", \"orderShipBy\",\n    \"itemList\"\n  ]\n  static values = { scanUrl: String, clearOrderUrl: String }\n\n  connect() {\n    this.inputTarget.focus()\n  }\n\n  async scan(event) {\n    event.preventDefault()\n    const qrData = this.inputTarget.value.trim()\n    if (!qrData) return\n\n    this.inputTarget.value = \"\"\n    this.showStatus(\"Scanning...\", \"info\")\n\n    try {\n      const response = await fetch(this.scanUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this.csrfToken\n        },\n        body: JSON.stringify({ qr_data: qrData })\n      })\n\n      const data = await response.json()\n\n      if (!data.success) {\n        this.showStatus(data.error, \"error\")\n        this.addLogEntry({ error: data.error }, false)\n        this.playSound(false)\n        this.inputTarget.focus()\n        return\n      }\n\n      this.loadOrder(data.order, data.items)\n      this.showStatus(`Loaded order ${data.order.number} \u2014 ${data.items.length} items`, \"success\")\n      this.addLogEntry({ orderNumber: data.order.number, count: data.items.length }, true)\n      this.playSound(true)\n    } catch (error) {\n      this.showStatus(`Network error: ${error.message}`, \"error\")\n      this.playSound(false)\n    }\n\n    this.inputTarget.focus()\n  }\n\n  async clearOrder() {\n    try {\n      await fetch(this.clearOrderUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this.csrfToken\n        }\n      })\n    } catch (error) {\n      // Fire-and-forget; client-side wipe still happens.\n    }\n\n    this.orderCardTarget.classList.add(\"hidden\")\n    this.itemListTarget.innerHTML = \"\"\n    this.showStatus(\"Order cleared. Scan a workorder QR to load a new order.\", \"info\")\n    this.inputTarget.focus()\n  }\n\n  loadOrder(order, items) {\n    this.orderNumberTarget.textContent = `#${order.number}`\n    this.orderBuyerTarget.textContent = order.buyer ? `\u2014 ${order.buyer}` : \"\"\n    this.orderAccountTarget.textContent = order.account || \"\"\n    this.orderShipByTarget.textContent = order.ship_by_date ? `Ship by ${order.ship_by_date}` : \"\"\n\n    this.itemListTarget.innerHTML = this.groupsHtml(items)\n    this.orderCardTarget.classList.remove(\"hidden\")\n  }\n\n  // Group items into:\n  //   - one section per gift box parent (parent header + its children)\n  //   - one trailing \"Other items\" section for any non-gift-box items\n  groupsHtml(items) {\n    const parents = items.filter((i) => i.gift_box_parent)\n    const childrenByParent = new Map()\n    const others = []\n\n    items.forEach((item) => {\n      if (item.gift_box_parent) return\n      if (item.parent_item_id) {\n        const bucket = childrenByParent.get(item.parent_item_id) || []\n        bucket.push(item)\n        childrenByParent.set(item.parent_item_id, bucket)\n      } else {\n        others.push(item)\n      }\n    })\n\n    const sections = []\n\n    parents.forEach((parent) => {\n      const kids = childrenByParent.get(parent.id) || []\n      // Components first, gift card last for a natural visual order.\n      kids.sort((a, b) => Number(a.gift_card) - Number(b.gift_card))\n      sections.push(this.giftBoxSectionHtml(parent, kids))\n    })\n\n    if (others.length) {\n      sections.push(this.otherItemsSectionHtml(others))\n    }\n\n    return sections.join(\"\")\n  }\n\n  giftBoxSectionHtml(parent, kids) {\n    // Post-#682: the gift card print file lives on the gift box parent, not on\n    // a separate child row. Show the Print Gift Card action on the section\n    // header so the packer can grab the card design alongside the components.\n    const giftCardAction = this.giftCardActionHtml(parent)\n    const giftCardThumb = parent.gift_card_thumb_url\n      ? `<img src=\"${parent.gift_card_thumb_url}\" alt=\"Gift card print file\" class=\"w-48 h-48 object-contain rounded-xl bg-white border border-[rgba(59,42,143,.10)]\" />`\n      : \"\"\n\n    return `\n      <section>\n        <header class=\"flex items-start gap-3 mb-3 pb-2 border-b border-[rgba(59,42,143,.10)]\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" class=\"w-5 h-5 text-pz-purple mt-1\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 11.25v8.25a1.5 1.5 0 0 1-1.5 1.5H5.25a1.5 1.5 0 0 1-1.5-1.5v-8.25M12 4.875A2.625 2.625 0 1 0 9.375 7.5H12m0-2.625V7.5m0-2.625A2.625 2.625 0 1 1 14.625 7.5H12m0 0V21m-8.625-9.75h18c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125h-18c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z\" />\n          </svg>\n          <div class=\"flex-1 min-w-0 flex items-center gap-3\">\n            <h3 class=\"font-heading font-bold text-base text-pz-ink tracking-tight\">Gift Box \u2014 ${escapeHtml(parent.name)}</h3>\n            <span class=\"text-sm text-pz-ink/50\">\u00D7 ${parent.quantity}</span>\n          </div>\n          ${giftCardThumb}\n          ${giftCardAction ? `<div>${giftCardAction}</div>` : \"\"}\n        </header>\n        <div class=\"space-y-3\">\n          ${kids.map((k) => this.rowHtml(k)).join(\"\")}\n        </div>\n      </section>\n    `\n  }\n\n  otherItemsSectionHtml(items) {\n    return `\n      <section>\n        <header class=\"flex items-center gap-3 mb-3 pb-2 border-b border-[rgba(59,42,143,.10)]\">\n          <h3 class=\"font-heading font-bold text-base text-pz-ink tracking-tight\">Other items in this order</h3>\n        </header>\n        <div class=\"space-y-3\">\n          ${items.map((i) => this.rowHtml(i)).join(\"\")}\n        </div>\n      </section>\n    `\n  }\n\n  rowHtml(item) {\n    const thumb = item.print_file_url\n      ? `<img src=\"${item.print_file_url}\" alt=\"\" class=\"w-48 h-48 object-contain rounded-xl bg-white border border-[rgba(59,42,143,.10)]\" />`\n      : `<div class=\"w-48 h-48 rounded-xl bg-pz-ink/5 border-2 border-dashed border-pz-ink/15 flex items-center justify-center text-sm text-pz-ink/40 text-center px-2\">no print file</div>`\n\n    const chips = []\n    if (item.internal_sku) {\n      chips.push(`<span class=\"inline-flex items-center px-2 py-1 rounded-full bg-pz-ink/5 font-mono text-xs text-pz-ink/70\">${escapeHtml(item.internal_sku)}</span>`)\n    }\n    if (item.decoration_method) {\n      chips.push(`<span class=\"inline-flex items-center px-2 py-1 rounded-full bg-pz-info/10 text-xs font-semibold text-pz-info\">${escapeHtml(item.decoration_method)}</span>`)\n    }\n    chips.push(`<span class=\"inline-flex items-center px-2 py-1 rounded-full bg-pz-ink/5 text-xs text-pz-ink/70\">Qty: <span class=\"font-bold ml-1 text-pz-ink\">${item.quantity}</span></span>`)\n    if (item.sku) {\n      chips.push(`<span class=\"inline-flex items-center px-2 py-1 rounded-full bg-pz-ink/5 font-mono text-xs text-pz-ink/70\">SKU: ${escapeHtml(item.sku)}</span>`)\n    }\n\n    const variantBlock = item.variant_summary\n      ? `\n        <div class=\"mt-3\">\n          <div class=\"text-[10px] uppercase tracking-wider font-semibold text-pz-ink/50 mb-0.5\">Options</div>\n          <div class=\"text-sm text-pz-ink\">${escapeHtml(item.variant_summary)}</div>\n        </div>\n      `\n      : \"\"\n\n    const personalizationBlock = item.personalization_text\n      ? `\n        <div class=\"mt-3 px-3 py-2 rounded-lg bg-pz-orange/8 border border-pz-orange/25\">\n          <div class=\"text-[10px] uppercase tracking-wider font-semibold text-pz-orange mb-0.5\">Personalization</div>\n          <div class=\"text-sm text-pz-ink whitespace-pre-wrap\">${escapeHtml(item.personalization_text)}</div>\n        </div>\n      `\n      : \"\"\n\n    const engravedLidBlock = item.engraved_lid\n      ? `\n        <div class=\"mt-3 px-3 py-2 rounded-lg bg-pink-100 border-2 border-pink-400\">\n          <div class=\"flex items-center gap-1.5 mb-0.5\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"w-4 h-4 text-pink-700\">\n              <path d=\"M21.731 2.269a2.625 2.625 0 0 0-3.712 0l-1.157 1.157 3.712 3.712 1.157-1.157a2.625 2.625 0 0 0 0-3.712ZM19.513 8.199l-3.712-3.712-12.15 12.15a5.25 5.25 0 0 0-1.32 2.214l-.8 2.685a.75.75 0 0 0 .933.933l2.685-.8a5.25 5.25 0 0 0 2.214-1.32L19.513 8.2Z\" />\n            </svg>\n            <span class=\"text-[10px] uppercase tracking-wider font-bold text-pink-700\">Engraved Lid</span>\n          </div>\n          <div class=\"text-sm font-medium text-pink-900 whitespace-pre-wrap\">${escapeHtml(item.engraved_lid_text || \"(no text provided)\")}</div>\n        </div>\n      `\n      : \"\"\n\n    // Legacy: pre-#682 gift cards rendered as a child row with the print button\n    // alongside. Post-#682 the button is on the section header instead, so this\n    // is only used for any remaining gift card child OrderItems that pre-date\n    // the backfill (none after a successful gift_boxes:backfill_card_collapse).\n    const trailing = item.gift_card ? this.giftCardActionHtml(item) : \"\"\n\n    return `\n      <div class=\"bg-white rounded-2xl border border-[rgba(59,42,143,.10)] shadow-sm overflow-hidden\" data-item-id=\"${item.id}\">\n        <div class=\"flex items-start gap-5 p-4\">\n          <div class=\"flex-shrink-0\">${thumb}</div>\n          <div class=\"flex-1 min-w-0\">\n            <p class=\"font-heading text-lg font-bold text-pz-ink leading-snug\">${escapeHtml(item.catalog_item_title || item.name || \"Item\")}</p>\n            <p class=\"text-sm text-pz-ink/55 mt-0.5 line-clamp-2\" title=\"${escapeHtml(item.name || \"\")}\">${escapeHtml(item.name || \"\")}</p>\n            <div class=\"mt-2 flex flex-wrap items-center gap-1.5\">\n              ${chips.join(\"\")}\n            </div>\n            ${variantBlock}\n            ${personalizationBlock}\n            ${engravedLidBlock}\n          </div>\n          ${trailing ? `<div class=\"flex-shrink-0 self-center\">${trailing}</div>` : \"\"}\n        </div>\n      </div>\n    `\n  }\n\n  giftCardActionHtml(item) {\n    if (item.gift_card_missing) {\n      return `\n        <div class=\"flex flex-col items-end gap-1.5\">\n          <button type=\"button\" disabled class=\"btn-brand-secondary btn-brand-lg opacity-50 cursor-not-allowed\">Print Gift Card</button>\n          <span class=\"text-xs text-pz-danger font-medium\">Print file missing</span>\n          <span class=\"text-[10px] text-pz-ink/50\">Ask seller to upload</span>\n        </div>\n      `\n    }\n\n    return `\n      <a href=\"${item.gift_card_print_url}\" target=\"_blank\" rel=\"noopener\"\n        class=\"btn-brand-primary btn-brand-lg whitespace-nowrap\">\n        Print Gift Card\n      </a>\n    `\n  }\n\n  showStatus(message, type) {\n    const colors = {\n      success: \"bg-pz-success/16 border-pz-success/35 text-green-800\",\n      error: \"bg-pz-danger/16 border-pz-danger/35 text-red-800\",\n      info: \"bg-pz-info/16 border-pz-info/35 text-pz-ink/70\"\n    }\n    this.statusTarget.innerHTML = `\n      <div class=\"px-4 py-3 rounded-2xl border ${colors[type] || colors.info}\">\n        <span class=\"font-semibold text-sm\">${escapeHtml(message)}</span>\n      </div>\n    `\n  }\n\n  addLogEntry(entry, success) {\n    if (!this.hasLogTarget) return\n\n    const row = document.createElement(\"div\")\n    const time = new Date().toLocaleTimeString()\n\n    if (success) {\n      row.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-success/10 text-green-800\"\n      row.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">LOADED</span>\n        <span class=\"text-pz-ink/60\">Order ${escapeHtml(String(entry.orderNumber))} \u2014 ${entry.count} items</span>`\n    } else {\n      row.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-danger/10 text-red-800\"\n      row.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">Error:</span>\n        <span>${escapeHtml(entry.error || \"Unknown\")}</span>`\n    }\n\n    this.logTarget.prepend(row)\n    while (this.logTarget.children.length > 30) {\n      this.logTarget.removeChild(this.logTarget.lastChild)\n    }\n  }\n\n  playSound(success) {\n    try {\n      const ctx = new (window.AudioContext || window.webkitAudioContext)()\n      const osc = ctx.createOscillator()\n      const gain = ctx.createGain()\n      osc.connect(gain)\n      gain.connect(ctx.destination)\n      gain.gain.value = 0.1\n      if (success) {\n        osc.frequency.value = 880\n        osc.type = \"sine\"\n      } else {\n        osc.frequency.value = 220\n        osc.type = \"square\"\n      }\n      osc.start()\n      osc.stop(ctx.currentTime + (success ? 0.1 : 0.3))\n      osc.onended = () => ctx.close() // release the context so it can't leak per scan (#989)\n    } catch (e) { /* Audio not supported */ }\n  }\n\n  get csrfToken() {\n    return document.querySelector('meta[name=\"csrf-token\"]').content\n  }\n}\n", "// Escape user-controlled text before interpolating it into an innerHTML string.\n//\n// Marketplace-sourced fields (order_number) and seller-defined fields (sku,\n// product_name, color, size) flow into the production scan-station UIs. Built\n// straight into an innerHTML template literal, a value like\n// `<img src=x onerror=...>` executes in a production worker's authenticated\n// session \u2014 cross-tenant stored XSS on an internal tool (#989). Run every such\n// value through escapeHtml first (or build the node with textContent).\n//\n// `&` must be replaced first so the entity ampersands we introduce aren't\n// re-encoded. null/undefined collapse to \"\" so optional fields render blank.\nexport function escapeHtml(value) {\n  if (value == null) return \"\"\n  return String(value)\n    .replace(/&/g, \"&amp;\")\n    .replace(/</g, \"&lt;\")\n    .replace(/>/g, \"&gt;\")\n    .replace(/\"/g, \"&quot;\")\n    .replace(/'/g, \"&#39;\")\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Gift Box Builder product picker drawer.\n// Modeled on listing_builder_controller's product picker, narrowed to\n// product-only selection. The drawer is shared across all slots in the\n// form \u2014 `activeSlotIdValue` tracks which slot triggered the open.\nexport default class extends Controller {\n  static targets = [\"drawer\", \"searchInput\", \"results\", \"slot\", \"slotContext\"]\n  static values  = {\n    activeSlotId: String,\n    endpointUrl:  { type: String, default: \"/gift_boxes/search_products\" }\n  }\n\n  connect() {\n    this._searchTimeout = null\n  }\n\n  open(event) {\n    const slotId = event.currentTarget.dataset.slotId\n    if (!slotId) return\n\n    this.activeSlotIdValue = slotId\n\n    if (this.hasSlotContextTarget) {\n      const slotEl = this._slotElement(slotId)\n      const slotLabel = slotEl?.closest(\"[data-gift-box-form-target='slotSection']\")\n                              ?.querySelector(\".text-sm.font-extrabold\")?.textContent?.trim()\n      this.slotContextTarget.textContent = slotLabel ? `Slot: ${slotLabel}` : \"\"\n    }\n\n    if (this.hasSearchInputTarget) {\n      this.searchInputTarget.value = \"\"\n    }\n    this._showResultsMessage(\"Type at least 2 characters to search.\")\n\n    if (this.hasDrawerTarget) {\n      this.drawerTarget.classList.remove(\"hidden\")\n      setTimeout(() => this.searchInputTarget?.focus(), 50)\n    }\n  }\n\n  close() {\n    if (this.hasDrawerTarget) {\n      this.drawerTarget.classList.add(\"hidden\")\n    }\n    this.activeSlotIdValue = \"\"\n    if (this.hasSearchInputTarget) {\n      this.searchInputTarget.value = \"\"\n    }\n  }\n\n  search(event) {\n    const query = event.target.value.trim()\n\n    clearTimeout(this._searchTimeout)\n    this._searchTimeout = setTimeout(() => this._runSearch(query), 200)\n  }\n\n  async _runSearch(query) {\n    if (query.length < 2) {\n      this._showResultsMessage(\"Type at least 2 characters to search.\")\n      return\n    }\n\n    const slotId = this.activeSlotIdValue\n    if (!slotId) return\n\n    const url = `${this.endpointUrlValue}?q=${encodeURIComponent(query)}&slot_id=${encodeURIComponent(slotId)}`\n\n    try {\n      const response = await fetch(url, {\n        headers: {\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this._csrfToken()\n        }\n      })\n      if (!response.ok) {\n        this._showResultsMessage(\"Search failed. Try again.\")\n        return\n      }\n      const data = await response.json()\n      this._renderResults(data)\n    } catch {\n      this._showResultsMessage(\"Search failed. Try again.\")\n    }\n  }\n\n  _renderResults(data) {\n    if (!this.hasResultsTarget) return\n\n    const products  = Array.isArray(data?.products) ? data.products : []\n    const truncated = Boolean(data?.truncated)\n    const limit     = data?.limit\n\n    if (products.length === 0) {\n      this._showResultsMessage(\"No products found for this slot.\")\n      return\n    }\n\n    const truncationNotice = truncated\n      ? `<div class=\"mb-3 px-3 py-2 rounded-lg bg-[rgba(255,122,24,.08)] border border-[rgba(255,122,24,.20)] text-xs font-bold text-[var(--ink)]\">\n           Showing first ${limit} matches. Refine your search if you don't see the product you want.\n         </div>`\n      : \"\"\n\n    this.resultsTarget.innerHTML = truncationNotice + products.map(p => `\n      <button type=\"button\"\n              class=\"w-full text-left p-3 rounded-xl hover:bg-[rgba(59,42,143,.04)] transition-colors border border-transparent hover:border-[rgba(59,42,143,.08)] mb-2\"\n              data-action=\"click->gift-box-product-picker#select\"\n              data-product-id=\"${p.id}\"\n              data-product-title=\"${this._escape(p.title || \"\")}\"\n              data-catalog-title=\"${this._escape(p.catalog_item_title || \"\")}\"\n              data-photo-url=\"${this._escape(p.photo_url || \"\")}\"\n              data-variant-count=\"${p.variant_count || 0}\"\n              data-variants='${this._escape(JSON.stringify(p.variants || []))}'>\n        <div class=\"flex items-center gap-4\">\n          ${p.photo_url\n            ? `<img src=\"${this._escape(p.photo_url)}\" class=\"w-16 h-16 rounded-lg object-cover flex-shrink-0\" />`\n            : `<div class=\"w-16 h-16 rounded-lg flex items-center justify-center flex-shrink-0 bg-[rgba(59,42,143,.08)]\">\n                 <svg class=\"w-6 h-6 text-[var(--muted)]\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                   <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4\"/>\n                 </svg>\n               </div>`}\n          <div class=\"min-w-0 flex-1\">\n            <div class=\"font-bold text-sm truncate text-[var(--ink)]\">${this._escape(p.title || \"\")}</div>\n            ${p.sku ? `<div class=\"text-xs mt-0.5 font-mono text-[rgba(20,17,42,.55)] truncate\">${this._escape(p.sku)}</div>` : \"\"}\n            <div class=\"text-xs mt-0.5 text-[var(--muted)] truncate\">\n              ${this._escape(p.catalog_item_title || \"No catalog item\")} &middot; ${p.variant_count || 0} variants\n            </div>\n          </div>\n        </div>\n      </button>\n    `).join(\"\")\n  }\n\n  select(event) {\n    const btn = event.currentTarget\n    const slotId = this.activeSlotIdValue\n    if (!slotId) return\n\n    const productId    = btn.dataset.productId\n    const productTitle = btn.dataset.productTitle\n    const catalogTitle = btn.dataset.catalogTitle\n    const photoUrl     = btn.dataset.photoUrl\n    const variantCount = btn.dataset.variantCount\n    const variantsRaw  = btn.dataset.variants || \"[]\"\n\n    const slotEl = this._slotElement(slotId)\n    if (!slotEl) return\n\n    const hidden = slotEl.parentElement.querySelector(`input[type='hidden'][data-gift-box-form-target='productInput'][data-slot-id='${slotId}']`)\n    if (hidden) {\n      hidden.value = productId\n      hidden.dataset.variants = variantsRaw\n      hidden.dispatchEvent(new Event(\"change\", { bubbles: true }))\n    }\n\n    this._renderChip(slotEl, { productTitle, catalogTitle, photoUrl, variantCount, slotId })\n    this.close()\n  }\n\n  _renderChip(slotEl, { productTitle, catalogTitle, photoUrl, variantCount, slotId }) {\n    const photoMarkup = photoUrl\n      ? `<img src=\"${this._escape(photoUrl)}\" class=\"w-10 h-10 rounded-lg object-cover flex-shrink-0\" />`\n      : `<div class=\"w-10 h-10 rounded-lg flex items-center justify-center flex-shrink-0 bg-[rgba(59,42,143,.08)]\">\n           <svg class=\"w-4 h-4 text-[var(--muted)]\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n             <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4\"/>\n           </svg>\n         </div>`\n\n    slotEl.innerHTML = `\n      <div class=\"flex items-center gap-3 p-3 rounded-2xl border border-[rgba(59,42,143,.16)] bg-white/90\">\n        ${photoMarkup}\n        <div class=\"min-w-0 flex-1\">\n          <p class=\"text-sm font-bold text-[var(--ink)] truncate\">${this._escape(productTitle || \"\")}</p>\n          <p class=\"text-xs text-[var(--muted)] mt-0.5 truncate\">\n            ${this._escape(catalogTitle || \"\")} &middot; ${variantCount} variants\n          </p>\n        </div>\n        <button type=\"button\"\n                data-action=\"click->gift-box-product-picker#open\"\n                data-slot-id=\"${this._escape(slotId)}\"\n                class=\"btn-brand-ghost btn-brand-xs flex-shrink-0\">\n          Change\n        </button>\n      </div>\n    `\n  }\n\n  _slotElement(slotId) {\n    return this.slotTargets.find(el => el.dataset.slotId === String(slotId))\n  }\n\n  _showResultsMessage(message) {\n    if (!this.hasResultsTarget) return\n    this.resultsTarget.innerHTML = `<p class=\"text-sm text-[var(--muted)] text-center py-8\">${this._escape(message)}</p>`\n  }\n\n  _csrfToken() {\n    const meta = document.querySelector(\"meta[name='csrf-token']\")\n    return meta ? meta.content : \"\"\n  }\n\n  _escape(text) {\n    const div = document.createElement(\"div\")\n    div.textContent = String(text)\n    return div.innerHTML\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"boxType\"]\n  static values = { newRecord: Boolean }\n\n  // Slot fieldsets are built server-side in GiftBoxTemplatesController#new based\n  // on the box_type param (duo => 2 slots, trio => 3). When the user changes the\n  // Box Type select on the new form, reload with ?box_type=<value> so the server\n  // renders the right number of slot fieldsets. No-op on edit \u2014 slot rows are\n  // already persisted there.\n  boxTypeChanged(event) {\n    if (!this.newRecordValue) return\n\n    const url = new URL(window.location.href)\n    url.searchParams.set(\"box_type\", event.target.value)\n    window.location.assign(url.toString())\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Help article feedback controller\n// Handles article helpfulness voting\nexport default class extends Controller {\n  connect() {\n    // The feedback form uses Turbo Streams for updates\n    // This controller is available for future enhancements\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"display\", \"edit\"]\n\n  edit() {\n    this.displayTargets.forEach(el => el.classList.add(\"hidden\"))\n    this.editTargets.forEach(el => el.classList.remove(\"hidden\"))\n  }\n\n  cancel() {\n    this.editTargets.forEach(el => {\n      el.querySelectorAll(\"input\").forEach(input => {\n        input.value = input.defaultValue\n      })\n      el.classList.add(\"hidden\")\n    })\n    this.displayTargets.forEach(el => el.classList.remove(\"hidden\"))\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"trigger\", \"popover\"]\n\n  connect() {\n    this.isOpen = false\n    this.outsideClickHandler = this.dismissOutside.bind(this)\n    this.escapeHandler = this.dismissEscape.bind(this)\n  }\n\n  disconnect() {\n    this.close()\n  }\n\n  toggle(event) {\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (this.isOpen) {\n      this.close()\n    } else {\n      this.open()\n    }\n  }\n\n  open() {\n    // Close any other open popovers first\n    document.querySelectorAll(\"[data-controller='inventory-popover']\").forEach((el) => {\n      if (el !== this.element) {\n        const other = this.application.getControllerForElementAndIdentifier(el, \"inventory-popover\")\n        if (other && other.isOpen) other.close()\n      }\n    })\n\n    this.popoverTarget.classList.remove(\"hidden\")\n    this.isOpen = true\n    this.position()\n\n    // Defer listeners so the current click doesn't immediately dismiss\n    requestAnimationFrame(() => {\n      document.addEventListener(\"click\", this.outsideClickHandler)\n      document.addEventListener(\"keydown\", this.escapeHandler)\n    })\n  }\n\n  close() {\n    if (!this.isOpen) return\n    this.popoverTarget.classList.add(\"hidden\")\n    this.isOpen = false\n    document.removeEventListener(\"click\", this.outsideClickHandler)\n    document.removeEventListener(\"keydown\", this.escapeHandler)\n  }\n\n  dismissOutside(event) {\n    if (!this.element.contains(event.target)) {\n      this.close()\n    }\n  }\n\n  dismissEscape(event) {\n    if (event.key === \"Escape\") {\n      this.close()\n    }\n  }\n\n  position() {\n    const popover = this.popoverTarget\n    const triggerRect = this.triggerTarget.getBoundingClientRect()\n\n    // Reset positioning\n    popover.style.bottom = \"\"\n    popover.style.top = \"\"\n    popover.style.marginBottom = \"\"\n    popover.style.marginTop = \"\"\n\n    // Measure popover height\n    const popoverHeight = popover.offsetHeight\n\n    if (triggerRect.top > popoverHeight + 8) {\n      // Enough space above - position above\n      popover.style.bottom = \"100%\"\n      popover.style.marginBottom = \"4px\"\n    } else {\n      // Position below\n      popover.style.top = \"100%\"\n      popover.style.marginTop = \"4px\"\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Collects 4 keypad digits then submits the identify form.\nexport default class extends Controller {\n  static targets = [\"display\", \"pin\", \"form\"]\n\n  connect() { this.buffer = \"\" }\n\n  digit(event) {\n    if (this.buffer.length >= 4) return\n    this.buffer += event.currentTarget.dataset.digit\n    this.render()\n    if (this.buffer.length === 4) {\n      this.pinTarget.value = this.buffer\n      this.formTarget.requestSubmit()\n    }\n  }\n\n  clear() {\n    this.buffer = \"\"\n    this.render()\n  }\n\n  render() {\n    this.displayTarget.textContent = \"\u25CF\".repeat(this.buffer.length) || \" \"\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Returns the kiosk to the keypad after an idle period.\nexport default class extends Controller {\n  static values = { url: String, after: { type: Number, default: 30000 } }\n\n  connect() { this.timer = setTimeout(() => { window.location = this.urlValue }, this.afterValue) }\n  disconnect() { clearTimeout(this.timer) }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Lightbox controller for viewing images in a modal overlay\nexport default class extends Controller {\n  static targets = [\"overlay\", \"image\"]\n  static values = {\n    src: String\n  }\n\n  connect() {\n    this.handleKeydown = this.handleKeydown.bind(this)\n  }\n\n  open(event) {\n    event.preventDefault()\n    const src = event.currentTarget.dataset.lightboxSrcValue || event.currentTarget.href\n    this.showOverlay(src)\n  }\n\n  showOverlay(src) {\n    // Create overlay if it doesn't exist\n    this.overlay = document.createElement(\"div\")\n    this.overlay.className = \"fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm cursor-pointer\"\n    this.overlay.innerHTML = `\n      <button class=\"absolute top-4 right-4 text-white hover:text-gray-300 transition-colors z-10\" data-action=\"click->lightbox#close\">\n        <svg class=\"w-8 h-8\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n          <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n        </svg>\n      </button>\n      <img src=\"${src}\" class=\"max-h-[90vh] max-w-[90vw] object-contain rounded-lg shadow-2xl\" />\n    `\n\n    // Close on backdrop click\n    this.overlay.addEventListener(\"click\", (e) => {\n      if (e.target === this.overlay) {\n        this.close()\n      }\n    })\n\n    document.body.appendChild(this.overlay)\n    document.body.classList.add(\"overflow-hidden\")\n    document.addEventListener(\"keydown\", this.handleKeydown)\n  }\n\n  close() {\n    if (this.overlay) {\n      this.overlay.remove()\n      this.overlay = null\n      document.body.classList.remove(\"overflow-hidden\")\n      document.removeEventListener(\"keydown\", this.handleKeydown)\n    }\n  }\n\n  handleKeydown(event) {\n    if (event.key === \"Escape\") {\n      this.close()\n    }\n  }\n\n  disconnect() {\n    this.close()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Manages dynamic addition/removal of purchase order line items\nexport default class extends Controller {\n  static targets = [\"container\", \"template\"]\n\n  add(event) {\n    event.preventDefault()\n    const content = this.templateTarget.innerHTML.replace(/NEW_RECORD/g, new Date().getTime())\n    // Insert at the top so the new row lands right under the Add button and stays\n    // in view, instead of appending to the bottom where the user has to scroll.\n    this.containerTarget.insertAdjacentHTML(\"afterbegin\", content)\n    // Focus the first field of the new row (the item-type selector) so the user\n    // can start entering data without clicking.\n    this.containerTarget.firstElementChild?.querySelector(\"select, input\")?.focus()\n  }\n\n  remove(event) {\n    event.preventDefault()\n    const row = event.target.closest(\"[data-line-item-row]\")\n    const destroyInput = row.querySelector(\"input[name*='_destroy']\")\n\n    if (destroyInput) {\n      // Persisted record: mark for destruction and hide\n      destroyInput.value = \"1\"\n      row.style.display = \"none\"\n    } else {\n      // New record: remove from DOM\n      row.remove()\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport {Turbo} from \"@hotwired/turbo-rails\";\n\nexport default class extends Controller {\n  static values = {\n    url: { type: String }\n  }\n\n  connect() {\n  }\n\n  loadOrder(event) {\n    fetch(this.urlValue, {\n      headers: {\n        \"X-CSRF-Token\": document.querySelector(\"[name='csrf-token']\").content,\n        Accept: \"text/vnd.turbo-stream.html\"\n      },\n      method: 'GET'\n    })\n      .then((response) => response.text())\n      .then((html) => Turbo.renderStreamMessage(html))\n      .catch((error) => {\n        console.error('Error:', error);\n      });\n  }\n\n  disconnect() {\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"productSearch\", \"productResults\", \"prefixSection\", \"sizePrefixWrapper\", \"sizePrefixInput\", \"pushButton\", \"previewContainer\", \"recentCaption\", \"pickerTitle\", \"pickerConfirm\"]\n  static values = { listingId: Number, selectedProductId: Number, currentSizes: Array, maxPrefixLength: { type: Number, default: 25 } }\n\n  openProductPicker(event) {\n    // Two independent signals, passed as Stimulus params:\n    //   append=true  -> the confirm POST grows the listing (the \"Add another\n    //                   product\" button); default false swaps in place.\n    //   swap=true    -> this is a \"Change product\" action; drives the modal\n    //                   labels. Everything else (empty \"Choose a product\" and\n    //                   append) is an ADD, so the labels say Add, not Replace.\n    // Both are stashed on the modal because open runs in the BUTTON's controller\n    // instance while confirm runs in the MODAL's - they share state via the DOM.\n    const params = (event && event.params) || {}\n    const append = params.append === true\n    const swap = params.swap === true\n    const modal = document.getElementById(\"product-picker-modal\")\n    if (modal) {\n      modal.dataset.appendMode = append ? \"true\" : \"false\"\n      // Set the labels deterministically every open so a prior action can't leave\n      // a stale \"Replace product\" on an add (or vice versa).\n      const title = modal.querySelector(\"[data-listing-builder-target='pickerTitle']\")\n      const confirm = modal.querySelector(\"[data-listing-builder-target='pickerConfirm']\")\n      if (title) title.textContent = swap ? \"Change product\" : \"Add product\"\n      if (confirm) confirm.textContent = swap ? \"Replace product\" : \"Add to listing\"\n      modal.classList.remove(\"hidden\")\n      const searchInput = modal.querySelector(\"[data-listing-builder-target='productSearch']\")\n      if (searchInput) {\n        searchInput.value = \"\"\n        setTimeout(() => searchInput.focus(), 100)\n      }\n      // Empty box on open -> show the recent-products quick-pick.\n      this.loadRecent()\n    }\n  }\n\n  closeProductPicker() {\n    const modal = document.getElementById(\"product-picker-modal\")\n    if (modal) {\n      modal.classList.add(\"hidden\")\n      this.selectedProductIdValue = 0\n      this.currentSizesValue = []\n      this._hidePrefixSection()\n      if (this.hasPreviewContainerTarget) {\n        this.previewContainerTarget.innerHTML = \"\"\n        this.previewContainerTarget.classList.add(\"hidden\")\n      }\n    }\n  }\n\n  async searchProducts(event) {\n    const query = event.target.value.trim()\n    // Cleared the box -> restore the recent-products quick-pick.\n    if (query.length === 0) {\n      this.loadRecent()\n      return\n    }\n    if (query.length < 2) {\n      this._showResultsMessage(\"Type at least 2 characters to search.\")\n      return\n    }\n\n    this._fetchAndRender(query, { isRecent: false })\n  }\n\n  // Fetch the recent-products quick-pick (blank query). Used on picker open and\n  // when the box is cleared.\n  async loadRecent() {\n    this._fetchAndRender(\"\", { isRecent: true })\n  }\n\n  // Single fetch+render path for both search and the recent quick-pick.\n  // Request sequencing: searchProducts (modal instance) and loadRecent (runs in\n  // the BUTTON instance on open, the modal instance on clear) hit the same\n  // endpoint and render into the same container. Without sequencing, an earlier\n  // in-flight response can resolve after a later one and render stale results\n  // under the wrong caption. We stamp a monotonic request id on the shared\n  // results node (a per-instance field can't coordinate two instances) and drop\n  // any response that is no longer the latest. The caption is set atomically\n  // with the winning render.\n  async _fetchAndRender(query, { isRecent }) {\n    const container = document.querySelector(\"[data-listing-builder-target='productResults']\")\n    if (!container) return\n\n    const reqId = this._nextRequestId(container)\n    try {\n      const response = await fetch(`/listings/search_products?q=${encodeURIComponent(query)}`, {\n        headers: {\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this._csrfToken()\n        }\n      })\n\n      if (!response.ok) return\n\n      const data = await response.json()\n      // Drop stale responses superseded by a newer request.\n      if (container.dataset.pickerReqId !== String(reqId)) return\n\n      this._renderProductResults(data, container)\n      if (isRecent) this._toggleRecentCaption(Array.isArray(data) && data.length > 0)\n    } catch {\n      // Silently fail\n    }\n  }\n\n  // Bump and return the request id stored on the shared results node. Also\n  // invalidates any in-flight fetch (its stamped id is now stale).\n  _nextRequestId(container) {\n    const next = (parseInt(container.dataset.pickerReqId || \"0\", 10) || 0) + 1\n    container.dataset.pickerReqId = String(next)\n    return next\n  }\n\n  _renderProductResults(products, container) {\n    // Default to search-mode: hide the recent caption. loadRecent() re-shows it.\n    this._toggleRecentCaption(false)\n\n    if (!Array.isArray(products) || products.length === 0) {\n      container.innerHTML = '<p class=\"text-sm text-center py-4\" style=\"color: var(--muted);\">No products found.</p>'\n      return\n    }\n\n    // Check if we're in a canvas (single-flow) context to gate the single-product hint.\n    // The hint is informational only, so it doesn't affect the button's functionality.\n    const modal = document.getElementById(\"product-picker-modal\")\n    const isCanvasContext = modal && modal.dataset.canvasContext === \"true\"\n\n    container.innerHTML = products.map(p => `\n      <button type=\"button\"\n              class=\"w-full text-left p-3 rounded-xl hover:bg-[rgba(59,42,143,.04)] transition-colors border border-transparent hover:border-[rgba(59,42,143,.08)] mb-2\"\n              data-action=\"click->listing-builder#selectProduct\"\n              data-product-id=\"${p.id}\"\n              data-product-title=\"${this._escapeAttr(p.title)}\"\n              data-catalog-title=\"${this._escapeAttr(p.catalog_item_title || '')}\"\n              data-variant-count=\"${p.variant_count || 0}\"\n              data-suggested-prefix=\"${this._escapeAttr(p.suggested_prefix || '')}\"\n              data-supports-size-prefix=\"${p.supports_size_prefix ? 'true' : 'false'}\"\n              data-size-names=\"${this._escapeAttr(JSON.stringify(p.size_names || []))}\">\n\n        <div class=\"flex items-center gap-3\">\n          ${p.photo_url\n            ? `<img src=\"${p.photo_url}\" class=\"w-8 h-8 rounded-lg object-cover flex-shrink-0\" />`\n            : `<div class=\"w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0\" style=\"background: rgba(59,42,143,.08);\">\n                 <svg class=\"w-4 h-4\" style=\"color: var(--muted);\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                   <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4\"/>\n                 </svg>\n               </div>`}\n          <div class=\"min-w-0\">\n            <div class=\"font-bold text-sm truncate\" style=\"color: var(--ink);\">${this._escapeHtml(p.title)}</div>\n            <div class=\"text-xs mt-0.5\" style=\"color: var(--muted);\">\n              ${this._escapeHtml(p.catalog_item_title || 'No catalog item')} &middot; ${p.color_count || 0} colors, ${p.size_count || 0} sizes\n            </div>\n            ${!p.supports_size_prefix && !isCanvasContext ? `\n            <p class=\"text-xs text-amber-600 mt-0.5\">\n              Single products like ornaments are easier to push from the product page - open the product and click \"List on Etsy\".\n            </p>\n            ` : ''}\n          </div>\n        </div>\n      </button>\n    `).join(\"\")\n  }\n\n  selectProduct(event) {\n    const btn = event.currentTarget\n    this.selectedProductIdValue = parseInt(btn.dataset.productId)\n    this.currentSizesValue = JSON.parse(btn.dataset.sizeNames || \"[]\")\n    const supportsSizePrefix = btn.dataset.supportsSizePrefix === \"true\"\n\n    if (this.hasPrefixSectionTarget) {\n      this.prefixSectionTarget.classList.remove(\"hidden\")\n    }\n\n    if (this.hasSizePrefixWrapperTarget) {\n      this.sizePrefixWrapperTarget.classList.toggle(\"hidden\", !supportsSizePrefix)\n    }\n\n    if (this.hasSizePrefixInputTarget) {\n      // Start blank: a prefilled value makes the prefix picker's typeahead filter\n      // its list down to (near) nothing, and auto-focusing the field stole focus\n      // from the product list so a later click never re-fired `focus` to reopen\n      // the dropdown. The seller picks a saved/common prefix or types one; blank\n      // is allowed - a blank field now means no prefix (the add/swap paths no\n      // longer fall back to the product's suggested prefix).\n      this.sizePrefixInputTarget.value = \"\"\n      this.updateSizePreview()\n    }\n\n    // Highlight selected product\n    const allButtons = event.currentTarget.parentElement.querySelectorAll(\"button\")\n    allButtons.forEach(b => b.classList.remove(\"bg-[rgba(59,42,143,.06)]\", \"border-[rgba(59,42,143,.16)]\"))\n    btn.classList.add(\"bg-[rgba(59,42,143,.06)]\", \"border-[rgba(59,42,143,.16)]\")\n  }\n\n  async confirmAddProduct() {\n    if (!this.selectedProductIdValue) return\n\n    const prefixInput = document.querySelector(\"[data-listing-builder-target='sizePrefixInput']\")\n    const prefix = prefixInput ? prefixInput.value.trim() : \"\"\n    const modal = document.getElementById(\"product-picker-modal\")\n    const append = modal && modal.dataset.appendMode === \"true\"\n\n    try {\n      const response = await fetch(`/listings/${this.listingIdValue}/listing_products`, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/x-www-form-urlencoded\",\n          \"X-CSRF-Token\": this._csrfToken(),\n          \"Accept\": \"text/vnd.turbo-stream.html\"\n        },\n        body: `product_id=${this.selectedProductIdValue}&size_prefix=${encodeURIComponent(prefix)}${append ? \"&append=1\" : \"\"}`\n      })\n\n      if (response.ok) {\n        const html = await response.text()\n        Turbo.renderStreamMessage(html)\n        this.closeProductPicker()\n\n        // Trigger variant counter refresh\n        this._refreshVariantCounter()\n      }\n    } catch {\n      // Error handled by server response\n    }\n  }\n\n  cancelSelection() {\n    this.selectedProductIdValue = 0\n    this._hidePrefixSection()\n  }\n\n  updateSizePreview() {\n    if (!this.hasPreviewContainerTarget) return\n    const container = this.previewContainerTarget\n    const prefixInput = document.querySelector(\"[data-listing-builder-target='sizePrefixInput']\")\n    const prefix = prefixInput ? prefixInput.value.trim() : \"\"\n\n    if (!prefix || this.currentSizesValue.length === 0) {\n      container.innerHTML = \"\"\n      container.classList.add(\"hidden\")\n      return\n    }\n\n    container.classList.remove(\"hidden\")\n    container.innerHTML = this.currentSizesValue.map(size => {\n      const combined = `${prefix} ${size}`\n      const overLimit = combined.length > this.maxPrefixLengthValue\n      return `<span class=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-bold ${\n        overLimit\n          ? \"bg-red-50 text-red-600 border border-red-200\"\n          : \"bg-[rgba(59,42,143,.06)] text-[var(--ink)]\"\n      }\">${this._escapeHtml(combined)}${\n        overLimit ? `<span class=\"text-[10px] opacity-75\">${combined.length}</span>` : \"\"\n      }</span>`\n    }).join(\" \")\n  }\n\n  handlePush(event) {\n    const button = event.currentTarget\n    // Update button text immediately but defer disable so the form submits first\n    button.innerHTML = `\n      <span class=\"inline-block animate-spin rounded-full h-4 w-4 border-b-2 border-current mr-2\"></span>\n      Pushing...\n    `\n    setTimeout(() => { button.disabled = true }, 0)\n  }\n\n  _hidePrefixSection() {\n    const prefixSection = document.querySelector(\"[data-listing-builder-target='prefixSection']\")\n    if (prefixSection) prefixSection.classList.add(\"hidden\")\n  }\n\n  _showResultsMessage(message) {\n    this._toggleRecentCaption(false)\n    const container = document.querySelector(\"[data-listing-builder-target='productResults']\")\n    if (container) {\n      // Invalidate any in-flight fetch so its response can't overwrite this message.\n      this._nextRequestId(container)\n      container.innerHTML = `<p class=\"text-sm text-center py-8\" style=\"color: var(--muted);\">${message}</p>`\n    }\n  }\n\n  // Global lookup (not a Stimulus target): openProductPicker runs in the\n  // button's controller instance, but the caption lives in the modal's\n  // instance scope. document.querySelector works from either, matching how\n  // the rest of this controller resolves modal elements.\n  _toggleRecentCaption(show) {\n    const caption = document.querySelector(\"[data-listing-builder-target='recentCaption']\")\n    if (caption) caption.classList.toggle(\"hidden\", !show)\n  }\n\n  _refreshVariantCounter() {\n    const counterController = this.application.getControllerForElementAndIdentifier(\n      document.querySelector(\"[data-controller~='variant-counter']\"),\n      \"variant-counter\"\n    )\n    if (counterController && typeof counterController.refresh === \"function\") {\n      counterController.refresh()\n    }\n  }\n\n  _csrfToken() {\n    const meta = document.querySelector(\"meta[name='csrf-token']\")\n    return meta ? meta.content : \"\"\n  }\n\n  _escapeHtml(text) {\n    const div = document.createElement(\"div\")\n    div.textContent = text\n    return div.innerHTML\n  }\n\n  // Escape a value for use inside an HTML attribute. Unlike _escapeHtml (text\n  // context), this also escapes both quote characters so a value containing ' or\n  // \" cannot break out of the attribute and inject event handlers. Required for\n  // data-* values that can carry user/Etsy-imported content (e.g. size_names).\n  _escapeAttr(value) {\n    return String(value)\n      .replace(/&/g, \"&amp;\")\n      .replace(/</g, \"&lt;\")\n      .replace(/>/g, \"&gt;\")\n      .replace(/\"/g, \"&quot;\")\n      .replace(/'/g, \"&#39;\")\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { DirectUpload } from \"@rails/activestorage\"\n\nexport default class extends Controller {\n  static targets = [\"grid\", \"dropzone\", \"item\", \"progressContainer\", \"counter\", \"fileInput\", \"candidate\"]\n  static values = { attachUrl: String, reorderUrl: String, max: { type: Number, default: 20 }, editable: Boolean }\n\n  // --- Drop zone file handling ---\n\n  dragOver(event) {\n    event.preventDefault()\n    event.dataTransfer.dropEffect = \"copy\"\n  }\n\n  dragEnter(event) {\n    event.preventDefault()\n    this.dropzoneTarget.classList.add(\"border-[var(--pz-purple)]\", \"bg-[rgba(59,42,143,.04)]\")\n  }\n\n  dragLeave(event) {\n    if (!this.dropzoneTarget.contains(event.relatedTarget)) {\n      this.dropzoneTarget.classList.remove(\"border-[var(--pz-purple)]\", \"bg-[rgba(59,42,143,.04)]\")\n    }\n  }\n\n  drop(event) {\n    event.preventDefault()\n    this.dropzoneTarget.classList.remove(\"border-[var(--pz-purple)]\", \"bg-[rgba(59,42,143,.04)]\")\n\n    // A candidate tile drag carries a blob signed id - attach it directly, no\n    // upload involved (the blob already exists on the product's mockups).\n    const signedId = event.dataTransfer.getData(\"text/x-signed-id\")\n    if (signedId) {\n      this._attachToListing(signedId)\n      return\n    }\n\n    const files = Array.from(event.dataTransfer.files).filter(f =>\n      [\"image/jpeg\", \"image/png\", \"image/webp\"].includes(f.type)\n    )\n    this._uploadFiles(files)\n  }\n\n  clickUpload() {\n    this.fileInputTarget.click()\n  }\n\n  // --- Product mockup candidates (#1179) ---\n\n  // Attaches a candidate mockup's existing blob to the listing on click.\n  addCandidate(event) {\n    const signedId = event.currentTarget.dataset.signedId\n    if (signedId) this._attachToListing(signedId)\n  }\n\n  candidateDragStart(event) {\n    event.dataTransfer.effectAllowed = \"copy\"\n    event.dataTransfer.setData(\"text/x-signed-id\", event.currentTarget.dataset.signedId)\n  }\n\n  filesSelected(event) {\n    const files = Array.from(event.target.files)\n    this._uploadFiles(files)\n    event.target.value = \"\" // reset for re-upload of same file\n  }\n\n  // --- Direct Upload ---\n\n  _uploadFiles(files) {\n    const currentCount = this.itemTargets.length\n    const remaining = this.maxValue - currentCount\n    const toUpload = files.slice(0, remaining)\n\n    if (toUpload.length === 0) return\n\n    this.progressContainerTarget.classList.remove(\"hidden\")\n\n    toUpload.forEach(file => {\n      if (file.size > 10 * 1024 * 1024) return // skip >10MB\n\n      const progressEl = document.createElement(\"div\")\n      progressEl.className = \"flex items-center gap-2 text-sm\"\n      progressEl.innerHTML = `\n        <div class=\"flex-1 h-2 bg-[rgba(59,42,143,.08)] rounded-full overflow-hidden\">\n          <div class=\"h-full bg-[var(--pz-purple)] rounded-full transition-all duration-200\" style=\"width: 0%\"></div>\n        </div>\n        <span class=\"text-xs text-[var(--muted)] w-16 text-right\">${file.name.slice(0, 12)}...</span>\n      `\n      this.progressContainerTarget.appendChild(progressEl)\n\n      const progressBar = progressEl.querySelector(\"div > div\")\n\n      const upload = new DirectUpload(file, \"/rails/active_storage/direct_uploads\", {\n        directUploadWillStoreFileWithXHR: (request) => {\n          request.upload.addEventListener(\"progress\", (event) => {\n            const pct = (event.loaded / event.total) * 100\n            progressBar.style.width = `${pct}%`\n          })\n        }\n      })\n\n      upload.create((error, blob) => {\n        progressEl.remove()\n        if (this.progressContainerTarget.children.length === 0) {\n          this.progressContainerTarget.classList.add(\"hidden\")\n        }\n\n        if (error) {\n          console.error(\"Upload failed:\", error)\n          return\n        }\n\n        this._attachToListing(blob.signed_id)\n      })\n    })\n  }\n\n  async _attachToListing(signedId) {\n    const response = await fetch(this.attachUrlValue, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/x-www-form-urlencoded\",\n        \"X-CSRF-Token\": this._csrfToken(),\n        \"Accept\": \"text/vnd.turbo-stream.html\"\n      },\n      body: `signed_id=${encodeURIComponent(signedId)}`\n    })\n\n    if (response.ok) {\n      const html = await response.text()\n      Turbo.renderStreamMessage(html)\n    }\n  }\n\n  // --- Drag to reorder ---\n\n  itemDragStart(event) {\n    this._draggedItem = event.currentTarget\n    event.currentTarget.classList.add(\"opacity-40\", \"scale-95\")\n    event.dataTransfer.effectAllowed = \"move\"\n    event.dataTransfer.setData(\"text/plain\", event.currentTarget.dataset.imageId)\n  }\n\n  itemDragEnd(event) {\n    event.currentTarget.classList.remove(\"opacity-40\", \"scale-95\")\n    this._draggedItem = null\n    // Clear all drop indicators\n    this.itemTargets.forEach(item => {\n      item.classList.remove(\"border-[var(--pz-purple)]\", \"border-dashed\")\n    })\n  }\n\n  itemDragOver(event) {\n    event.preventDefault()\n    event.dataTransfer.dropEffect = \"move\"\n  }\n\n  itemDragEnter(event) {\n    event.preventDefault()\n    const target = event.currentTarget\n    if (target !== this._draggedItem) {\n      target.classList.add(\"border-[var(--pz-purple)]\", \"border-dashed\")\n    }\n  }\n\n  itemDragLeave(event) {\n    const target = event.currentTarget\n    if (!target.contains(event.relatedTarget)) {\n      target.classList.remove(\"border-[var(--pz-purple)]\", \"border-dashed\")\n    }\n  }\n\n  itemDrop(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    const target = event.currentTarget\n    target.classList.remove(\"border-[var(--pz-purple)]\", \"border-dashed\")\n\n    if (!this._draggedItem || this._draggedItem === target) return\n\n    const grid = this.gridTarget\n    const items = Array.from(grid.children)\n    const draggedIdx = items.indexOf(this._draggedItem)\n    const targetIdx = items.indexOf(target)\n\n    if (draggedIdx < targetIdx) {\n      grid.insertBefore(this._draggedItem, target.nextSibling)\n    } else {\n      grid.insertBefore(this._draggedItem, target)\n    }\n\n    // Update rank badges\n    Array.from(grid.children).forEach((item, i) => {\n      const badge = item.querySelector(\"[data-role='rank-badge']\")\n      if (badge) badge.textContent = i + 1\n    })\n\n    this._saveOrder()\n  }\n\n  async _saveOrder() {\n    const positions = Array.from(this.gridTarget.children).map(el => el.dataset.imageId)\n\n    await fetch(this.reorderUrlValue, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"X-CSRF-Token\": this._csrfToken()\n      },\n      body: JSON.stringify({ positions })\n    })\n  }\n\n  _csrfToken() {\n    const meta = document.querySelector(\"meta[name='csrf-token']\")\n    return meta ? meta.content : \"\"\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Live mirror of Listings::EtsyValidator (#639). Rule keys and messages are kept\n// in sync with the server so client- and server-side text match. Supersedes\n// tag_counter_controller.js (per-tag badges + 13-tag count + submit toggle) and\n// adds the title rules and tag charset/duplicate rules.\n//\n// Connected on the listing form element. Optional targets \u2014 the controller\n// no-ops safely if a field isn't connected yet (Turbo navigation).\nexport default class extends Controller {\n  static targets = [\"titleInput\", \"titleError\", \"tagInput\", \"tagBadges\", \"tagError\", \"summary\"]\n\n  // Mirror of EtsyValidator constants (Etsy Open API ShopListing patterns).\n  static TITLE_MAX = 140\n  // Any character outside letters, digits, punctuation, math symbols, spaces, \u2122 \u00A9 \u00AE.\n  static TITLE_FORBIDDEN = /[^\\p{L}\\p{Nd}\\p{P}\\p{Sm}\\p{Zs}\u2122\u00A9\u00AE]/u\n  static ALNUM_START = /^[\\p{L}\\p{Nd}]/u\n  static TITLE_LIMITED = [\"%\", \":\", \"&\", \"+\"]\n  static TAG_MAX_COUNT = 13\n  static TAG_MAX_LENGTH = 20\n  static TAG_PATTERN = /^[\\p{L}\\p{Nd}][\\p{L}\\p{Nd} '\\-\u2122\u00A9\u00AE]*$/u\n\n  connect() {\n    this.validate()\n  }\n\n  disconnect() {\n    // Don't leak the debounce timer across Turbo re-renders.\n    if (this._timer) {\n      clearTimeout(this._timer)\n      this._timer = null\n    }\n  }\n\n  // Debounced entry point bound to input events.\n  scheduleValidate() {\n    if (this._timer) clearTimeout(this._timer)\n    this._timer = setTimeout(() => this.validate(), 200)\n  }\n\n  validate() {\n    const violations = [\n      ...this.validateTitle(),\n      ...this.validateTags()\n    ]\n    this.toggleSubmit(violations)\n  }\n\n  // ---- Title --------------------------------------------------------------\n\n  validateTitle() {\n    if (!this.hasTitleInputTarget) return []\n\n    const title = this.titleInputTarget.value.trim()\n    const violations = []\n    if (title.length === 0) {\n      this.setError(this.titleErrorTarget, null)\n      return violations\n    }\n\n    if (title.length > this.constructor.TITLE_MAX) {\n      violations.push(`Title is ${title.length} characters; Etsy's limit is ${this.constructor.TITLE_MAX}.`)\n    }\n    if (!this.constructor.ALNUM_START.test(title)) {\n      violations.push(\"Title must begin with a letter or number.\")\n    }\n    for (const char of new Set([...title].filter(c => this.constructor.TITLE_FORBIDDEN.test(c)))) {\n      violations.push(`Title can't contain the character \"${char}\".`)\n    }\n    for (const char of this.constructor.TITLE_LIMITED) {\n      if (title.split(char).length - 1 > 1) violations.push(`Title can use \"${char}\" at most once.`)\n    }\n\n    this.setError(this.titleErrorTarget, violations[0] || null)\n    return violations\n  }\n\n  // ---- Tags ---------------------------------------------------------------\n\n  validateTags() {\n    if (!this.hasTagInputTarget) return []\n\n    const tags = this.tagInputTarget.value.split(\",\").map(t => t.trim()).filter(t => t.length > 0)\n    const violations = []\n\n    if (this.hasTagBadgesTarget) this.renderBadges(tags)\n\n    if (tags.length === 0) {\n      this.setError(this.tagErrorTarget, null)\n      return violations\n    }\n\n    if (tags.length > this.constructor.TAG_MAX_COUNT) {\n      violations.push(`You have ${tags.length} tags; Etsy allows up to ${this.constructor.TAG_MAX_COUNT}.`)\n    }\n\n    const seen = new Set()\n    for (const tag of tags) {\n      if (tag.length > this.constructor.TAG_MAX_LENGTH) {\n        violations.push(`Tag \"${tag}\" is ${tag.length} characters; the limit is ${this.constructor.TAG_MAX_LENGTH}.`)\n      }\n      if (!this.constructor.TAG_PATTERN.test(tag)) {\n        violations.push(`Tag \"${tag}\" can only use letters, numbers, spaces, hyphens, and apostrophes, and must start with a letter or number.`)\n      }\n      const key = tag.toLowerCase()\n      if (seen.has(key)) violations.push(`Tag \"${tag}\" is a duplicate.`)\n      seen.add(key)\n    }\n\n    this.setError(this.tagErrorTarget, violations[0] || null)\n    return violations\n  }\n\n  renderBadges(tags) {\n    if (tags.length === 0) {\n      this.tagBadgesTarget.innerHTML = \"\"\n      return\n    }\n    const badges = tags.map(tag => {\n      const len = tag.length\n      let colorClass = \"bg-base-200 text-base-content\"\n      if (len > this.constructor.TAG_MAX_LENGTH || !this.constructor.TAG_PATTERN.test(tag)) {\n        colorClass = \"bg-red-100 text-red-700 border border-red-300\"\n      } else if (len >= 17) {\n        colorClass = \"bg-orange-100 text-orange-700 border border-orange-300\"\n      }\n      return `<span class=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium ${colorClass}\">${this.escapeHtml(tag)} <span class=\"opacity-60\">${len}/${this.constructor.TAG_MAX_LENGTH}</span></span>`\n    })\n    const countColor = tags.length > this.constructor.TAG_MAX_COUNT\n      ? \"text-red-600\"\n      : tags.length === this.constructor.TAG_MAX_COUNT\n        ? \"text-orange-600\"\n        : \"text-[var(--muted)]\"\n    this.tagBadgesTarget.innerHTML = `<div class=\"flex flex-wrap gap-1.5\">${badges.join(\"\")}</div><p class=\"text-xs mt-1 ${countColor}\">${tags.length}/${this.constructor.TAG_MAX_COUNT} tags</p>`\n  }\n\n  // ---- Shared -------------------------------------------------------------\n\n  setError(el, message) {\n    if (!el) return\n    if (message) {\n      el.textContent = message\n      el.classList.remove(\"hidden\")\n    } else {\n      el.textContent = \"\"\n      el.classList.add(\"hidden\")\n    }\n  }\n\n  toggleSubmit(violations) {\n    const submit = this.element.querySelector(\"[type='submit']\")\n    const ok = violations.length === 0\n\n    if (submit) {\n      submit.disabled = !ok\n      submit.classList.toggle(\"opacity-50\", !ok)\n      submit.classList.toggle(\"cursor-not-allowed\", !ok)\n    }\n\n    if (this.hasSummaryTarget) {\n      if (ok) {\n        this.summaryTarget.innerHTML = \"\"\n        this.summaryTarget.classList.add(\"hidden\")\n      } else {\n        this.summaryTarget.innerHTML = violations.map(v => `<li>${this.escapeHtml(v)}</li>`).join(\"\")\n        this.summaryTarget.classList.remove(\"hidden\")\n      }\n    }\n  }\n\n  escapeHtml(text) {\n    const div = document.createElement(\"div\")\n    div.textContent = text\n    return div.innerHTML\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"searchInput\"]\n\n  // Listen for turbo stream actions\n  connect() {\n    // Add input event listener with debounce\n    this.searchInputTarget.addEventListener('input', this.debouncedSearch.bind(this))\n  }\n\n  disconnect() {\n    // Clean up the debounce timer\n    if (this.searchTimer) {\n      clearTimeout(this.searchTimer)\n    }\n  }\n\n  // Debounced search method\n  debouncedSearch(event) {\n    // Clear existing timer\n    if (this.searchTimer) {\n      clearTimeout(this.searchTimer)\n    }\n\n    // Set new timer for 350ms delay\n    this.searchTimer = setTimeout(() => {\n      this.performSearch()\n    }, 350)\n  }\n\n  // Search for products (called by button click or debounced input)\n  searchProducts(event) {\n    event.preventDefault()\n    this.performSearch()\n  }\n\n  // Actual search implementation\n  performSearch() {\n    const query = this.searchInputTarget.value.trim()\n    if (query.length < 2) return\n\n    const url = new URL('/manual_orders/search_products', window.location.origin)\n    url.searchParams.append('query', query)\n\n    fetch(url, {\n      method: 'GET',\n      headers: {\n        'Accept': 'text/vnd.turbo-stream.html',\n        'X-Requested-With': 'XMLHttpRequest',\n        'X-CSRF-Token': document.querySelector('meta[name=\"csrf-token\"]').content\n      }\n    })\n        .then(response => response.text())\n        .then(html => {\n          Turbo.renderStreamMessage(html)\n        })\n        .catch(error => {\n          console.error('Error searching products:', error)\n        })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"colorSwatch\", \"sizeGroup\"]\n\n  connect() {\n    // Auto-select the first color on connect\n    const firstSwatch = this.colorSwatchTargets[0]\n    if (firstSwatch) {\n      this.selectColor(firstSwatch.dataset.colorName)\n    }\n  }\n\n  pickColor(event) {\n    const colorName = event.currentTarget.dataset.colorName\n    this.selectColor(colorName)\n  }\n\n  selectColor(colorName) {\n    // Update swatch selected states\n    this.colorSwatchTargets.forEach((swatch) => {\n      if (swatch.dataset.colorName === colorName) {\n        swatch.classList.add(\"ring-2\", \"ring-primary\", \"ring-offset-2\", \"border-primary\")\n        swatch.classList.remove(\"border-gray-300\")\n      } else {\n        swatch.classList.remove(\"ring-2\", \"ring-primary\", \"ring-offset-2\", \"border-primary\")\n        swatch.classList.add(\"border-gray-300\")\n      }\n    })\n\n    // Show/hide size groups\n    this.sizeGroupTargets.forEach((group) => {\n      if (group.dataset.colorName === colorName) {\n        group.classList.remove(\"hidden\")\n      } else {\n        group.classList.add(\"hidden\")\n      }\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport Tribute from \"tributejs\"\nimport Trix from \"trix\"\n\nexport default class extends Controller {\n  static targets = [ \"field\" ]\n  static values = {\n    url: { type: String, default: '/users/mentions.json'}\n  }\n\n  connect() {\n    this.initializeTribute()\n  }\n\n  initializeTribute() {\n    this.tribute = new Tribute({\n      allowSpaces: true,\n      lookup: 'name',\n      values: (text, callback) => {\n        fetch(`${this.urlValue}?query=${text}`)\n          .then(response => response.json())\n          .then(users => callback(users))\n          .catch(error => callback([]))\n      },\n      menuShowMinLength: 1,\n    })\n    this.tribute.attach(this.fieldTarget)\n    this.fieldTarget.addEventListener('tribute-replaced', this.replaced.bind(this))\n    this.tribute.range.pasteHtml = this._pasteHtml.bind(this)\n  }\n\n  disconnect() {\n    this.tribute.detach(this.fieldTarget)\n  }\n\n  // Inserts ActionText Attachment when a Tribute entry is selected\n  replaced(e) {\n    let mention = e.detail.item.original\n    let attachment = new Trix.Attachment({\n      content: mention.content,\n      sgid: mention.sgid,\n    })\n    this.editor.insertAttachment(attachment)\n    this.editor.insertString(\" \")\n  }\n\n  // Remove text user typed for the mention\n  _pasteHtml(html, startPos, endPos) {\n    let range = this.editor.getSelectedRange()\n    let position = range[0]\n    let length = endPos - startPos\n\n    this.editor.setSelectedRange([position - length, position])\n    this.editor.deleteInDirection(\"backward\")\n  }\n\n  // Lazily lookup the Trix editor\n  get editor() {\n    return this.fieldTarget.editor\n  }\n}\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 `<div class=\"trix-button-row\">\n      <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"${lang.bold}\" tabindex=\"-1\">${lang.bold}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"${lang.italic}\" tabindex=\"-1\">${lang.italic}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"${lang.strike}\" tabindex=\"-1\">${lang.strike}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"${lang.link}\" tabindex=\"-1\">${lang.link}</button>\n      </span>\n\n      <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"${lang.heading1}\" tabindex=\"-1\">${lang.heading1}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"${lang.quote}\" tabindex=\"-1\">${lang.quote}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"${lang.code}\" tabindex=\"-1\">${lang.code}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"${lang.bullets}\" tabindex=\"-1\">${lang.bullets}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"${lang.numbers}\" tabindex=\"-1\">${lang.numbers}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"${lang.outdent}\" tabindex=\"-1\">${lang.outdent}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"${lang.indent}\" tabindex=\"-1\">${lang.indent}</button>\n      </span>\n\n      <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"${lang.attachFiles}\" tabindex=\"-1\">${lang.attachFiles}</button>\n      </span>\n\n      <span class=\"trix-button-group-spacer\"></span>\n\n      <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"${lang.undo}\" tabindex=\"-1\">${lang.undo}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"${lang.redo}\" tabindex=\"-1\">${lang.redo}</button>\n      </span>\n    </div>\n\n    <div class=\"trix-dialogs\" data-trix-dialogs>\n      <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\n        <div class=\"trix-dialog__link-fields\">\n          <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"${lang.urlPlaceholder}\" aria-label=\"${lang.url}\" data-trix-validate-href required data-trix-input>\n          <div class=\"trix-button-group\">\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"${lang.link}\" data-trix-method=\"setAttribute\">\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"${lang.unlink}\" data-trix-method=\"removeAttribute\">\n          </div>\n        </div>\n      </div>\n    </div>`\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 <input> 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", "/*! @license DOMPurify 3.2.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.5/LICENSE */\n\nconst {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor\n} = Object;\nlet {\n  freeze,\n  seal,\n  create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n  apply,\n  construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n  freeze = function freeze(x) {\n    return x;\n  };\n}\nif (!seal) {\n  seal = function seal(x) {\n    return x;\n  };\n}\nif (!apply) {\n  apply = function apply(fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\nif (!construct) {\n  construct = function construct(Func, args) {\n    return new Func(...args);\n  };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n  return function (thisArg) {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    return apply(func, thisArg, args);\n  };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n  return function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return construct(func, args);\n  };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n  let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n        element = lcElement;\n      }\n    }\n    set[element] = true;\n  }\n  return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n  return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n  const newObject = create(null);\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (value && typeof value === 'object' && value.constructor === Object) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n  return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n    object = getPrototypeOf(object);\n  }\n  function fallbackValue() {\n    return null;\n  }\n  return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  ARIA_ATTR: ARIA_ATTR,\n  ATTR_WHITESPACE: ATTR_WHITESPACE,\n  CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n  DATA_ATTR: DATA_ATTR,\n  DOCTYPE_NAME: DOCTYPE_NAME,\n  ERB_EXPR: ERB_EXPR,\n  IS_ALLOWED_URI: IS_ALLOWED_URI,\n  IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n  MUSTACHE_EXPR: MUSTACHE_EXPR,\n  TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5,\n  // Deprecated\n  entityNode: 6,\n  // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n  if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  }\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      }\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n    return null;\n  }\n};\nconst _createHooksMap = function _createHooksMap() {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: []\n  };\n};\nfunction createDOMPurify() {\n  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n  const DOMPurify = root => createDOMPurify(root);\n  DOMPurify.version = '3.2.5';\n  DOMPurify.removed = [];\n  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n    return DOMPurify;\n  }\n  let {\n    document\n  } = window;\n  const originalDocument = document;\n  const currentScript = originalDocument.currentScript;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes\n  } = window;\n  const ElementPrototype = Element.prototype;\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName\n  } = document;\n  const {\n    importNode\n  } = originalDocument;\n  let hooks = _createHooksMap();\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT\n  } = EXPRESSIONS;\n  let {\n    IS_ALLOWED_URI: IS_ALLOWED_URI$1\n  } = EXPRESSIONS;\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n    tagNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    allowCustomizedBuiltInElements: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: false\n    }\n  }));\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc = null;\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n  const formElement = document.createElement('form');\n  const isRegexOrFunction = function isRegexOrFunction(testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function _parseConfig() {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n    PARSER_MEDIA_TYPE =\n    // eslint-disable-next-line unicorn/prefer-includes\n    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n    HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, text);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html$1);\n        addToSet(ALLOWED_ATTR, html);\n      }\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, svg$1);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, mathMl$1);\n        addToSet(ALLOWED_ATTR, mathMl);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n    }\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n      }\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n      }\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n      // Sign local variables required by `sanitize`.\n      emptyHTML = trustedTypesPolicy.createHTML('');\n    } else {\n      // Uninitialized policy, attempt to initialize the internal dompurify policy.\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n      }\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n    CONFIG = cfg;\n  };\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function _checkValidNamespace(element) {\n    let parent = getParentNode(element);\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template'\n      };\n    }\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n      }\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n    }\n    // For XHTML and XML documents that support custom namespaces\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return true;\n    }\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function _forceRemove(node) {\n    arrayPush(DOMPurify.removed, {\n      element: node\n    });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function _removeAttribute(name, element) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element\n      });\n    }\n    element.removeAttribute(name);\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n    }\n    const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n    const body = doc.body || doc.documentElement;\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n    }\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n    }\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function _createNodeIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root,\n    // eslint-disable-next-line no-bitwise\n    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n  };\n  /**\n   * _isClobbered\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function _isClobbered(element) {\n    return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n  };\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true is object is a DOM node\n   */\n  const _isNode = function _isNode(value) {\n    return typeof Node === 'function' && value instanceof Node;\n  };\n  function _executeHooks(hooks, currentNode, data) {\n    arrayForEach(hooks, hook => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function _sanitizeElements(currentNode) {\n    let content = null;\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any kind of possibly harmful comments */\n    if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n          return false;\n        }\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n          return false;\n        }\n      }\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        content = stringReplace(content, expr, ' ');\n      });\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, {\n          element: currentNode.cloneNode()\n        });\n        currentNode.textContent = content;\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n    return false;\n  };\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n      return false;\n    }\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n      // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n      // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n      _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n      // Alternative, second condition checks if it's an `is`-attribute, AND\n      // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n      return false;\n    } else ;\n    return true;\n  };\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n    const {\n      attributes\n    } = currentNode;\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined\n    };\n    let l = attributes.length;\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const {\n        name,\n        namespaceURI,\n        value: attrValue\n      } = attr;\n      const lcName = transformCaseFunc(name);\n      let value = name === 'value' ? attrValue : stringTrim(attrValue);\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n      /* Remove attribute */\n      _removeAttribute(name, currentNode);\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n      /* Handle attributes that require Trusted Types */\n      if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n        if (namespaceURI) ; else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML':\n              {\n                value = trustedTypesPolicy.createHTML(value);\n                break;\n              }\n            case 'TrustedScriptURL':\n              {\n                value = trustedTypesPolicy.createScriptURL(value);\n                break;\n              }\n          }\n        }\n      }\n      /* Handle invalid data-* attribute set by try-catching it */\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n        } else {\n          arrayPop(DOMPurify.removed);\n        }\n      } catch (_) {}\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty) {\n    let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        const tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n      // eslint-disable-next-line unicorn/prefer-includes\n      dirty.indexOf('<') === -1) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      }\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n    /* Now start iterating over the created document */\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n    }\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n      return returnNode;\n    }\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n    /* Serialize doctype if allowed */\n    if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n      serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n  DOMPurify.setConfig = function () {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n  DOMPurify.removeHook = function (entryPoint, hookFunction) {\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n      return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n    return arrayPop(hooks[entryPoint]);\n  };\n  DOMPurify.removeHooks = function (entryPoint) {\n    hooks[entryPoint] = [];\n  };\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n  return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\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, options) {\n    const sanitizedElement = new this(html, options).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, purifyOptions } = {}) {\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.purifyOptions = purifyOptions || {}\n    this.body = createBodyElementForHTML(html)\n  }\n\n  sanitize() {\n    this.sanitizeElements()\n    this.normalizeListElementNesting()\n    const purifyConfig = Object.assign({}, config.dompurify, this.purifyOptions)\n    DOMPurify.setConfig(purifyConfig)\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 </html>\n  html = html.replace(/<\\/html[^>]*>[^]*$/i, \"</html>\")\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 <br> 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(/&nbsp;/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, purifyOptions } = {}) {\n    super(...arguments)\n    this.html = html\n    this.referenceElement = referenceElement\n    this.purifyOptions = purifyOptions\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, { purifyOptions: this.purifyOptions })\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(\"<!--block-->\", \"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, { purifyOptions: { SAFE_FOR_XML: true } }).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    // <div class=\"#{css.attachmentMetadataContainer}\" data-trix-mutable=\"true\">\n    //   <div class=\"trix-button-row\">\n    //     <span class=\"trix-button-group trix-button-group--actions\">\n    //       <button type=\"button\" class=\"trix-button trix-button--remove\" title=\"#{lang.remove}\" data-trix-action=\"remove\">#{lang.remove}</button>\n    //     </span>\n    //   </div>\n    // </div>\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      // <div class=\"#{css.attachmentMetadataContainer}\">\n      //   <span class=\"#{css.attachmentMetadata}\">\n      //     <span class=\"#{css.attachmentName}\" title=\"#{name}\">#{name}</span>\n      //     <span class=\"#{css.attachmentSize}\">#{size}</span>\n      //   </span>\n      // </div>\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  static observedAttributes = [ \"connected\" ]\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      this.internalToolbar = makeElement(\"trix-toolbar\", { id: toolbarId })\n      this.parentNode.insertBefore(this.internalToolbar, this)\n      return this.internalToolbar\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  // Element callbacks\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    if (name === \"connected\" && this.isConnected && oldValue != null && oldValue !== newValue) {\n      requestAnimationFrame(() => this.reconnect())\n    }\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\n      this.toggleAttribute(\"connected\", true)\n      autofocus(this)\n    }\n  }\n\n  disconnectedCallback() {\n    this.editorController?.unregisterSelectionManager()\n    this.#delegate.disconnectedCallback()\n    this.toggleAttribute(\"connected\", false)\n  }\n\n  reconnect() {\n    this.removeInternalToolbar()\n    this.disconnectedCallback()\n    this.connectedCallback()\n  }\n\n  removeInternalToolbar() {\n    this.internalToolbar?.remove()\n    this.internalToolbar = null\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", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"menu\"]\n\n  toggle() {\n    this.menuTarget.classList.toggle(\"hidden\")\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Reloads a generation batch's results page while it is still rendering, so newly\n// completed mockups appear without a manual refresh. Also covers single-output\n// re-renders (an adjust-and-save on one output) via outputsPendingValue, since the\n// batch's own status can already be \"completed\" while one output re-renders.\n// Listing-video renders can also outlive the image batch, so videoPendingValue\n// keeps the same reload loop active until both media types settle.\nexport default class extends Controller {\n  static values = {\n    status: String,\n    outputsPending: { type: Boolean, default: false },\n    videoPending: { type: Boolean, default: false },\n    interval: { type: Number, default: 2500 }\n  }\n\n  connect() {\n    if (!this.pending) return\n\n    this.timer = setTimeout(() => this.reload(), this.intervalValue)\n  }\n\n  disconnect() {\n    if (this.timer) clearTimeout(this.timer)\n  }\n\n  get pending() {\n    if (this.outputsPendingValue || this.videoPendingValue) return true\n\n    return this.statusValue === \"pending\" || this.statusValue === \"processing\"\n  }\n\n  reload() {\n    // A hard reload, not Turbo.visit \u2014 visiting the current URL served a cached\n    // snapshot and the results never refreshed until a manual reload.\n    window.location.reload()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Preset + custom picker for a collection's uniform mockup output size.\nexport default class extends Controller {\n  static targets = [ \"width\", \"height\" ]\n\n  // Fills the width/height fields from a preset button's data attributes.\n  setPreset(event) {\n    event.preventDefault()\n    const { width, height } = event.currentTarget.dataset\n    this.widthTarget.value = width\n    this.heightTarget.value = height\n  }\n\n  // Clears both fields (original size \u2014 no crop/resize).\n  clear(event) {\n    event.preventDefault()\n    this.widthTarget.value = \"\"\n    this.heightTarget.value = \"\"\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Drives the listing builder's \"Add from Mockup Studio\" picker modal: opens the\n// native <dialog>, (re)loads the batch list into its turbo-frame, tracks the live\n// selection count, and closes the dialog once media is attached. Lives on a wrapper\n// spanning both the photos-section trigger button and the dialog (canvas.html.erb).\nexport default class extends Controller {\n  static targets = [\"dialog\", \"frame\", \"count\", \"submit\"]\n  static values = { url: String }\n\n  // Opens the modal, always showing a fresh batch list.\n  open() {\n    if (this.frameTarget.getAttribute(\"src\") === this.urlValue) {\n      this.frameTarget.reload()\n    } else {\n      this.frameTarget.setAttribute(\"src\", this.urlValue)\n    }\n    this.dialogTarget.showModal()\n  }\n\n  close() {\n    this.dialogTarget.close()\n  }\n\n  // Native <dialog> backdrop clicks land on the dialog element itself.\n  backdropClose(event) {\n    if (event.target === this.dialogTarget) this.dialogTarget.close()\n  }\n\n  // Recomputes the selection summary and enables/disables the attach button.\n  refresh() {\n    const images = this.element.querySelectorAll('input[name=\"generated_mockup_ids[]\"]:checked').length\n    const hasVideo = !!this.element.querySelector('input[name=\"mockup_video_id\"]:checked')\n    const total = images + (hasVideo ? 1 : 0)\n\n    if (this.hasCountTarget) {\n      if (total === 0) {\n        this.countTarget.textContent = \"Nothing selected\"\n      } else {\n        const parts = []\n        if (images > 0) parts.push(`${images} photo${images === 1 ? \"\" : \"s\"}`)\n        if (hasVideo) parts.push(\"1 video\")\n        this.countTarget.textContent = `${parts.join(\" + \")} selected`\n      }\n    }\n    if (this.hasSubmitTarget) this.submitTarget.disabled = total === 0\n  }\n\n  // Closes the modal after a successful attach (the sections refresh via turbo stream).\n  onAttached(event) {\n    if (event.detail.success) this.dialogTarget.close()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  validateFiles(event) {\n    const files = event.target.files\n    const maxFiles = 10\n    const maxSizeInMB = 10\n    const maxSizeInBytes = maxSizeInMB * 1024 * 1024\n    const allowedTypes = ['image/png', 'image/jpeg', 'image/jpg', 'image/webp']\n    \n    // Get current mockup count from the page if displayed\n    const currentCountElement = document.querySelector('[data-mockup-count]')\n    const currentCount = currentCountElement ? parseInt(currentCountElement.dataset.mockupCount) : 0\n    \n    // Check total file count\n    if (files.length + currentCount > maxFiles) {\n      alert(`You can only upload a maximum of ${maxFiles} mockup images total. You currently have ${currentCount} images.`)\n      event.target.value = ''\n      return false\n    }\n    \n    // Validate each file\n    for (let i = 0; i < files.length; i++) {\n      const file = files[i]\n      \n      // Check file type\n      if (!allowedTypes.includes(file.type)) {\n        alert(`File \"${file.name}\" is not a valid image type. Please upload PNG, JPEG, or WebP images only.`)\n        event.target.value = ''\n        return false\n      }\n      \n      // Check file size\n      if (file.size > maxSizeInBytes) {\n        const fileSizeInMB = (file.size / (1024 * 1024)).toFixed(2)\n        alert(`File \"${file.name}\" is too large (${fileSizeInMB}MB). Maximum file size is ${maxSizeInMB}MB.`)\n        event.target.value = ''\n        return false\n      }\n    }\n    \n    // Update preview count if validation passes\n    if (files.length > 0) {\n      const totalCount = files.length + currentCount\n      console.log(`Adding ${files.length} images. Total will be ${totalCount}/10`)\n    }\n    \n    return true\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\nimport { DirectUpload } from \"@rails/activestorage\"\n\nexport default class extends Controller {\n  static targets = [\"dropzone\", \"fileList\", \"progressContainer\", \"fileInput\"]\n  \n  connect() {\n    console.log('MockupUploader controller connected')\n    this.uploadQueue = []\n    this.isProcessing = false\n    this.catalogItemId = this.data.get(\"catalogItemId\")\n    this.uploadUrl = `/jobs/catalog_items/${this.catalogItemId}/attach_mockup_file`\n    \n    console.log('Catalog Item ID:', this.catalogItemId)\n    console.log('Available targets:', this.targets)\n    \n    // Setup dropzone after controller is connected\n    this.setupDropzone()\n  }\n\n  setupDropzone() {\n    // Find the dropzone element directly\n    const dropzone = this.element.querySelector('[data-mockup-uploader-target=\"dropzone\"]')\n    \n    if (!dropzone) {\n      console.error('Dropzone element not found in:', this.element)\n      return\n    }\n    \n    console.log('Setting up dropzone on element:', dropzone)\n    \n    // Bind this context to event handlers\n    const preventDefaults = (e) => {\n      e.preventDefault()\n      e.stopPropagation()\n    }\n    \n    const highlight = () => {\n      dropzone.classList.add('border-blue-500', 'bg-blue-50')\n    }\n    \n    const unhighlight = () => {\n      dropzone.classList.remove('border-blue-500', 'bg-blue-50')\n    }\n    \n    const handleDrop = (e) => {\n      preventDefaults(e)\n      unhighlight()\n      const files = e.dataTransfer.files\n      this.handleFiles(files)\n    }\n\n    // Prevent default drag behaviors\n    ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {\n      dropzone.addEventListener(eventName, preventDefaults, false)\n      document.body.addEventListener(eventName, preventDefaults, false)\n    });\n\n    // Highlight drop zone when item is dragged over it\n    ['dragenter', 'dragover'].forEach(eventName => {\n      dropzone.addEventListener(eventName, highlight, false)\n    });\n\n    ['dragleave', 'drop'].forEach(eventName => {\n      dropzone.addEventListener(eventName, unhighlight, false)\n    });\n\n    // Handle dropped files\n    dropzone.addEventListener('drop', handleDrop, false)\n    \n    console.log('Dropzone setup complete')\n  }\n\n\n  handleFileSelect(e) {\n    const files = e.target.files\n    this.handleFiles(files)\n  }\n\n  handleFiles(files) {\n    ([...files]).forEach(file => this.uploadFile(file))\n  }\n\n  async uploadFile(file) {\n    console.log('Uploading file:', file.name)\n    \n    // Validate file type\n    if (!this.isValidFileType(file)) {\n      alert(`Invalid file type: ${file.name}. Only PNG, JPG, and PSD files are allowed.`)\n      return\n    }\n\n    // Find progress container directly\n    const progressContainer = this.element.querySelector('[data-mockup-uploader-target=\"progressContainer\"]')\n    if (!progressContainer) {\n      console.error('Progress container not found')\n      return\n    }\n\n    // Create progress element\n    const progressId = `upload-${Date.now()}-${Math.random()}`\n    const progressHTML = `\n      <div id=\"${progressId}\" class=\"mb-3 p-3 bg-white border rounded-lg shadow-sm\">\n        <div class=\"flex justify-between items-center mb-2\">\n          <span class=\"text-sm font-medium text-gray-700\">${file.name}</span>\n          <span class=\"text-xs text-gray-500\">${this.formatFileSize(file.size)}</span>\n        </div>\n        <div class=\"w-full bg-gray-200 rounded-full h-2.5\">\n          <div class=\"bg-blue-600 h-2.5 rounded-full transition-all duration-300\" style=\"width: 0%\" data-progress-bar></div>\n        </div>\n        <div class=\"mt-1 text-xs text-gray-600\" data-status>Preparing upload...</div>\n      </div>\n    `\n    progressContainer.insertAdjacentHTML('beforeend', progressHTML)\n    \n    const progressElement = document.getElementById(progressId)\n    const progressBar = progressElement.querySelector('[data-progress-bar]')\n    const statusText = progressElement.querySelector('[data-status]')\n\n    try {\n      // Create a form data object\n      const formData = new FormData()\n      const csrfToken = document.querySelector('[name=\"csrf-token\"]').content\n      \n      // Use Active Storage Direct Upload for large files\n      const upload = new DirectUpload(file, \"/rails/active_storage/direct_uploads\")\n      \n      upload.create((error, blob) => {\n        if (error) {\n          statusText.textContent = `Error: ${error}`\n          progressBar.classList.remove('bg-blue-600')\n          progressBar.classList.add('bg-red-600')\n        } else {\n          // Now attach the blob to the catalog item\n          this.attachBlobToCatalogItem(blob, file.name, progressBar, statusText, progressElement)\n        }\n      })\n\n      // Track upload progress\n      upload.upload.requestDidProgress = (event) => {\n        const progress = event.loaded / event.total * 100\n        progressBar.style.width = `${progress}%`\n        statusText.textContent = `Uploading... ${Math.round(progress)}%`\n      }\n\n    } catch (error) {\n      console.error('Upload error:', error)\n      statusText.textContent = `Error: ${error.message}`\n      progressBar.classList.remove('bg-blue-600')\n      progressBar.classList.add('bg-red-600')\n    }\n  }\n\n  async attachBlobToCatalogItem(blob, filename, progressBar, statusText, progressElement) {\n    try {\n      const csrfToken = document.querySelector('[name=\"csrf-token\"]').content\n      \n      // First try to get Turbo Stream response for better UX\n      const response = await fetch(this.uploadUrl, {\n        method: 'POST',\n        headers: {\n          'X-CSRF-Token': csrfToken,\n          'Accept': 'text/vnd.turbo-stream.html, application/json',\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          file: blob.signed_id,\n          authenticity_token: csrfToken\n        })\n      })\n\n      if (response.ok) {\n        const contentType = response.headers.get('content-type')\n        \n        if (contentType && contentType.includes('text/vnd.turbo-stream.html')) {\n          // Handle Turbo Stream response\n          const turboStreamHTML = await response.text()\n          Turbo.renderStreamMessage(turboStreamHTML)\n        } else {\n          // Handle JSON response as fallback\n          const result = await response.json()\n        }\n        \n        progressBar.classList.remove('bg-blue-600')\n        progressBar.classList.add('bg-green-600')\n        statusText.textContent = 'Upload complete!'\n        \n        // Remove progress indicator after 3 seconds\n        setTimeout(() => {\n          progressElement.classList.add('transition-opacity', 'duration-500', 'opacity-0')\n          setTimeout(() => progressElement.remove(), 500)\n        }, 3000)\n      } else {\n        const errorText = await response.text()\n        throw new Error(`Failed to attach file: ${errorText}`)\n      }\n    } catch (error) {\n      console.error('Attach error:', error)\n      statusText.textContent = `Error: ${error.message}`\n      progressBar.classList.remove('bg-blue-600')\n      progressBar.classList.add('bg-red-600')\n    }\n  }\n\n\n  isValidFileType(file) {\n    const allowedTypes = [\n      'image/png', \n      'image/jpeg', \n      'image/jpg', \n      'image/vnd.adobe.photoshop', \n      'application/x-photoshop'\n    ]\n    const allowedExtensions = ['.png', '.jpg', '.jpeg', '.psd']\n    \n    const hasValidType = allowedTypes.includes(file.type)\n    const hasValidExtension = allowedExtensions.some(ext => \n      file.name.toLowerCase().endsWith(ext)\n    )\n    \n    return hasValidType || hasValidExtension\n  }\n\n  formatFileSize(bytes) {\n    if (bytes === 0) return '0 Bytes'\n    const k = 1024\n    const sizes = ['Bytes', 'KB', 'MB', 'GB']\n    const i = Math.floor(Math.log(bytes) / Math.log(k))\n    return Math.round(bytes / Math.pow(k, i) * 100) / 100 + ' ' + sizes[i]\n  }\n\n  openFileDialog() {\n    const fileInput = this.element.querySelector('[data-mockup-uploader-target=\"fileInput\"]')\n    if (!fileInput) {\n      console.error('File input not found')\n      return\n    }\n    fileInput.click()\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Reveals the optional listing-video controls and keeps their plain-language\n// duration and generation summary in sync. Rails remains authoritative for all\n// eligibility, dimensions, and submitted values.\nexport default class extends Controller {\n  static targets = [ \"toggle\", \"controls\", \"duration\", \"durationText\", \"summary\" ]\n\n  connect() {\n    this.sync()\n  }\n\n  toggle() {\n    this.sync()\n  }\n\n  update() {\n    const seconds = this.durationTarget.value\n    const durationValid = seconds !== \"\" && this.durationTarget.checkValidity()\n    const durationText = durationValid\n      ? `${seconds} seconds`\n      : `Choose ${this.durationTarget.min} to ${this.durationTarget.max} seconds`\n    this.durationTextTargets.forEach((target) => { target.textContent = durationText })\n\n    // Count the per-card \"In video\" boxes, not the Generate boxes: the summary\n    // reflects the mockups that will actually feed the listing video (its subset).\n    const mockupCount = this.element.querySelectorAll('input[name=\"video_template_ids[]\"]:checked').length\n    const mockupLabel = mockupCount === 1 ? \"mockup\" : \"mockups\"\n    const mockupSummary = `${mockupCount} ${mockupLabel}`\n    this.summaryTarget.textContent = this.toggleTarget.checked\n      ? durationValid\n        ? `${mockupSummary} plus one ${seconds}-second video`\n        : `${mockupSummary} plus one listing video`\n      : mockupSummary\n  }\n\n  sync() {\n    const enabled = this.toggleTarget.checked\n    this.controlsTarget.hidden = !enabled\n    this.controlsTarget.querySelectorAll(\"input, select\").forEach((control) => {\n      control.disabled = !enabled\n    })\n    this.update()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Live \"In video\" selection counter for the results-page create/regenerate\n// form. Counts the checked per-mockup boxes, updates the \"N of MAX selected\"\n// readout, and disables the submit when the selection is empty or over the cap.\n// The server (create_video) enforces the same cap; this is fast feedback only.\n//\n// The form only carries this controller while no render is in flight - when a\n// video or output is still pending the boxes and submit are server-rendered\n// disabled and the page auto-reloads - so the controller never fights that\n// disabled state.\nexport default class extends Controller {\n  static targets = [\"checkbox\", \"count\", \"submit\"]\n  static values = { max: Number }\n\n  connect() {\n    this.update()\n  }\n\n  update() {\n    const selected = this.checkboxTargets.filter((box) => box.checked).length\n\n    if (this.hasCountTarget) {\n      this.countTarget.textContent = `${selected} of ${this.maxValue} selected`\n    }\n\n    if (this.hasSubmitTarget) {\n      this.submitTarget.disabled = selected === 0 || selected > this.maxValue\n    }\n  }\n}\n", "\nimport { Controller } from \"@hotwired/stimulus\";\nimport { Modal } from \"flowbite\";\n\n// Connects to data-controller=\"modal\"\nexport default class extends Controller {\n  static values = {\n    startOpen: { type: Boolean, default: false },\n  };\n\n  connect() {\n    this.modalElement = this.element.querySelector(\".modal\");\n    if (!this.modalElement) this.modalElement = this.element;\n\n    const options = {\n      placement: \"center\",\n      backdrop: false, // Disable Flowbite's backdrop since we have our own\n      closable: true,\n    };\n\n    this.modal = new Modal(this.modalElement, options);\n    if (this.startOpenValue) this.modal.show();\n  }\n\n  disconnect() {\n    // Clean up modal and backdrop when controller is disconnected\n    if (this.modal) {\n      this.modal.hide();\n      \n      // Remove any backdrop elements created by Flowbite\n      // Flowbite creates backdrop with [modal-backdrop] attribute\n      const backdrops = document.querySelectorAll('[modal-backdrop]');\n      backdrops.forEach(backdrop => backdrop.remove());\n      \n      // Also remove any other modal-related elements that might be orphaned\n      const modalBackdrops = document.querySelectorAll('.modal-backdrop');\n      modalBackdrops.forEach(backdrop => backdrop.remove());\n    }\n  }\n\n  close(e) {\n    e.preventDefault();\n    this.modal.hide();\n  }\n\n  closeOnBackdrop(e) {\n    if (e.target === this.element) {\n      e.preventDefault();\n      this.modal.hide();\n    }\n  }\n\n  submitAndClose(e) {\n    let form = this.modalElement.querySelector(\"form\");\n    if (form) {\n      form.requestSubmit();\n    }\n\n    this.modal.hide();\n  }\n\n  open(e) {\n    e.preventDefault();\n    this.modal.show();\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"menu\"]\n\n  toggle(event) {\n    event.stopPropagation()\n    const wasOpen = !this.menuTarget.classList.contains(\"hidden\")\n\n    // Close all other nav dropdowns first\n    document.querySelectorAll('[data-controller=\"nav-dropdown\"] [data-nav-dropdown-target=\"menu\"]').forEach(menu => {\n      menu.classList.add(\"hidden\")\n    })\n\n    if (!wasOpen) {\n      this.menuTarget.classList.remove(\"hidden\")\n    }\n  }\n\n  closeOnOutsideClick(event) {\n    if (!this.element.contains(event.target)) {\n      this.menuTarget.classList.add(\"hidden\")\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport consumer from \"../channels/consumer\"\n\nexport default class extends Controller {\n  static targets = [\"badge\", \"list\", \"placeholder\", \"notification\"]\n  static values = {\n    accountId: String, // Current account ID\n    accountUnread: Number, // Unread count for the current account\n    totalUnread: Number, // Unread count across all the user's accounts\n  }\n\n  connect() {\n    this.subscription = consumer.subscriptions.create({ channel: \"NotificationChannel\" }, {\n      connected: this._connected.bind(this),\n      disconnected: this._disconnected.bind(this),\n      received: this._received.bind(this)\n    })\n\n    if (this.hasUnread()) this.showUnreadBadge()\n  }\n\n  disconnect() {\n    this.subscription.unsubscribe()\n  }\n\n  _connected() {\n  }\n\n  _disconnected() {\n  }\n\n  _received(data) {\n    this.totalUnreadValue += 1\n\n    if (data.account_id && data.account_id == this.accountIdValue) {\n      this.accountUnreadValue += 1\n    }\n\n    // Ignore if user is signed in to a different account\n    if (data.account_id && data.account_id != this.accountIdValue) {\n      return\n    }\n\n    // Regular notifications get added to the navbar\n    if (data.html) {\n      this.listTarget.insertAdjacentHTML('afterbegin', data.html)\n      this.showUnreadBadge()\n    }\n\n    // Native notifications trigger a browser notification\n    if (data.browser) {\n      this.checkPermissionAndNotify(data.browser)\n    }\n  }\n\n  // Called when the notifications view opens\n  open() {\n    this.hideUnreadBadge()\n    this.markAllAsRead()\n  }\n\n  hasUnread() {\n    return !!this.accountUnreadValue\n  }\n\n  showUnreadBadge() {\n    if (this.hasBadgeTarget == false) { return }\n    this.badgeTarget.classList.remove(\"hidden\")\n  }\n\n  hideUnreadBadge() {\n    if (this.hasBadgeTarget == false) { return }\n    this.badgeTarget.classList.add(\"hidden\")\n  }\n\n  markAllAsRead() {\n    let ids = this.notificationTargets.map((target) => target.dataset.id)\n    this.subscription.perform(\"mark_as_read\", {ids: ids})\n\n    this.accountUnreadValue = 0\n    this.totalUnreadValue -= ids.length\n  }\n\n  markAsInteracted(event) {\n    let id = event.currentTarget.dataset.id\n    if (id == null) return\n    this.subscription.perform(\"mark_as_interacted\", {ids: [id]})\n\n    // Uncomment to visually mark notification as interacted\n    // event.currentTarget.dataset.interactedAt = new Date()\n  }\n\n  // Browser notifications\n  checkPermissionAndNotify(data) {\n    // Return if not supported\n    if (!(\"Notification\" in window)) return\n\n    if (Notification.permission === \"granted\") {\n      this.browserNotification(data)\n\n    } else if (Notification.permission !== \"denied\") {\n      Notification.requestPermission().then((permission) => {\n        if (permission === \"granted\") {\n          this.browserNotification(data)\n        }\n      })\n    }\n  }\n\n  browserNotification(data) {\n    new Notification(data.title, data.options)\n  }\n\n  // Automatically sync count to Native apps\n  totalUnreadValueChanged() {\n    this.syncCountToNative()\n  }\n\n  // Automatically sync count to Native apps\n  accountUnreadValueChanged() {\n    this.syncCountToNative()\n  }\n\n  // Update the mobile device with the current unread count\n  syncCountToNative() {\n    window.TurboNativeBridge.setNotificationCount(this.totalUnreadValue, this.accountUnreadValue)\n  }\n}\n", "// app/javascript/controllers/order_item_controller.js\nimport { Controller } from \"@hotwired/stimulus\";\nimport { Turbo } from \"@hotwired/turbo-rails\"\n\nexport default class extends Controller {\n    // static targets = [\"engravedLid\", \"engravedLidText\", \"giftCard\"];\n    static targets = [\"engravedLid\", \"engravedLidText\"];\n    static values = {\n        url: String\n    }\n\n    initialize() {\n    }\n\n    connect() {\n        // Ensure the engraved text field visibility matches the checkbox state\n        // Scope strictly to this controller's element to avoid cross-form interference\n        if (this.hasEngravedLidTarget && this.hasEngravedLidTextTarget) {\n            this.engravedLidTextTarget.classList.toggle(\"hidden\", !this.engravedLidTarget.checked);\n        }\n    }\n\n    toggleFields(event) {\n        if (event) {\n            event.preventDefault();\n            // Avoid any parent listeners or default link-like behaviors causing scroll jumps\n            event.stopPropagation();\n        }\n\n        // Derive the correct elements from the event's form to guarantee proper scoping\n        const form = event?.currentTarget?.closest(\"form\") || this.element;\n        const checkbox = form.querySelector(\"[data-order-item-target='engravedLid']\");\n        const textInput = form.querySelector(\"[data-order-item-target='engravedLidText']\");\n\n        if (textInput && checkbox) {\n            textInput.classList.toggle(\"hidden\", !checkbox.checked);\n        }\n\n        // Update the server using values scoped to this specific form instance\n        this.update(event);\n    }\n\n    update(event) {\n        // const url = this.data.get(\"order-item-url-value\");\n        if (event) event.preventDefault();\n        const url = this.urlValue;\n        const formData = new FormData();\n\n        // Scope field lookups to the event's owning form or this controller element\n        const form = event?.currentTarget?.closest(\"form\") || this.element;\n        const checkbox = form.querySelector(\"[data-order-item-target='engravedLid']\");\n        const textInput = form.querySelector(\"[data-order-item-target='engravedLidText']\");\n\n        formData.append(\"order_item[engraved_lid]\", checkbox ? checkbox.checked : false);\n        formData.append(\"order_item[engraved_lid_text]\", textInput ? textInput.value : \"\");\n        // formData.append(\"order_item[gift_card]\", this.giftCardTarget.checked);\n\n        // Capture current scroll position to prevent perceived \"jumping\" during DOM replacement\n        const { scrollX, scrollY } = window;\n\n        fetch(url, {\n            method: \"PATCH\",\n            headers: {\n                \"X-CSRF-Token\": document.querySelector(\"[name='csrf-token']\").content,\n                Accept: \"text/vnd.turbo-stream.html\"\n            },\n            body: formData,\n        })\n            .then((response) => response.text())\n            .then((html) => {\n                Turbo.renderStreamMessage(html);\n                // Restore scroll position after Turbo Streams mutate the DOM\n                // Use rAF to ensure this runs after layout\n                requestAnimationFrame(() => {\n                    window.scrollTo(scrollX, scrollY);\n                });\n            })\n            .catch(() => {\n                // On error, do nothing special; avoid console noise per guidelines\n            });\n    }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Print-zone placement editor. Drags/resizes an overlay box that the mockup\n// preview renders the print file inside (object-contain). Because object-contain\n// silently letterboxes a wrong-ratio box instead of distorting it, resize is\n// locked to the location's physical print ratio so the editor is WYSIWYG with\n// the preview. Saves report an explicit saving/saved/failed state.\nexport default class extends Controller {\n  static targets = [\"container\", \"overlay\", \"handle\", \"coordinates\", \"variantSelect\", \"status\", \"badge\", \"removeOverride\"]\n  static values = {\n    catalogItemId: Number,\n    locationIdentifier: String,\n    saveUrl: String,\n    xPercent: { type: Number, default: 25.0 },\n    yPercent: { type: Number, default: 18.0 },\n    widthPercent: { type: Number, default: 50.0 },\n    heightPercent: { type: Number, default: 45.0 },\n    // Physical print dimensions (inches) \u2014 drive the aspect-ratio lock. 0 = unknown.\n    printWidthIn: { type: Number, default: 0 },\n    printHeightIn: { type: Number, default: 0 },\n    // Spec-derived default box (computed server-side) used by reset().\n    defaultX: { type: Number, default: 25.0 },\n    defaultY: { type: Number, default: 18.0 },\n    defaultWidth: { type: Number, default: 50.0 },\n    defaultHeight: { type: Number, default: 45.0 },\n    // Per-color overrides (#908): the selected color and the location's base config.\n    currentColor: { type: String, default: \"\" },\n    baseConfig: { type: Object, default: {} }\n  }\n\n  static MIN_PERCENT = 4 // smallest usable box edge, in % of container\n\n  connect() {\n    this.isDragging = false\n    this.isResizing = false\n    this.currentHandle = null\n    this.saveTimeout = null\n    this.abortController = null\n    this.savePending = false\n    this.dirty = false\n\n    this.boundPointerMove = this.handlePointerMove.bind(this)\n    this.boundPointerUp = this.handlePointerUp.bind(this)\n    this.boundBeforeUnload = this.handleBeforeUnload.bind(this)\n\n    this.measureContainer()\n    this.selfHealRatio()\n    this.updateOverlayPosition()\n    this.updateCoordinatesDisplay()\n    if (this.hasVariantSelectTarget) this.syncVariantState({ loadConfig: false })\n\n    window.addEventListener(\"beforeunload\", this.boundBeforeUnload)\n  }\n\n  disconnect() {\n    this.endGesture()\n    if (this.saveTimeout) clearTimeout(this.saveTimeout)\n    if (this.statusFadeTimeout) clearTimeout(this.statusFadeTimeout)\n    if (this.abortController) this.abortController.abort()\n    window.removeEventListener(\"beforeunload\", this.boundBeforeUnload)\n  }\n\n  // ---- ratio helpers -------------------------------------------------------\n\n  get hasRatioLock() {\n    return this.printWidthInValue > 0 && this.printHeightInValue > 0\n  }\n\n  // ratioPct = box width% / box height%, the value that makes the box's on-screen\n  // px aspect ratio equal the physical print ratio. containerAspect is cH/cW.\n  get ratioPct() {\n    return (this.printWidthInValue / this.printHeightInValue) * this.containerAspect\n  }\n\n  measureContainer() {\n    const rect = this.containerTarget.getBoundingClientRect()\n    this.containerWidth = rect.width\n    this.containerHeight = rect.height\n    // CSS pins the container to aspect-ratio 4/5; fall back to that if unlaid-out.\n    this.containerAspect = rect.width > 0 ? rect.height / rect.width : 5 / 4\n  }\n\n  // Snap a legacy/skewed box to the spec ratio for display only. The correction\n  // is NOT persisted on load: the displayed value may be a per-color override, so\n  // writing it to the base (or any scope) on connect would silently corrupt data.\n  // It persists to the correct scope on the admin's next real edit.\n  selfHealRatio() {\n    if (!this.hasRatioLock) return\n    const expectedHeight = this.widthPercentValue / this.ratioPct\n    const deviation = Math.abs(expectedHeight - this.heightPercentValue) / expectedHeight\n    if (deviation > 0.005) {\n      this.heightPercentValue = this.clampHeightToBounds(this.yPercentValue, expectedHeight)\n      this.widthPercentValue = this.heightPercentValue * this.ratioPct\n    }\n  }\n\n  clampHeightToBounds(y, height) {\n    return Math.min(height, 100 - y)\n  }\n\n  // ---- variant image -------------------------------------------------------\n\n  variantChanged() {\n    const option = this.selectedOption()\n    if (!option) return\n    const imageUrl = option.dataset.imageUrl\n    if (imageUrl) {\n      const img = this.containerTarget.querySelector(\"img\")\n      if (img) img.src = imageUrl\n    }\n    this.syncVariantState({ loadConfig: true })\n  }\n\n  selectedOption() {\n    if (!this.hasVariantSelectTarget) return null\n    const select = this.variantSelectTarget\n    return select.options[select.selectedIndex]\n  }\n\n  // Reflect the selected color into the editor: which color is active, its\n  // effective placement, and whether it's a custom override or the shared default.\n  syncVariantState({ loadConfig }) {\n    const option = this.selectedOption()\n    if (!option) return\n\n    this.currentColorValue = option.dataset.color || \"\"\n\n    if (loadConfig) {\n      const config = this.parseConfig(option.dataset.config) || this.baseConfigValue\n      this.applyConfig(config)\n    }\n\n    this.updateBadge(option.dataset.isOverride === \"true\")\n  }\n\n  parseConfig(json) {\n    if (!json) return null\n    try { return JSON.parse(json) } catch (_) { return null }\n  }\n\n  applyConfig(config) {\n    if (!config) return\n    if (config.x_percent != null) this.xPercentValue = config.x_percent\n    if (config.y_percent != null) this.yPercentValue = config.y_percent\n    if (config.width_percent != null) this.widthPercentValue = config.width_percent\n    if (config.height_percent != null) this.heightPercentValue = config.height_percent\n    // Normalize skewed/legacy heights to the print ratio, same as connect() does on\n    // first paint, so a box renders identically no matter the entry path (initial\n    // load vs. switching variant). Without this, the first-loaded variant looked\n    // healed while every switched-to variant rendered the raw, possibly skewed box.\n    // Re-measure first (like connect): a variant switch can happen after the\n    // container was laid out/resized, so the ratio must heal against a fresh aspect.\n    this.measureContainer()\n    this.selfHealRatio()\n    this.updateOverlayPosition()\n    this.updateCoordinatesDisplay()\n  }\n\n  updateBadge(isOverride) {\n    if (this.hasBadgeTarget) {\n      if (isOverride) {\n        this.badgeTarget.textContent = `Custom \u2014 ${this.currentColorValue}`\n        this.badgeTarget.className = \"text-xs font-medium px-2 py-0.5 rounded-full bg-blue-100 text-blue-700\"\n      } else {\n        this.badgeTarget.textContent = \"Default placement\"\n        this.badgeTarget.className = \"text-xs font-medium px-2 py-0.5 rounded-full bg-gray-100 text-gray-600\"\n      }\n    }\n    if (this.hasRemoveOverrideTarget) {\n      this.removeOverrideTarget.classList.toggle(\"hidden\", !isOverride)\n    }\n  }\n\n  // ---- gestures ------------------------------------------------------------\n\n  startDrag(event) {\n    if (event.target.hasAttribute(\"data-overlay-editor-handle\")) return // resize handles itself\n\n    event.preventDefault()\n    this.isDragging = true\n    this.beginGesture(event)\n    this.overlayTarget.style.cursor = \"grabbing\"\n  }\n\n  startResize(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    this.isResizing = true\n    this.currentHandle = event.target.dataset.handle\n    this.beginGesture(event)\n  }\n\n  beginGesture(event) {\n    this.measureContainer()\n    this.startX = event.clientX\n    this.startY = event.clientY\n    this.startLeft = this.xPercentValue\n    this.startTop = this.yPercentValue\n    this.startWidth = this.widthPercentValue\n    this.startHeight = this.heightPercentValue\n\n    if (event.pointerId != null && this.overlayTarget.setPointerCapture) {\n      try { this.overlayTarget.setPointerCapture(event.pointerId) } catch (_) { /* noop */ }\n      this.capturedPointerId = event.pointerId\n    }\n    document.addEventListener(\"pointermove\", this.boundPointerMove)\n    document.addEventListener(\"pointerup\", this.boundPointerUp)\n  }\n\n  handlePointerMove(event) {\n    if (this.isDragging) this.handleDragMove(event)\n    else if (this.isResizing) this.handleResizeMove(event)\n  }\n\n  handleDragMove(event) {\n    const deltaXPercent = ((event.clientX - this.startX) / this.containerWidth) * 100\n    const deltaYPercent = ((event.clientY - this.startY) / this.containerHeight) * 100\n\n    const newX = Math.max(0, Math.min(100 - this.widthPercentValue, this.startLeft + deltaXPercent))\n    const newY = Math.max(0, Math.min(100 - this.heightPercentValue, this.startTop + deltaYPercent))\n\n    this.xPercentValue = newX\n    this.yPercentValue = newY\n    this.afterGeometryChange()\n  }\n\n  handleResizeMove(event) {\n    const dxPct = ((event.clientX - this.startX) / this.containerWidth) * 100\n    const dyPct = ((event.clientY - this.startY) / this.containerHeight) * 100\n\n    // Anchor = the corner opposite the grabbed handle; it stays fixed.\n    const handle = this.currentHandle\n    const growRight = handle === \"se\" || handle === \"ne\"\n    const growDown = handle === \"se\" || handle === \"sw\"\n    const anchorX = growRight ? this.startLeft : this.startLeft + this.startWidth\n    const anchorY = growDown ? this.startTop : this.startTop + this.startHeight\n    const signX = growRight ? 1 : -1\n    const signY = growDown ? 1 : -1\n\n    let newWidth = this.startWidth + signX * dxPct\n    let newHeight = this.startHeight + signY * dyPct\n\n    if (this.hasRatioLock) {\n      const ratio = this.ratioPct\n      // Drive off the dominant axis, derive the other from the locked ratio.\n      if (Math.abs(dxPct) >= Math.abs(dyPct * ratio)) {\n        newHeight = newWidth / ratio\n      } else {\n        newWidth = newHeight * ratio\n      }\n      // Clamp the pair: min-size and container edges, anchored, never one axis alone.\n      const fit = this.fitRatioLockedBox(newWidth, anchorX, anchorY, growRight, growDown, ratio)\n      newWidth = fit.width\n      newHeight = fit.height\n    } else {\n      newWidth = Math.max(this.constructor.MIN_PERCENT, newWidth)\n      newHeight = Math.max(this.constructor.MIN_PERCENT, newHeight)\n      const maxW = growRight ? 100 - anchorX : anchorX\n      const maxH = growDown ? 100 - anchorY : anchorY\n      newWidth = Math.min(newWidth, maxW)\n      newHeight = Math.min(newHeight, maxH)\n    }\n\n    this.widthPercentValue = newWidth\n    this.heightPercentValue = newHeight\n    this.xPercentValue = growRight ? anchorX : anchorX - newWidth\n    this.yPercentValue = growDown ? anchorY : anchorY - newHeight\n    this.afterGeometryChange()\n  }\n\n  // Largest ratio-locked box anchored at (anchorX, anchorY) that fits the\n  // container and respects min-size. Returns clamped {width, height}.\n  fitRatioLockedBox(desiredWidth, anchorX, anchorY, growRight, growDown, ratio) {\n    const MIN = this.constructor.MIN_PERCENT\n    const maxWByX = growRight ? 100 - anchorX : anchorX\n    const maxHByY = growDown ? 100 - anchorY : anchorY\n    const maxWidth = Math.min(maxWByX, maxHByY * ratio)\n\n    let width = Math.min(desiredWidth, maxWidth)\n    width = Math.max(width, MIN, MIN * ratio)\n    width = Math.min(width, maxWidth) // re-cap in case the min pushed past the edge\n    return { width, height: width / ratio }\n  }\n\n  handlePointerUp() {\n    const wasActive = this.isDragging || this.isResizing\n    this.endGesture()\n    if (wasActive) {\n      this.markDirty()\n      this.save() // save on release, not mid-gesture\n    }\n  }\n\n  endGesture() {\n    this.isDragging = false\n    this.isResizing = false\n    this.currentHandle = null\n    if (this.capturedPointerId != null && this.hasOverlayTarget && this.overlayTarget.releasePointerCapture) {\n      try { this.overlayTarget.releasePointerCapture(this.capturedPointerId) } catch (_) { /* noop */ }\n      this.capturedPointerId = null\n    }\n    document.removeEventListener(\"pointermove\", this.boundPointerMove)\n    document.removeEventListener(\"pointerup\", this.boundPointerUp)\n    if (this.hasOverlayTarget) this.overlayTarget.style.cursor = \"grab\"\n  }\n\n  // ---- keyboard ------------------------------------------------------------\n\n  handleKeydown(event) {\n    // Escape mid-gesture cancels and restores gesture-start geometry.\n    if (event.key === \"Escape\" && (this.isDragging || this.isResizing)) {\n      this.xPercentValue = this.startLeft\n      this.yPercentValue = this.startTop\n      this.widthPercentValue = this.startWidth\n      this.heightPercentValue = this.startHeight\n      this.endGesture()\n      this.updateOverlayPosition()\n      this.updateCoordinatesDisplay()\n      return\n    }\n\n    const step = event.shiftKey ? 1.0 : 0.1\n    let handled = true\n    switch (event.key) {\n      case \"ArrowLeft\": this.nudge(-step, 0); break\n      case \"ArrowRight\": this.nudge(step, 0); break\n      case \"ArrowUp\": this.nudge(0, -step); break\n      case \"ArrowDown\": this.nudge(0, step); break\n      default: handled = false\n    }\n    if (handled) {\n      event.preventDefault()\n      this.markDirty()\n      this.updateOverlayPosition()\n      this.updateCoordinatesDisplay()\n      this.scheduleSave() // coalesce rapid key taps into one save\n    }\n  }\n\n  nudge(dx, dy) {\n    this.xPercentValue = Math.max(0, Math.min(100 - this.widthPercentValue, this.xPercentValue + dx))\n    this.yPercentValue = Math.max(0, Math.min(100 - this.heightPercentValue, this.yPercentValue + dy))\n  }\n\n  // ---- rendering -----------------------------------------------------------\n\n  afterGeometryChange() {\n    this.updateOverlayPosition()\n    this.updateCoordinatesDisplay()\n  }\n\n  updateOverlayPosition() {\n    this.overlayTarget.style.left = `${this.xPercentValue}%`\n    this.overlayTarget.style.top = `${this.yPercentValue}%`\n    this.overlayTarget.style.width = `${this.widthPercentValue}%`\n    this.overlayTarget.style.height = `${this.heightPercentValue}%`\n  }\n\n  updateCoordinatesDisplay() {\n    if (!this.hasCoordinatesTarget) return\n    const dims = this.hasRatioLock\n      ? `${this.formatIn(this.printWidthInValue)}\u2033 \u00D7 ${this.formatIn(this.printHeightInValue)}\u2033 \u00B7 `\n      : \"\"\n    this.coordinatesTarget.textContent =\n      `${dims}X ${this.xPercentValue.toFixed(1)}% \u00B7 Y ${this.yPercentValue.toFixed(1)}% \u00B7 ` +\n      `W ${this.widthPercentValue.toFixed(1)}% \u00B7 H ${this.heightPercentValue.toFixed(1)}%`\n  }\n\n  formatIn(value) {\n    return Number.isInteger(value) ? value.toString() : value.toFixed(1)\n  }\n\n  // ---- save lifecycle ------------------------------------------------------\n\n  markDirty() {\n    this.dirty = true\n  }\n\n  scheduleSave(delay = 300) {\n    if (this.saveTimeout) clearTimeout(this.saveTimeout)\n    this.saveTimeout = setTimeout(() => this.save(), delay)\n  }\n\n  currentGeometry() {\n    return {\n      x_percent: this.xPercentValue,\n      y_percent: this.yPercentValue,\n      width_percent: this.widthPercentValue,\n      height_percent: this.heightPercentValue\n    }\n  }\n\n  // A normal save: scoped to the selected color (override) when one is active,\n  // else the shared base config. Snapshots color/geometry at call time so both the\n  // ack (mark every option of that color) and a later Retry replay the SAME write,\n  // even if the user switched color in between.\n  save() {\n    const color = this.currentColorValue || undefined\n    const geometry = this.currentGeometry()\n    this.lastOperation = () => this.performSave(color, geometry)\n    return this.performSave(color, geometry)\n  }\n\n  performSave(color, geometry) {\n    return this.sendOverlay(\n      { overlay_config: geometry, color },\n      (data) => {\n        if (data.scope && data.scope !== \"base\") {\n          this.markOverride(color, geometry)\n        } else {\n          // Base-scope save \u2014 happens when save() sends no color (an item with no\n          // color axis). The shared base changed, so refresh every option that\n          // inherits it; same staleness fix markOverride applies per color.\n          this.syncBaseToOptions(geometry)\n        }\n      }\n    )\n  }\n\n  // Replay the last write (save/apply/remove) \u2014 wired to the failed-save Retry\n  // button so retry repeats the original operation with its captured args.\n  retry() {\n    if (this.lastOperation) this.lastOperation()\n  }\n\n  async sendOverlay(payload, onSuccess) {\n    if (this.saveTimeout) {\n      clearTimeout(this.saveTimeout)\n      this.saveTimeout = null\n    }\n    // Abort any in-flight save so a slow earlier response can't overwrite a newer ack.\n    if (this.abortController) this.abortController.abort()\n    this.abortController = new AbortController()\n\n    this.savePending = true\n    this.setStatus(\"saving\")\n\n    const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.content\n\n    try {\n      const response = await fetch(this.saveUrlValue, {\n        method: \"PATCH\",\n        signal: this.abortController.signal,\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"X-CSRF-Token\": csrfToken,\n          \"Accept\": \"application/json\"\n        },\n        body: JSON.stringify({ location_identifier: this.locationIdentifierValue, ...payload })\n      })\n\n      this.savePending = false\n      if (response.ok) {\n        const data = await response.json().catch(() => ({}))\n        this.dirty = false\n        this.setStatus(\"saved\")\n        if (onSuccess) onSuccess(data)\n      } else {\n        const body = await response.json().catch(() => ({}))\n        this.setStatus(\"failed\", body.error)\n      }\n    } catch (error) {\n      if (error.name === \"AbortError\") return // superseded by a newer save\n      this.savePending = false\n      this.setStatus(\"failed\", \"Network error\")\n    }\n  }\n\n  // ---- per-color overrides (#908) ------------------------------------------\n\n  // Promote the current placement to the base and clear every color override.\n  applyToAll() {\n    const count = this.overrideColorCount()\n    const message = count > 0\n      ? `Apply this placement to all colors? This removes ${count} custom override${count === 1 ? \"\" : \"s\"}.`\n      : \"Apply this placement to all colors?\"\n    if (!window.confirm(message)) return\n    this.performApplyToAll(this.currentGeometry())\n  }\n\n  performApplyToAll(config) {\n    this.lastOperation = () => this.performApplyToAll(config)\n    this.sendOverlay({ overlay_config: config, apply_to_all: true }, () => {\n      this.baseConfigValue = config\n      this.eachVariantOption((option) => {\n        option.dataset.isOverride = \"false\"\n        option.dataset.config = JSON.stringify(config)\n        this.removeOverrideMarker(option)\n      })\n      this.updateBadge(false)\n    })\n  }\n\n  // Delete the selected color's override; it falls back to the base config.\n  removeOverride() {\n    const color = this.currentColorValue\n    if (!color) return\n    this.performRemoveOverride(color)\n  }\n\n  performRemoveOverride(color) {\n    this.lastOperation = () => this.performRemoveOverride(color)\n    this.sendOverlay({ color, remove: true }, () => {\n      // The override is removed for the whole color, so every size of that color\n      // falls back to the base config \u2014 sync all their cached options, not just one.\n      const baseJson = JSON.stringify(this.baseConfigValue)\n      this.eachColorOption(color, (option) => {\n        option.dataset.isOverride = \"false\"\n        option.dataset.config = baseJson\n        this.removeOverrideMarker(option)\n      })\n      // Only disturb the visible box/badge if that color is still the one shown\n      // (the user may have switched away before a retry resolved).\n      const selected = this.selectedOption()\n      if (selected && selected.dataset.color === color) {\n        this.applyConfig(this.baseConfigValue)\n        this.updateBadge(false)\n      }\n    })\n  }\n\n  // Mark every option of the saved color as a custom override and refresh their\n  // cached config. Placement is stored per color+location (never per size), so all\n  // sizes of the color must reflect the just-saved box \u2014 otherwise switching size\n  // mid-session shows a stale per-size cache. Only flips the badge if the shown\n  // option still belongs to that color.\n  markOverride(color, geometry) {\n    if (!color) return\n    const json = JSON.stringify(geometry)\n    this.eachColorOption(color, (option) => {\n      option.dataset.isOverride = \"true\"\n      option.dataset.config = json\n      this.addOverrideMarker(option)\n    })\n    const selected = this.selectedOption()\n    if (selected && selected.dataset.color === color) this.updateBadge(true)\n  }\n\n  eachVariantOption(callback) {\n    if (!this.hasVariantSelectTarget) return\n    Array.from(this.variantSelectTarget.options).forEach(callback)\n  }\n\n  // Refresh the cached config of every option that inherits the base placement\n  // (no per-color override), so all sizes reflect a base-scope save without a\n  // reload. Override options keep their own cached config.\n  syncBaseToOptions(geometry) {\n    this.baseConfigValue = geometry\n    const json = JSON.stringify(geometry)\n    this.eachVariantOption((option) => {\n      if (option.dataset.isOverride !== \"true\") option.dataset.config = json\n    })\n  }\n\n  // Run a callback over every dropdown option sharing a color \u2014 the unit that a\n  // per-color override applies to (all of that color's sizes).\n  eachColorOption(color, callback) {\n    if (!color) return\n    this.eachVariantOption((option) => {\n      if (option.dataset.color === color) callback(option)\n    })\n  }\n\n  // Distinct colors that carry a custom override. Overrides are per color, but\n  // every size-option of that color mirrors the flag, so count distinct colors \u2014\n  // not options \u2014 for the \"removes N overrides\" apply-to-all confirmation.\n  overrideColorCount() {\n    const colors = new Set()\n    this.eachVariantOption((option) => {\n      if (option.dataset.isOverride === \"true\" && option.dataset.color) colors.add(option.dataset.color)\n    })\n    return colors.size\n  }\n\n  addOverrideMarker(option) {\n    if (!option.textContent.startsWith(\"\u2022 \")) option.textContent = `\u2022 ${option.textContent}`\n  }\n\n  removeOverrideMarker(option) {\n    option.textContent = option.textContent.replace(/^\u2022 /, \"\")\n  }\n\n  setStatus(state, message) {\n    if (!this.hasStatusTarget) return\n    const el = this.statusTarget\n    clearTimeout(this.statusFadeTimeout)\n\n    if (state === \"saving\") {\n      el.textContent = \"Saving\u2026\"\n      el.className = \"text-xs text-gray-500\"\n    } else if (state === \"saved\") {\n      el.textContent = \"\u2713 Saved\"\n      el.className = \"text-xs text-green-600\"\n      this.statusFadeTimeout = setTimeout(() => {\n        if (!this.savePending && !this.dirty) {\n          el.textContent = \"\"\n          el.className = \"text-xs\"\n        }\n      }, 2000)\n    } else if (state === \"failed\") {\n      el.className = \"text-xs text-red-600 flex items-center gap-1\"\n      el.textContent = `\u26A0 ${message || \"Save failed\"} \u2014 `\n      const retry = document.createElement(\"button\")\n      retry.type = \"button\"\n      retry.textContent = \"Retry\"\n      retry.className = \"underline font-medium\"\n      retry.dataset.action = \"click->overlay-editor#retry\"\n      el.appendChild(retry)\n    } else {\n      el.textContent = \"\"\n      el.className = \"text-xs\"\n    }\n  }\n\n  handleBeforeUnload(event) {\n    if (this.savePending || this.dirty) {\n      event.preventDefault()\n      event.returnValue = \"\" // unsaved placement changes\n      return \"\"\n    }\n  }\n\n  // ---- reset ---------------------------------------------------------------\n\n  reset() {\n    this.xPercentValue = this.defaultXValue\n    this.yPercentValue = this.defaultYValue\n    this.widthPercentValue = this.defaultWidthValue\n    this.heightPercentValue = this.defaultHeightValue\n\n    this.updateOverlayPosition()\n    this.updateCoordinatesDisplay()\n    this.markDirty()\n    this.save()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { escapeHtml } from \"./helpers/escape\"\n\nexport default class extends Controller {\n  static targets = [\n    \"input\", \"status\", \"log\", \"counter\",\n    \"orderCard\", \"orderNumber\", \"orderBuyer\", \"orderAccount\",\n    \"checklist\", \"packedCount\", \"totalCount\", \"readyBanner\"\n  ]\n  static values = { scanUrl: String, clearOrderUrl: String }\n\n  connect() {\n    this.packCount = 0\n    this.currentOrderId = null\n    this.inputTarget.focus()\n  }\n\n  async scan(event) {\n    event.preventDefault()\n    const qrData = this.inputTarget.value.trim()\n    if (!qrData) return\n\n    this.inputTarget.value = \"\"\n    this.showStatus(\"Scanning...\", \"info\")\n\n    try {\n      const response = await fetch(this.scanUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this.csrfToken\n        },\n        body: JSON.stringify({\n          qr_data: qrData,\n          current_order_id: this.currentOrderId\n        })\n      })\n\n      const data = await response.json()\n\n      if (!data.success) {\n        this.showStatus(data.error, \"error\")\n        this.addLogEntry({ error: data.error }, false)\n        this.playSound(false)\n        this.inputTarget.focus()\n        return\n      }\n\n      if (data.mode === \"order_loaded\") {\n        this.loadOrder(data.order, data.items)\n        this.showStatus(`Loaded order ${data.order.number} \u2014 ${data.items.length} items`, \"info\")\n      } else if (data.mode === \"item_packed\") {\n        this.markPacked(data)\n        this.showStatus(`Packed: ${data.item.product_name} (${data.item.size || \"\u2014\"})`, \"success\")\n        this.playSound(true)\n      }\n    } catch (error) {\n      this.showStatus(`Network error: ${error.message}`, \"error\")\n      this.playSound(false)\n    }\n\n    this.inputTarget.focus()\n  }\n\n  async clearOrder() {\n    try {\n      await fetch(this.clearOrderUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this.csrfToken\n        }\n      })\n    } catch (error) {\n      // Fire-and-forget; client-side wipe still happens.\n    }\n\n    this.currentOrderId = null\n    this.orderCardTarget.classList.add(\"hidden\")\n    this.checklistTarget.innerHTML = \"\"\n    this.readyBannerTarget.classList.add(\"hidden\")\n    this.showStatus(\"Order cleared. Scan an item to load a new order.\", \"info\")\n    this.inputTarget.focus()\n  }\n\n  loadOrder(order, items) {\n    this.currentOrderId = order.id\n    this.orderNumberTarget.textContent = order.number\n    this.orderBuyerTarget.textContent = order.buyer ? `\u2014 ${order.buyer}` : \"\"\n    this.orderAccountTarget.textContent = order.account || \"\"\n    this.totalCountTarget.textContent = order.items_total\n\n    this.checklistTarget.innerHTML = items.map((item) => this.rowHtml(item)).join(\"\")\n    this.updatePackedCount(items)\n    this.readyBannerTarget.classList.toggle(\"hidden\", !items.every((i) => i.packed))\n    this.orderCardTarget.classList.remove(\"hidden\")\n  }\n\n  markPacked(data) {\n    this.packCount++\n    this.updateCounter()\n\n    const row = this.checklistTarget.querySelector(`[data-item-id=\"${data.item.id}\"]`)\n    if (row) {\n      row.outerHTML = this.rowHtml(data.item)\n    }\n\n    this.packedCountTarget.textContent = data.packed_count\n\n    if (data.all_packed) {\n      this.readyBannerTarget.classList.remove(\"hidden\")\n    }\n\n    this.addLogEntry({ id: data.item.id, sku: data.item.sku, status: data.item.product_name }, true)\n  }\n\n  updatePackedCount(items) {\n    const packed = items.filter((i) => i.packed).length\n    this.packedCountTarget.textContent = packed\n  }\n\n  rowHtml(item) {\n    const packedTone = item.packed\n      ? \"bg-pz-success/10 border-pz-success/30\"\n      : \"bg-white/60 border-[rgba(59,42,143,.10)]\"\n    const checkIcon = item.packed\n      ? `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"3\" stroke=\"currentColor\" class=\"w-4 h-4 text-pz-success\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 12.75 6 6 9-13.5\" /></svg>`\n      : `<span class=\"w-4 h-4 rounded border border-pz-ink/20\"></span>`\n\n    const binTag = item.bin\n      ? `<span class=\"text-[10px] font-semibold px-1.5 py-0.5 rounded-full ${item.bin_active ? \"text-pz-orange bg-pz-orange/10\" : \"text-pz-ink/40 bg-pz-ink/5 line-through\"}\">${escapeHtml(item.bin)}</span>`\n      : \"\"\n\n    const statusTag = `<span class=\"text-[10px] font-semibold px-1.5 py-0.5 rounded-full text-pz-info bg-pz-info/10\">${escapeHtml(item.status || \"\u2014\")}</span>`\n\n    return `\n      <div class=\"flex items-center gap-3 px-3 py-2 rounded-xl border ${packedTone}\" data-pack-station-target=\"row\" data-item-id=\"${item.id}\">\n        <div class=\"flex-shrink-0\">${checkIcon}</div>\n        <span class=\"font-mono text-xs text-pz-ink/40\">#${item.id}</span>\n        <span class=\"text-sm font-medium text-pz-ink flex-1 truncate\">${escapeHtml(item.product_name)}</span>\n        <span class=\"text-xs text-pz-ink/60\">${escapeHtml(item.color || \"\u2014\")} / ${escapeHtml(item.size || \"\u2014\")}</span>\n        ${binTag}\n        ${statusTag}\n      </div>\n    `\n  }\n\n  showStatus(message, type) {\n    const colors = {\n      success: \"bg-pz-success/16 border-pz-success/35 text-green-800\",\n      error: \"bg-pz-danger/16 border-pz-danger/35 text-red-800\",\n      info: \"bg-pz-info/16 border-pz-info/35 text-pz-ink/70\"\n    }\n    this.statusTarget.innerHTML = `\n      <div class=\"px-4 py-3 rounded-2xl border ${colors[type] || colors.info}\">\n        <span class=\"font-semibold text-sm\">${escapeHtml(message)}</span>\n      </div>\n    `\n  }\n\n  addLogEntry(item, success) {\n    if (!this.hasLogTarget) return\n\n    const entry = document.createElement(\"div\")\n    const time = new Date().toLocaleTimeString()\n\n    if (success) {\n      entry.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-success/10 text-green-800\"\n      entry.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">PACKED</span>\n        <span class=\"text-pz-ink/60\">Item #${item.id} \u2014 ${escapeHtml(item.status || \"\")}</span>`\n    } else {\n      entry.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-danger/10 text-red-800\"\n      entry.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">Error:</span>\n        <span>${escapeHtml(item.error || \"Unknown\")}</span>`\n    }\n\n    this.logTarget.prepend(entry)\n    while (this.logTarget.children.length > 30) {\n      this.logTarget.removeChild(this.logTarget.lastChild)\n    }\n  }\n\n  updateCounter() {\n    if (this.hasCounterTarget) this.counterTarget.textContent = this.packCount\n  }\n\n  playSound(success) {\n    try {\n      const ctx = new (window.AudioContext || window.webkitAudioContext)()\n      const osc = ctx.createOscillator()\n      const gain = ctx.createGain()\n      osc.connect(gain)\n      gain.connect(ctx.destination)\n      gain.gain.value = 0.1\n      if (success) {\n        osc.frequency.value = 880\n        osc.type = \"sine\"\n      } else {\n        osc.frequency.value = 220\n        osc.type = \"square\"\n      }\n      osc.start()\n      osc.stop(ctx.currentTime + (success ? 0.1 : 0.3))\n      osc.onended = () => ctx.close() // release the context so it can't leak per scan (#989)\n    } catch (e) { /* Audio not supported */ }\n  }\n\n  get csrfToken() {\n    return document.querySelector('meta[name=\"csrf-token\"]').content\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [ \"form\" ]\n\n  connect() {\n    let displayModeTheme = document.documentElement.classList.contains(\"dark\") ? \"dark\" : \"light\";\n    let params = {\n      method: 'inline',\n      allowQuantity: false,\n      disableLogout: true,\n      frameTarget: \"paddle-checkout\",\n      frameInitialHeight: 416,\n      frameStyle: 'width:100%; background-color: transparent; border: none;',\n      successCallback: this.checkoutComplete.bind(this),\n      displayModeTheme: displayModeTheme\n    }\n\n    if (this.data.get(\"action\") == \"create-subscription\") {\n      Paddle.Checkout.open({\n        ...params,\n        product: this.data.get(\"product\"),\n        email: this.data.get(\"email\"),\n        passthrough: this.data.get(\"passthrough\")\n      });\n    } else if (this.data.get(\"action\") == \"update-payment-details\") {\n      Paddle.Checkout.open({\n        ...params,\n        override: this.data.get(\"update-url\")\n      });\n    }\n  }\n\n  // Webhooks will set the customer ID and subscription using the `passthrough` parameter\n  checkoutComplete(data) {\n    this.addHiddenField(\"processor\", \"paddle\")\n    this.formTarget.submit()\n  }\n\n  addHiddenField(name, value) {\n    let hiddenInput = document.createElement(\"input\")\n    hiddenInput.setAttribute(\"type\", \"hidden\")\n    hiddenInput.setAttribute(\"name\", name)\n    hiddenInput.setAttribute(\"value\", value)\n    this.formTarget.appendChild(hiddenInput)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport Pagy from \"../src/pagy.mjs\"\n\nexport default class extends Controller {\n  connect() {\n    Pagy.init(this.element)\n  }\n}", "const Pagy = (() => {\n  const rjsObserver = new ResizeObserver((entries) => entries.forEach((e) => e.target.querySelectorAll(\".pagy-rjs\").forEach((el) => el.pagyRender())));\n  const initNav = (el, [tokens, sequels, labelSequels, trimParam]) => {\n    const container = el.parentElement ?? el;\n    const widths = Object.keys(sequels).map((w) => parseInt(w)).sort((a, b) => b - a);\n    let lastWidth = -1;\n    const fillIn = (a, page, label) => a.replace(/__pagy_page__/g, page).replace(/__pagy_label__/g, label);\n    (el.pagyRender = function() {\n      const width = widths.find((w) => w < container.clientWidth) || 0;\n      if (width === lastWidth) {\n        return;\n      }\n      let html = tokens.before;\n      const series = sequels[width.toString()];\n      const labels = labelSequels?.[width.toString()] ?? series.map((l) => l.toString());\n      series.forEach((item, i) => {\n        const label = labels[i];\n        let filled;\n        if (typeof item === \"number\") {\n          filled = fillIn(tokens.a, item.toString(), label);\n        } else if (item === \"gap\") {\n          filled = tokens.gap;\n        } else {\n          filled = fillIn(tokens.current, item, label);\n        }\n        html += typeof trimParam === \"string\" && item == 1 ? trim(filled, trimParam) : filled;\n      });\n      html += tokens.after;\n      el.innerHTML = \"\";\n      el.insertAdjacentHTML(\"afterbegin\", html);\n      lastWidth = width;\n    })();\n    if (el.classList.contains(\"pagy-rjs\")) {\n      rjsObserver.observe(container);\n    }\n  };\n  const initCombo = (el, [url_token, trimParam]) => initInput(el, (inputValue) => [inputValue, url_token.replace(/__pagy_page__/, inputValue)], trimParam);\n  const initSelector = (el, [from, url_token, trimParam]) => {\n    initInput(el, (inputValue) => {\n      const page = Math.max(Math.ceil(from / parseInt(inputValue)), 1).toString();\n      const url = url_token.replace(/__pagy_page__/, page).replace(/__pagy_limit__/, inputValue);\n      return [page, url];\n    }, trimParam);\n  };\n  const initInput = (el, getVars, trimParam) => {\n    const input = el.querySelector(\"input\");\n    const link = el.querySelector(\"a\");\n    const initial = input.value;\n    const action = function() {\n      if (input.value === initial) {\n        return;\n      }\n      const [min, val, max] = [input.min, input.value, input.max].map((n) => parseInt(n) || 0);\n      if (val < min || val > max) {\n        input.value = initial;\n        input.select();\n        return;\n      }\n      let [page, url] = getVars(input.value);\n      if (typeof trimParam === \"string\" && page === \"1\") {\n        url = trim(url, trimParam);\n      }\n      link.href = url;\n      link.click();\n    };\n    [\"change\", \"focus\"].forEach((e) => input.addEventListener(e, () => input.select()));\n    input.addEventListener(\"focusout\", action);\n    input.addEventListener(\"keypress\", (e) => {\n      if (e.key === \"Enter\") {\n        action();\n      }\n    });\n  };\n  const trim = (a, param) => a.replace(new RegExp(`[?&]${param}=1\\\\b(?!&)|\\\\b${param}=1&`), \"\");\n  return {\n    version: \"9.1.1\",\n    init(arg) {\n      const target = arg instanceof Element ? arg : document;\n      const elements = target.querySelectorAll(\"[data-pagy]\");\n      for (const el of elements) {\n        try {\n          const uint8array = Uint8Array.from(atob(el.getAttribute(\"data-pagy\")), (c) => c.charCodeAt(0));\n          const [keyword, ...args] = JSON.parse(new TextDecoder().decode(uint8array));\n          if (keyword === \"nav\") {\n            initNav(el, args);\n          } else if (keyword === \"combo\") {\n            initCombo(el, args);\n          } else if (keyword === \"selector\") {\n            initSelector(el, args);\n          } else {\n            console.warn(\"Skipped Pagy.init() for: %o\\nUnknown keyword '%s'\", el, keyword);\n          }\n        } catch (err) {\n          console.warn(\"Skipped Pagy.init() for: %o\\n%s\", el, err);\n        }\n      }\n    }\n  };\n})();\nexport default Pagy;\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [ \"button\", \"form\" ]\n\n  connect() {\n    braintree.client.create({\n      authorization: this.data.get(\"clientToken\")\n    }, this.clientCreated.bind(this))\n  }\n\n  disconnect() {\n    // Remove the paypal button on disconnect\n    this.buttonTarget.querySelector(\".paypal-button\").remove()\n  }\n\n  clientCreated(error, clientInstance) {\n    if (error) {\n      console.error(\"Error creating client\", error)\n      return\n    }\n\n    braintree.paypalCheckout.create({\n      client: clientInstance\n    }, this.paypalCreated.bind(this))\n  }\n\n  paypalCreated(paypalCheckoutErr, paypalCheckoutInstance) {\n    // Stop if there was a problem creating PayPal Checkout.\n    // This could happen if there was a network error or if it's incorrectly\n    // configured.\n    if (paypalCheckoutErr) {\n      console.error('Error creating PayPal Checkout:', paypalCheckoutErr);\n      return;\n    }\n\n    // Set up PayPal with the checkout.js library\n    paypal.Button.render({\n      env: this.data.get(\"env\"), // or 'sandbox'\n\n      // https://developer.paypal.com/docs/checkout/how-to/customize-button/#\n      style: {\n        color: 'gold',  // gold blue silver black\n        shape: 'rect',  // shape: pill rect\n        size:  'medium', // size: small medium large responsive\n        label: 'pay',   // label: checkout credit pay buynow paypal installment\n        tagline: false, // tagline: true false\n      },\n\n      payment: () => {\n        return paypalCheckoutInstance.createPayment({\n          // Your PayPal options here. For available options, see\n          // http://braintree.github.io/braintree-web/current/PayPalCheckout.html#createPayment\n          flow: 'vault',\n        })\n      },\n\n      onAuthorize: (data, actions) => {\n        return paypalCheckoutInstance.tokenizePayment(data, this.paymentMethod.bind(this))\n      },\n\n      onCancel: (data) => {\n        console.log('checkout.js payment cancelled', JSON.stringify(data, 0, 2));\n      },\n\n      onError: (err) => {\n        console.error('checkout.js error', err);\n      }\n    }, this.buttonTarget).then(() => {\n      // The PayPal button will be rendered in an html element with the id\n      // `paypal-button`. This function will be called when the PayPal button\n      // is set up and ready to be used.\n    });\n  }\n\n  paymentMethod(error, payload) {\n    if (error) {\n      console.error(\"Error with payment method:\", error)\n      return\n    }\n\n    this.addHiddenField(\"processor\", \"braintree\")\n    this.addHiddenField(\"payment_method_token\", payload.nonce)\n    this.formTarget.submit()\n  }\n\n  addHiddenField(name, value) {\n    let hiddenInput = document.createElement(\"input\")\n    hiddenInput.setAttribute(\"type\", \"hidden\")\n    hiddenInput.setAttribute(\"name\", name)\n    hiddenInput.setAttribute(\"value\", value)\n    this.formTarget.appendChild(hiddenInput)\n  }\n}\n\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"persistent-dropdown\"\nexport default class extends Controller {\n  static targets = [\"menu\", \"button\"]\n  static classes = [\"hidden\"]\n\n  connect() {\n    this.isOpen = false\n    this.boundCloseOnOtherClick = this.closeOnOtherClick.bind(this)\n  }\n\n  disconnect() {\n    document.removeEventListener(\"click\", this.boundCloseOnOtherClick)\n  }\n\n  show(event) {\n    event.stopPropagation()\n    \n    if (!this.isOpen) {\n      this.menuTarget.classList.remove(\"hidden\")\n      this.isOpen = true\n      \n      // Add global click listener to close when clicking other form fields\n      document.addEventListener(\"click\", this.boundCloseOnOtherClick)\n    }\n  }\n\n  close(event) {\n    if (event) {\n      event.stopPropagation()\n    }\n    \n    this.menuTarget.classList.add(\"hidden\")\n    this.isOpen = false\n    document.removeEventListener(\"click\", this.boundCloseOnOtherClick)\n  }\n\n  closeOnOtherClick(event) {\n    // Don't close if clicking within this dropdown\n    if (this.element.contains(event.target)) {\n      return\n    }\n\n    // Close if clicking on another form field or button\n    const clickedElement = event.target\n    const isFormField = clickedElement.matches('input, select, textarea, button, label') ||\n                       clickedElement.closest('button') ||\n                       clickedElement.closest('.relative[data-controller*=\"dropdown\"]')\n\n    if (isFormField) {\n      this.close()\n    }\n  }\n\n  // Prevent dropdown from closing when interacting with content inside\n  preventClose(event) {\n    event.stopPropagation()\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Multi-question personalization builder (#1193).\n//\n// Add/remove question rows and per-type field-group toggling. The section\n// form's autosubmit controller owns saving. A server-rendered pool of blank\n// rows lets explicit-Save forms add the full question set before submitting,\n// without fragile client-side cloning. Hidden field groups are DISABLED so\n// they never submit phantom params.\n//\n// Connects to data-controller=\"personalization-questions\"\nexport default class extends Controller {\n  static targets = [\n    \"row\", \"blankRow\", \"addButton\", \"destroyFlag\", \"addOnPrice\",\n    \"choiceList\", \"choiceRow\", \"choiceCount\", \"choiceHeading\", \"choiceHint\",\n    \"addChoiceButton\", \"removeChoiceButton\", \"maxFiles\", \"maxFilesField\",\n    \"labeledUploadFileHint\"\n  ]\n  static values = { max: Number }\n\n  connect() {\n    this._updateAddButton()\n    const questionRows = [...this.rowTargets, ...this.blankRowTargets]\n    questionRows.forEach(row => {\n      const type = row.querySelector(\"select[name*='[question_type]']\")?.value || \"text_input\"\n      this._configureChoiceEditor(row, type)\n    })\n  }\n\n  addRow() {\n    const row = this.blankRowTargets.find(candidate => candidate.classList.contains(\"hidden\"))\n    if (!row || this._activeRowCount() >= this.maxValue) return\n\n    row.classList.remove(\"hidden\")\n    row.querySelectorAll(\"input,select\").forEach(el => {\n      if (this._groupHidden(el)) return\n      el.disabled = false\n    })\n    this._updateAddButton()\n\n    const field = row.querySelector(\"input[type='text']\")\n    if (field) field.focus()\n  }\n\n  removeRow(event) {\n    const row = event.currentTarget.closest(\"[data-personalization-questions-target]\")\n    if (!row) return\n\n    const newRecord = row.dataset.personalizationQuestionsNewRecord === \"true\"\n    const flag = row.querySelector(\"[data-personalization-questions-target='destroyFlag']\")\n    if (flag) flag.value = \"1\"\n    row.classList.add(\"hidden\")\n\n    if (newRecord) {\n      this._resetBlankRow(row)\n    } else {\n      this._autosubmit()\n    }\n    this._updateAddButton()\n  }\n\n  // Swap visible/enabled field groups when the type select changes. No save -\n  // a half-configured question (dropdown with no choices yet) would 422.\n  typeChanged(event) {\n    const row = event.currentTarget.closest(\"[data-personalization-questions-target]\")\n    const type = event.currentTarget.value\n    this._setTypeGroups(row, type)\n    this._configureChoiceEditor(row, type)\n  }\n\n  addChoice(event) {\n    const group = event.currentTarget.closest(\"[data-question-group='options']\")\n    if (!group) return\n\n    const max = Number(group.dataset.choiceMax)\n    if (this._choiceRows(group).length >= max) return\n\n    const source = this._choiceRows(group)[0]\n    if (!source) return\n\n    const clone = source.cloneNode(true)\n    const input = clone.querySelector(\"input[name*='[options_labels]']\")\n    if (input) {\n      input.value = \"\"\n      input.defaultValue = \"\"\n      input.disabled = false\n    }\n    group.querySelector(\"[data-personalization-questions-target='choiceList']\").append(clone)\n    this._refreshChoiceEditor(group)\n    input?.focus()\n  }\n\n  removeChoice(event) {\n    const group = event.currentTarget.closest(\"[data-question-group='options']\")\n    const choiceRow = event.currentTarget.closest(\"[data-personalization-questions-target='choiceRow']\")\n    if (!group || !choiceRow) return\n\n    const rows = this._choiceRows(group)\n    const min = Number(group.dataset.choiceMin)\n    if (rows.length <= min) return\n\n    choiceRow.remove()\n    this._refreshChoiceEditor(group)\n  }\n\n  _setTypeGroups(row, type) {\n    const wants = {\n      text_input: [\"text_input\", \"instructions\"],\n      dropdown: [\"options\"],\n      unlabeled_upload: [\"uploads\", \"instructions\"],\n      labeled_upload: [\"options\", \"uploads\", \"instructions\"]\n    }[type] || []\n\n    row.querySelectorAll(\"[data-question-group]\").forEach(group => {\n      const show = wants.includes(group.dataset.questionGroup)\n      group.classList.toggle(\"hidden\", !show)\n      group.querySelectorAll(\"input,select\").forEach(el => { el.disabled = !show })\n    })\n  }\n\n  _resetBlankRow(row) {\n    const choiceGroup = row.querySelector(\"[data-question-group='options']\")\n    if (choiceGroup) {\n      this._choiceRows(choiceGroup).slice(1).forEach(choiceRow => choiceRow.remove())\n    }\n\n    row.querySelectorAll(\"input,select\").forEach(el => {\n      if (el.type === \"checkbox\" || el.type === \"radio\") {\n        el.checked = el.defaultChecked\n      } else if (el.tagName === \"SELECT\") {\n        const defaultOption = Array.from(el.options).find(option => option.defaultSelected) || el.options[0]\n        el.value = defaultOption?.value || \"\"\n      } else {\n        el.value = el.defaultValue\n      }\n    })\n\n    const type = row.querySelector(\"select[name*='[question_type]']\")?.value || \"text_input\"\n    this._setTypeGroups(row, type)\n    this._configureChoiceEditor(row, type)\n\n    // Match the server-rendered blank state: visible controls disabled, hidden\n    // position/_destroy fields enabled and harmless under reject_if.\n    row.querySelectorAll(\"input,select\").forEach(el => { el.disabled = el.type !== \"hidden\" })\n    const flag = row.querySelector(\"[data-personalization-questions-target='destroyFlag']\")\n    if (flag) flag.value = \"0\"\n  }\n\n  _activeRowCount() {\n    const active = row => !row.classList.contains(\"hidden\")\n    return this.rowTargets.filter(active).length + this.blankRowTargets.filter(active).length\n  }\n\n  _updateAddButton() {\n    if (!this.hasAddButtonTarget) return\n    const hasBlank = this.blankRowTargets.some(row => row.classList.contains(\"hidden\"))\n    this.addButtonTarget.classList.toggle(\"hidden\", !hasBlank || this._activeRowCount() >= this.maxValue)\n  }\n\n  _configureChoiceEditor(row, type) {\n    const group = row.querySelector(\"[data-question-group='options']\")\n    if (!group) return\n\n    const labeledUpload = type === \"labeled_upload\"\n    group.dataset.choiceMin = labeledUpload ? \"2\" : \"1\"\n    group.dataset.choiceMax = labeledUpload ? \"10\" : \"30\"\n\n    const min = Number(group.dataset.choiceMin)\n    while (this._choiceRows(group).length < min) {\n      const source = this._choiceRows(group)[0]\n      if (!source) break\n      const clone = source.cloneNode(true)\n      const input = clone.querySelector(\"input[name*='[options_labels]']\")\n      if (input) {\n        input.value = \"\"\n        input.defaultValue = \"\"\n      }\n      group.querySelector(\"[data-personalization-questions-target='choiceList']\").append(clone)\n    }\n\n    while (this._choiceRows(group).length > Number(group.dataset.choiceMax)) {\n      this._choiceRows(group).at(-1).remove()\n    }\n\n    this._choiceRows(group).forEach(choiceRow => {\n      const input = choiceRow.querySelector(\"input[name*='[options_labels]']\")\n      if (!input) return\n      input.maxLength = labeledUpload ? 45 : 20\n      input.placeholder = labeledUpload ? \"e.g. Front photo\" : \"e.g. Serif\"\n    })\n\n    const heading = group.querySelector(\"[data-personalization-questions-target='choiceHeading']\")\n    if (heading) heading.textContent = labeledUpload ? \"File labels\" : \"Choices\"\n\n    const maxFilesField = row.querySelector(\"[data-personalization-questions-target='maxFilesField']\")\n    if (maxFilesField) maxFilesField.classList.toggle(\"hidden\", labeledUpload)\n    const fileHint = row.querySelector(\"[data-personalization-questions-target='labeledUploadFileHint']\")\n    if (fileHint) fileHint.classList.toggle(\"hidden\", !labeledUpload)\n\n    this._refreshChoiceEditor(group)\n  }\n\n  _refreshChoiceEditor(group) {\n    const rows = this._choiceRows(group)\n    const min = Number(group.dataset.choiceMin)\n    const max = Number(group.dataset.choiceMax)\n    const labeledUpload = max === 10\n\n    rows.forEach((choiceRow, index) => {\n      const input = choiceRow.querySelector(\"input[name*='[options_labels]']\")\n      if (input) input.setAttribute(\"aria-label\", `${labeledUpload ? \"File label\" : \"Choice\"} ${index + 1}`)\n      const remove = choiceRow.querySelector(\"[data-personalization-questions-target='removeChoiceButton']\")\n      if (remove) remove.classList.toggle(\"hidden\", rows.length <= min)\n    })\n\n    const count = group.querySelector(\"[data-personalization-questions-target='choiceCount']\")\n    if (count) count.textContent = `${rows.length} / ${max}`\n    const hint = group.querySelector(\"[data-personalization-questions-target='choiceHint']\")\n    if (hint) hint.textContent = labeledUpload ? \"One label per required file\" : \"1-30 choices, 20 characters each\"\n    const add = group.querySelector(\"[data-personalization-questions-target='addChoiceButton']\")\n    if (add) add.classList.toggle(\"hidden\", rows.length >= max)\n\n    if (labeledUpload) {\n      const questionRow = group.closest(\"[data-personalization-questions-target]\")\n      const maxFiles = questionRow?.querySelector(\"[data-personalization-questions-target='maxFiles']\")\n      if (maxFiles) maxFiles.value = rows.length\n    }\n  }\n\n  _choiceRows(group) {\n    return Array.from(group.querySelectorAll(\"[data-personalization-questions-target='choiceRow']\"))\n  }\n\n  _groupHidden(el) {\n    const group = el.closest(\"[data-question-group]\")\n    return group ? group.classList.contains(\"hidden\") : false\n  }\n\n  // Only the canvas autosaves. The listing-template editor mounts this same\n  // builder inside a normal explicit-Save form, where submitting the whole\n  // form on a row removal would save a half-edited template. Gate on the\n  // surrounding form actually declaring the autosubmit controller.\n  _autosubmit() {\n    const form = this.element.closest(\"form\")\n    if (!form) return\n    if (!(form.dataset.controller || \"\").split(/\\s+/).includes(\"autosubmit\")) return\n    form.requestSubmit()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { Turbo } from \"@hotwired/turbo-rails\"\n\nexport default class extends Controller {\n  static targets = [\n    \"row\", \"jitToggle\", \"unpickableToggle\", \"selectedCount\",\n    \"catalogDropdown\", \"catalogCount\", \"catalogItem\",\n    \"colorDropdown\", \"colorCount\", \"colorItem\",\n    \"sizeDropdown\", \"sizeCount\", \"sizeItem\",\n    \"pickableCount\"\n  ]\n\n  static values = {\n    pickAllUrl: String,\n    subBatchId: String,\n    pickableFilteredCount: Number\n  }\n\n  connect() {\n    this.openDropdown = null\n    this._dropdownDirty = false\n    this._outsideClickHandler = this.closeOnOutsideClick.bind(this)\n    document.addEventListener(\"click\", this._outsideClickHandler)\n    this.updateCounts()\n  }\n\n  disconnect() {\n    document.removeEventListener(\"click\", this._outsideClickHandler)\n  }\n\n  toggleDropdown(event) {\n    event.preventDefault()\n    event.stopPropagation()\n\n    const name = event.params.dropdown\n    const dropdown = this[`${name}DropdownTarget`]\n\n    if (this.openDropdown && this.openDropdown !== dropdown) {\n      this.openDropdown.classList.add(\"hidden\")\n      if (this._dropdownDirty) {\n        this._dropdownDirty = false\n        this.navigateWithFilters()\n        return\n      }\n    }\n\n    const wasOpen = !dropdown.classList.contains(\"hidden\")\n    dropdown.classList.toggle(\"hidden\")\n\n    if (wasOpen) {\n      this.openDropdown = null\n      if (this._dropdownDirty) {\n        this._dropdownDirty = false\n        this.navigateWithFilters()\n        return\n      }\n    } else {\n      this.openDropdown = dropdown\n    }\n  }\n\n  closeOnOutsideClick(event) {\n    if (this.openDropdown && !this.element.contains(event.target)) {\n      this.openDropdown.classList.add(\"hidden\")\n      this.openDropdown = null\n      if (this._dropdownDirty) {\n        this._dropdownDirty = false\n        this.navigateWithFilters()\n      }\n    }\n  }\n\n  filterChanged() {\n    this._dropdownDirty = true\n    this.updateCounts()\n  }\n\n  toggleJit() {\n    this.navigateWithFilters()\n  }\n\n  toggleUnpickable() {\n    this.navigateWithFilters()\n  }\n\n  navigateWithFilters() {\n    const url = new URL(window.location)\n\n    // Reset to page 1 on filter change\n    url.searchParams.delete(\"page\")\n\n    // Catalog items\n    url.searchParams.delete(\"catalog_items[]\")\n    this.getCheckedValues(this.catalogItemTargets).forEach(val => {\n      url.searchParams.append(\"catalog_items[]\", val)\n    })\n\n    // Colors\n    url.searchParams.delete(\"colors[]\")\n    this.getCheckedValues(this.colorItemTargets).forEach(val => {\n      url.searchParams.append(\"colors[]\", val)\n    })\n\n    // Sizes\n    url.searchParams.delete(\"sizes[]\")\n    this.getCheckedValues(this.sizeItemTargets).forEach(val => {\n      url.searchParams.append(\"sizes[]\", val)\n    })\n\n    // JIT toggle\n    if (this.hasJitToggleTarget && !this.jitToggleTarget.checked) {\n      url.searchParams.set(\"exclude_jit\", \"0\")\n    } else {\n      url.searchParams.delete(\"exclude_jit\")\n    }\n\n    // Unpickable toggle\n    if (this.hasUnpickableToggleTarget && this.unpickableToggleTarget.checked) {\n      url.searchParams.set(\"hide_unpickable\", \"1\")\n    } else {\n      url.searchParams.delete(\"hide_unpickable\")\n    }\n\n    Turbo.visit(url.toString())\n  }\n\n  checkboxChanged() {\n    this.updateSelectedCount()\n  }\n\n  selectFiltered() {\n    this.rowTargets.forEach(row => {\n      if (row.dataset.pickable !== \"true\") return\n      const checkbox = row.querySelector(\".pick-list-item-checkbox\")\n      if (checkbox) checkbox.checked = true\n    })\n    this.updateSelectedCount()\n  }\n\n  deselectAll() {\n    this.rowTargets.forEach(row => {\n      if (row.dataset.pickable !== \"true\") return\n      const checkbox = row.querySelector(\".pick-list-item-checkbox\")\n      if (checkbox) checkbox.checked = false\n    })\n    this.updateSelectedCount()\n  }\n\n  updateSelectedCount() {\n    if (!this.hasSelectedCountTarget) return\n    const count = this.rowTargets.filter(row => {\n      if (row.dataset.pickable !== \"true\") return false\n      const cb = row.querySelector(\".pick-list-item-checkbox\")\n      return cb && cb.checked\n    }).length\n    this.selectedCountTarget.textContent = count > 0 ? `${count} selected` : \"\"\n  }\n\n  updateCounts() {\n    if (this.hasCatalogCountTarget) {\n      const count = this.catalogItemTargets.filter(i => i.querySelector(\"input:checked\")).length\n      this.updateBadge(this.catalogCountTarget, count)\n    }\n    if (this.hasColorCountTarget) {\n      const count = this.colorItemTargets.filter(i => i.querySelector(\"input:checked\")).length\n      this.updateBadge(this.colorCountTarget, count)\n    }\n    if (this.hasSizeCountTarget) {\n      const count = this.sizeItemTargets.filter(i => i.querySelector(\"input:checked\")).length\n      this.updateBadge(this.sizeCountTarget, count)\n    }\n  }\n\n  updateBadge(badge, count) {\n    if (count > 0) {\n      badge.textContent = count\n      badge.classList.remove(\"hidden\")\n    } else {\n      badge.classList.add(\"hidden\")\n    }\n  }\n\n  pickAllFiltered() {\n    const count = this.pickableFilteredCountValue\n    if (!confirm(`Create a pick list for all ${count} filtered pickable item(s)?`)) return\n\n    const form = document.createElement(\"form\")\n    form.method = \"POST\"\n    form.action = this.pickAllUrlValue\n    form.style.display = \"none\"\n\n    // CSRF token\n    const csrfToken = document.querySelector(\"meta[name='csrf-token']\")?.content\n    if (csrfToken) {\n      const input = document.createElement(\"input\")\n      input.type = \"hidden\"\n      input.name = \"authenticity_token\"\n      input.value = csrfToken\n      form.appendChild(input)\n    }\n\n    // Sub-batch ID\n    const sbInput = document.createElement(\"input\")\n    sbInput.type = \"hidden\"\n    sbInput.name = \"production_sub_batch_id\"\n    sbInput.value = this.subBatchIdValue\n    form.appendChild(sbInput)\n\n    // Forward current URL filter params\n    const url = new URL(window.location)\n    for (const [key, value] of url.searchParams.entries()) {\n      if (key === \"page\") continue\n      const input = document.createElement(\"input\")\n      input.type = \"hidden\"\n      input.name = key\n      input.value = value\n      form.appendChild(input)\n    }\n\n    document.body.appendChild(form)\n    form.submit()\n  }\n\n  getCheckedValues(itemTargets) {\n    if (!itemTargets || itemTargets.length === 0) return []\n    return itemTargets\n      .filter(item => item.querySelector(\"input:checked\"))\n      .map(item => item.dataset.filterValue)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { escapeHtml } from \"./helpers/escape\"\n\nexport default class extends Controller {\n  static targets = [\"input\", \"status\", \"log\"]\n  static values = { url: String }\n\n  connect() {\n    this.inputTarget.focus()\n  }\n\n  async scan(event) {\n    event.preventDefault()\n    const qrData = this.inputTarget.value.trim()\n    if (!qrData) return\n\n    this.inputTarget.value = \"\"\n    this.statusTarget.innerHTML = '<span class=\"text-gray-500\">Scanning...</span>'\n\n    try {\n      const response = await fetch(this.urlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": document.querySelector('meta[name=\"csrf-token\"]').content\n        },\n        body: JSON.stringify({ qr_data: qrData })\n      })\n\n      const data = await response.json()\n\n      if (data.success) {\n        this.statusTarget.innerHTML = `\n          <div class=\"alert alert-success py-2\">\n            <span>Confirmed: ${escapeHtml(data.item.order_number)} - ${escapeHtml(data.item.sku)}</span>\n          </div>\n        `\n        this.addLogEntry(data.item, true)\n\n        // Update the summary if available\n        if (data.summary) {\n          this.updateProgressBar(data.summary)\n        }\n\n        // Highlight the confirmed row in the table\n        const row = document.getElementById(`pick_list_item_${data.item.id}`)\n        if (row) {\n          row.classList.add(\"bg-green-50\")\n          const statusCell = row.querySelector(\"td:nth-child(8)\")\n          if (statusCell) {\n            statusCell.innerHTML = '<span class=\"badge badge-success badge-sm\">Confirmed</span>'\n          }\n        }\n      } else {\n        this.statusTarget.innerHTML = `\n          <div class=\"alert alert-error py-2\">\n            <span>${escapeHtml(data.error)}</span>\n          </div>\n        `\n        this.addLogEntry({ sku: qrData, error: data.error }, false)\n      }\n    } catch (error) {\n      this.statusTarget.innerHTML = `\n        <div class=\"alert alert-error py-2\">\n          <span>Network error: ${escapeHtml(error.message)}</span>\n        </div>\n      `\n    }\n\n    this.inputTarget.focus()\n  }\n\n  addLogEntry(item, success) {\n    const entry = document.createElement(\"div\")\n    entry.className = success\n      ? \"text-sm text-green-700 bg-green-50 px-2 py-1 rounded\"\n      : \"text-sm text-red-700 bg-red-50 px-2 py-1 rounded\"\n\n    const time = new Date().toLocaleTimeString()\n    entry.textContent = success\n      ? `${time} - ${item.order_number} ${item.sku}`\n      : `${time} - Error: ${item.error || \"Unknown\"}`\n\n    this.logTarget.prepend(entry)\n  }\n\n  updateProgressBar(summary) {\n    const stats = document.querySelectorAll(\".stat-value\")\n    if (stats.length >= 4) {\n      stats[2].textContent = summary.confirmed\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { resizedWidth } from \"../lib/placement_geometry\"\n\nconst MINIMUM_WIDTH = 7\nconst BLEND_MODES = { soft_light: \"soft-light\" }\n// The nested-attribute keys the editor writes per region. Each region card carries\n// one input per key, tagged `data-field=\"<key>\"`, whose `name` is the T12a wire\n// format `mockup_template[mockup_placements_attributes][N][key]`.\nconst FIELD_KEYS = [\n  \"position\", \"center_x_ratio\", \"center_y_ratio\", \"width_ratio\", \"height_ratio\",\n  \"rotation_degrees\", \"opacity\", \"blend_mode\", \"render_mode\",\n  \"location_identifier\", \"source_kind\", \"slot_index\"\n]\n// Placeholder token the region <template> markup uses in place of a real nested\n// index; cloned on \"Add region\" with every occurrence swapped for the next index.\nconst INDEX_TOKEN = \"__INDEX__\"\n\n// Keeps the browser placement preview synchronized with source-normalized form\n// values for ONE OR MORE print regions on a single mockup photo.\n//\n// A \"region\" is one print placement: an overlay box (border + drag/resize/rotate\n// handles) and a clipped artwork box in the stage, plus a control card carrying the\n// region's hidden/visible nested-attribute inputs. The controller drives every\n// region uniformly:\n//\n//   * Multi-region (the template editor): regions are discovered from the\n//     server-rendered `[data-region-index]` elements and can be added/removed up to\n//     `maxPlacementsValue`; each card's location/source/render-mode selects feed the\n//     region's inputs, and each region's print box aspect is locked to its catalog\n//     print location so the preview matches what the renderer will paint.\n//   * Single-region (the per-output adjust editor): no region elements exist, so one\n//     region is built from the legacy single-region targets (`overlay`,\n//     `centerXInput`, ...). All geometry/appearance logic is identical; add/delete,\n//     location, source-kind and render-mode controls simply never appear.\n//\n// The print box aspect ratio comes from each region's print location (defaulting to\n// the collection's primary aspect, 7:8), which keeps resize aspect-locked.\nexport default class extends Controller {\n  static targets = [\n    // Shared stage + legacy single-region targets (adjust editor).\n    \"stage\", \"mockup\", \"overlay\", \"artworkBox\", \"artwork\", \"calibrationInput\",\n    \"centerXInput\", \"centerYInput\", \"widthInput\", \"heightInput\",\n    \"rotationInput\", \"opacityInput\", \"opacityValue\", \"blendInput\",\n    \"cropFrame\", \"cropXInput\", \"cropYInput\", \"cropWidthInput\", \"cropHeightInput\", \"cropReadout\",\n    \"placeModeBtn\", \"cropModeBtn\",\n    // Multi-region targets (template editor).\n    \"artworkLayer\", \"overlayLayer\", \"regionList\", \"addButton\", \"tabList\",\n    \"artworkTemplate\", \"overlayTemplate\", \"cardTemplate\", \"tabTemplate\"\n  ]\n\n  static values = {\n    aspectWidth: { type: Number, default: 7 },\n    aspectHeight: { type: Number, default: 8 },\n    cropEnabled: { type: Boolean, default: false },\n    cutout: { type: Boolean, default: false },\n    outputWidth: { type: Number, default: 0 },\n    outputHeight: { type: Number, default: 0 },\n    artworkUrl: { type: String, default: \"\" },\n    maxPlacements: { type: Number, default: 0 }\n  }\n\n  connect() {\n    this.mode = null\n    this.editorMode = \"place\"\n    this.previewUrl = null\n    this.activeRegion = null\n    this.selectedRegion = null\n    this.buildRegions()\n    // A server-provided artwork preview (the adjust editor passes the batch's real\n    // print file); the calibration-upload flow still overrides it per region.\n    if (this.artworkUrlValue) {\n      this.liveRegions().forEach((region) => this.setArtworkSrc(region, this.artworkUrlValue))\n    }\n    this.resizeObserver = new ResizeObserver(() => this.sizeStage())\n    this.resizeObserver.observe(this.stageTarget.parentElement)\n    if (this.mockupTarget.complete) this.sizeStage()\n    this.applyEditorMode()\n    this.updateAddButton()\n    this.selectRegion(this.liveRegions()[0])\n  }\n\n  disconnect() {\n    this.resizeObserver?.disconnect()\n    this.revokePreviewUrl()\n  }\n\n  // --- Region discovery ----------------------------------------------------\n\n  // Builds `this.regions` from the server-rendered rows, or from the legacy\n  // single-region targets when no region rows exist. Also seeds `nextIndex`, the\n  // monotonic counter for freshly added rows (never reused, so nested indices stay\n  // distinct as required by `accepts_nested_attributes_for`).\n  buildRegions() {\n    const boxes = Array.from(this.element.querySelectorAll('[data-region-role=\"overlay\"][data-region-index]'))\n    if (boxes.length) {\n      this.multi = true\n      this.regions = boxes.map((box) => this.buildRegionFromDom(box))\n    } else {\n      this.multi = false\n      this.regions = this.hasOverlayTarget ? [ this.buildRegionFromTargets() ] : []\n    }\n    this.regionsByIndex = new Map(this.regions.map((region) => [ region.index, region ]))\n    this.nextIndex = this.regions.reduce((max, region) => Math.max(max, region.index), -1) + 1\n  }\n\n  // Assembles a region model from its server-rendered overlay/artwork/card elements.\n  buildRegionFromDom(box) {\n    const index = Number(box.dataset.regionIndex)\n    const artwork = this.element.querySelector(`[data-region-role=\"artwork\"][data-region-index=\"${index}\"]`)\n    const card = this.element.querySelector(`[data-region-role=\"card\"][data-region-index=\"${index}\"]`)\n    const tab = this.element.querySelector(`[data-region-role=\"tab\"][data-region-index=\"${index}\"]`)\n    return {\n      index,\n      destroyed: false,\n      box,\n      artwork,\n      artworkImg: artwork?.querySelector('[data-region-role=\"artworkImg\"]') || null,\n      card,\n      tab,\n      fields: this.collectFields(card),\n      aspectWidth: Number(box.dataset.aspectWidth) || this.aspectWidthValue,\n      aspectHeight: Number(box.dataset.aspectHeight) || this.aspectHeightValue,\n      opacityValueEl: card?.querySelector('[data-region-role=\"opacityValue\"]') || null,\n      slotWrapper: card?.querySelector('[data-region-role=\"slotWrapper\"]') || null,\n      blendWrapper: card?.querySelector('[data-region-role=\"blendWrapper\"]') || null,\n      labelEls: [ box.querySelector('[data-region-role=\"label\"]'), card?.querySelector('[data-region-role=\"label\"]'), tab?.querySelector('[data-region-role=\"label\"]') ].filter(Boolean)\n    }\n  }\n\n  // The single legacy region (adjust editor): geometry/appearance inputs come from\n  // the static single-region targets; there is no card, location, or source binding.\n  buildRegionFromTargets() {\n    return {\n      index: 0,\n      destroyed: false,\n      box: this.overlayTarget,\n      artwork: this.artworkBoxTarget,\n      artworkImg: this.hasArtworkTarget ? this.artworkTarget : null,\n      card: null,\n      fields: {\n        center_x_ratio: this.centerXInputTarget,\n        center_y_ratio: this.centerYInputTarget,\n        width_ratio: this.widthInputTarget,\n        height_ratio: this.heightInputTarget,\n        rotation_degrees: this.rotationInputTarget,\n        opacity: this.hasOpacityInputTarget ? this.opacityInputTarget : null,\n        blend_mode: this.hasBlendInputTarget ? this.blendInputTarget : null,\n        render_mode: null, location_identifier: null, source_kind: null,\n        slot_index: null, position: null, id: null, _destroy: null\n      },\n      aspectWidth: this.aspectWidthValue,\n      aspectHeight: this.aspectHeightValue,\n      opacityValueEl: this.hasOpacityValueTarget ? this.opacityValueTarget : null,\n      slotWrapper: null,\n      blendWrapper: null,\n      labelEls: []\n    }\n  }\n\n  collectFields(card) {\n    const fields = {}\n    if (!card) return fields\n    FIELD_KEYS.forEach((key) => { fields[key] = card.querySelector(`[data-field=\"${key}\"]`) })\n    fields.id = card.querySelector('[data-field=\"id\"]')\n    fields._destroy = card.querySelector('[data-field=\"_destroy\"]')\n    return fields\n  }\n\n  // --- Pointer gestures (drag / resize / rotate) ---------------------------\n\n  // Starts translating a region's print-area center with a captured pointer.\n  startDrag(event) {\n    const region = this.regionFor(event)\n    if (!region || !this.beginPointerMode(event, \"drag\")) return\n\n    this.activeRegion = region\n    this.selectRegion(region)\n    this.startPointer = this.stagePoint(event)\n    this.startCenter = this.currentCenterPixels(region)\n  }\n\n  // Starts resizing a region in its unrotated coordinate system.\n  startResize(event) {\n    event.stopPropagation()\n    const region = this.regionFor(event)\n    if (!region || !this.beginPointerMode(event, \"resize\")) return\n\n    this.activeRegion = region\n    this.selectRegion(region)\n    this.startPointer = this.stagePoint(event)\n    this.startWidth = region.box.offsetWidth\n  }\n\n  // Starts rotating a region's print area around its center.\n  startRotate(event) {\n    event.stopPropagation()\n    const region = this.regionFor(event)\n    if (!region || !this.beginPointerMode(event, \"rotate\")) return\n\n    this.activeRegion = region\n    this.selectRegion(region)\n  }\n\n  // Updates active drag, resize, or rotation geometry.\n  movePointer(event) {\n    if (!this.mode || event.pointerId !== this.pointerId) return\n\n    event.preventDefault()\n    if (this.mode === \"drag\") this.dragTo(event)\n    if (this.mode === \"resize\") this.resizeTo(event)\n    if (this.mode === \"rotate\") this.rotateTo(event)\n    if (this.mode === \"cropDrag\") this.cropDragTo(event)\n    if (this.mode === \"cropResize\") this.cropResizeTo(event)\n  }\n\n  // Finishes the active pointer gesture and releases capture.\n  endPointer(event) {\n    if (!this.mode || event.pointerId !== this.pointerId) return\n\n    if (this.pointerTarget?.hasPointerCapture(event.pointerId)) {\n      this.pointerTarget.releasePointerCapture(event.pointerId)\n    }\n    this.mode = null\n    this.pointerId = null\n    this.pointerTarget = null\n    this.activeRegion = null\n  }\n\n  // --- Region management (multi-region only) -------------------------------\n\n  // Adds a new print region by cloning the region templates, assigning the next\n  // monotonic nested index, and wiring it into the stage. No-op at the ceiling.\n  //\n  // @param {Event} [event]\n  addRegion(event) {\n    if (event) event.preventDefault()\n    if (!this.hasOverlayTemplateTarget || this.liveRegions().length >= this.maxPlacementsValue) return\n\n    // Harden against the T15 footgun: `multi` is normally latched once from the\n    // server-rendered DOM in `buildRegions()`, but a template can add its first\n    // region here (e.g. once `MockupTemplate#placement_configs` can return zero\n    // regions). Without this, `regionFor()` would keep resolving every event to\n    // the legacy single-region path and every drag/resize/rotate would bind to\n    // `regions[0]` instead of the region under the pointer. The adjust editor\n    // (N=1, no add button) never calls `addRegion`, so this is safe there.\n    this.multi = true\n    const index = this.nextIndex++\n    const position = Math.max(-1, ...this.liveRegions().map((region) => this.numberField(region, \"position\"))) + 1\n    const overlay = this.instantiate(this.overlayTemplateTarget, index)\n    const artwork = this.instantiate(this.artworkTemplateTarget, index)\n    const card = this.instantiate(this.cardTemplateTarget, index)\n    const tab = this.hasTabTemplateTarget ? this.instantiate(this.tabTemplateTarget, index) : null\n    this.overlayLayerTarget.appendChild(overlay)\n    this.artworkLayerTarget.appendChild(artwork)\n    this.regionListTarget.appendChild(card)\n    if (tab) this.tabListTarget.appendChild(tab)\n\n    const region = this.buildRegionFromDom(overlay)\n    this.regions.push(region)\n    this.regionsByIndex.set(index, region)\n    if (region.fields.position) region.fields.position.value = position\n    // Default the upload slot number to this region's 1-based ordinal (Region 1 -> slot 1,\n    // Region 2 -> slot 2), matching the region label. The seller can still edit it to point\n    // two regions at the same uploaded file. Only meaningful for upload_slot source.\n    if (region.fields.slot_index) region.fields.slot_index.value = position + 1\n    if (this.previewUrl) this.setArtworkSrc(region, this.previewUrl)\n    else if (this.artworkUrlValue) this.setArtworkSrc(region, this.artworkUrlValue)\n\n    this.applyRegionAspectFromLocation(region)\n    this.lockRegionAspect(region)\n    this.syncSourceKind(region)\n    this.renderRegion(region)\n    this.renumberLabels()\n    this.updateAddButton()\n    this.selectRegion(region)\n  }\n\n  // Removes a region: a persisted row (has an `id`) is flagged `_destroy` and hidden\n  // so the nested save deletes it; an unsaved row is removed from the DOM entirely.\n  //\n  // @param {Event} event\n  deleteRegion(event) {\n    if (event) event.preventDefault()\n    const region = this.regionFor(event)\n    if (!region || region.destroyed) return\n\n    const wasSelected = this.selectedRegion === region\n    region.destroyed = true\n    if (region.fields.id && region.fields.id.value) {\n      if (region.fields._destroy) region.fields._destroy.value = \"1\"\n      this.hideElements(region.box, region.artwork, region.card, region.tab)\n    } else {\n      region.box?.remove()\n      region.artwork?.remove()\n      region.card?.remove()\n      region.tab?.remove()\n      this.regions = this.regions.filter((candidate) => candidate !== region)\n      this.regionsByIndex.delete(region.index)\n    }\n    this.renumberLabels()\n    this.updateAddButton()\n    if (wasSelected) this.selectRegion(this.liveRegions()[0])\n  }\n\n  // Selects one region: shows its card, hides the others, and marks its tab active.\n  // A no-op outside the multi-region template editor (the adjust editor has one region\n  // and no tabs). The gesture handlers also call this so grabbing a region's box on the\n  // stage switches the tab to match what you are editing.\n  //\n  // @param {object} region\n  selectRegion(region) {\n    if (!this.multi || !region) return\n\n    this.selectedRegion = region\n    this.liveRegions().forEach((candidate) => {\n      const selected = candidate === region\n      candidate.card?.classList.toggle(\"hidden\", !selected)\n      candidate.tab?.classList.toggle(\"is-active\", selected)\n    })\n  }\n\n  // Tab click -> select that region's card.\n  //\n  // @param {Event} event\n  selectRegionTab(event) {\n    const region = this.regionFor(event)\n    if (region) this.selectRegion(region)\n  }\n\n  // Re-locks a region's box aspect to its selected print location.\n  //\n  // @param {Event} event\n  changeLocation(event) {\n    const region = this.regionFor(event)\n    if (!region) return\n\n    this.applyRegionAspectFromLocation(region)\n    this.lockRegionAspect(region)\n  }\n\n  // Shows/hides the slot-number input for a region's source binding.\n  //\n  // @param {Event} event\n  changeSourceKind(event) {\n    const region = this.regionFor(event)\n    if (region) this.syncSourceKind(region)\n  }\n\n  // Hides a region's blend control in cutout mode and refreshes its appearance.\n  //\n  // @param {Event} event\n  changeRenderMode(event) {\n    const region = this.regionFor(event)\n    if (!region) return\n\n    const cutout = region.fields.render_mode?.value === \"cutout\"\n    if (region.blendWrapper) region.blendWrapper.classList.toggle(\"hidden\", cutout)\n    this.renderRegionAppearance(region)\n  }\n\n  // --- Rendering -----------------------------------------------------------\n\n  // Previews a local calibration PNG in every region without adding it to the form.\n  previewCalibration() {\n    const file = this.calibrationInputTarget.files[0]\n    if (!file) return\n\n    this.revokePreviewUrl()\n    this.previewUrl = URL.createObjectURL(file)\n    this.liveRegions().forEach((region) => this.setArtworkSrc(region, this.previewUrl))\n  }\n\n  // Fits the stage to the rendered image, including portrait source images.\n  sizeStage() {\n    if (!this.mockupTarget.naturalWidth || !this.mockupTarget.naturalHeight) return\n\n    const aspectRatio = this.mockupTarget.naturalWidth / this.mockupTarget.naturalHeight\n    const availableWidth = this.stageTarget.parentElement.clientWidth\n    const availableHeight = window.innerHeight * 0.72\n    this.stageTarget.style.width = `${Math.min(availableWidth, availableHeight * aspectRatio)}px`\n    this.renderFromInputs()\n    this.renderCropFromInputs()\n  }\n\n  // Rebuilds every live region's displayed geometry from its saved normalized values.\n  // Wired to per-region rotation inputs and to stage sizing; each region reads only\n  // its own inputs, so re-rendering all regions after one changes is safe.\n  renderFromInputs() {\n    this.liveRegions().forEach((region) => this.renderRegion(region))\n  }\n\n  // Reapplies opacity and blend mode for every live region.\n  renderAppearance() {\n    this.liveRegions().forEach((region) => this.renderRegionAppearance(region))\n  }\n\n  // Renders one region's pixel geometry (aspect-locked) and appearance.\n  renderRegion(region) {\n    const stage = this.stageSize()\n    if (!stage.width || !stage.height) return\n\n    const maximumWidth = this.numberField(region, \"width_ratio\") * stage.width\n    const maximumHeight = this.numberField(region, \"height_ratio\") * stage.height\n    const width = Math.min(maximumWidth, maximumHeight * this.boxAspect(region))\n    const height = width / this.boxAspect(region)\n    const center = {\n      x: this.numberField(region, \"center_x_ratio\") * stage.width,\n      y: this.numberField(region, \"center_y_ratio\") * stage.height\n    }\n\n    this.renderGeometry(region, center, width, height)\n    this.renderRegionAppearance(region)\n  }\n\n  // Applies opacity and the browser equivalent of the region's blend mode. Opacity\n  // fades the image; the blend mode goes on the box (the element that composites over\n  // the mockup) so it blends against the photo. Cutout composites with a plain Over\n  // (its blend control is hidden), so the preview always blends normally.\n  renderRegionAppearance(region) {\n    const opacity = this.numberField(region, \"opacity\")\n    const cutout = region.fields.render_mode ? region.fields.render_mode.value === \"cutout\" : this.cutoutValue\n    const blendField = region.fields.blend_mode\n    const blendMode = cutout || !blendField ? \"normal\" : blendField.value\n    if (region.artworkImg) {\n      region.artworkImg.style.opacity = opacity\n      region.artworkImg.style.mixBlendMode = \"normal\"\n    }\n    if (region.artwork) region.artwork.style.mixBlendMode = BLEND_MODES[blendMode] || blendMode\n    if (region.opacityValueEl) region.opacityValueEl.textContent = `${Math.round(opacity * 100)}%`\n  }\n\n  renderGeometry(region, center, width, height) {\n    const transform = `translate(-50%, -50%) rotate(${this.numberField(region, \"rotation_degrees\")}deg)`\n    for (const box of [ region.artwork, region.box ]) {\n      if (!box) continue\n      box.style.width = `${width}px`\n      box.style.height = `${height}px`\n      box.style.left = `${center.x}px`\n      box.style.top = `${center.y}px`\n      box.style.transform = transform\n    }\n  }\n\n  dragTo(event) {\n    const region = this.activeRegion\n    const stage = this.stageSize()\n    const point = this.stagePoint(event)\n    const center = {\n      x: this.clamp(this.startCenter.x + point.x - this.startPointer.x, 0, stage.width),\n      y: this.clamp(this.startCenter.y + point.y - this.startPointer.y, 0, stage.height)\n    }\n\n    region.fields.center_x_ratio.value = center.x / stage.width\n    region.fields.center_y_ratio.value = center.y / stage.height\n    this.renderGeometry(region, center, region.box.offsetWidth, region.box.offsetHeight)\n  }\n\n  resizeTo(event) {\n    const region = this.activeRegion\n    const stage = this.stageSize()\n    const pointerDelta = {\n      x: this.stagePoint(event).x - this.startPointer.x,\n      y: this.stagePoint(event).y - this.startPointer.y\n    }\n    const maximumWidth = Math.min(stage.width, stage.height * this.boxAspect(region))\n    const width = resizedWidth({\n      startWidth: this.startWidth,\n      screenDelta: pointerDelta,\n      rotationDegrees: this.numberField(region, \"rotation_degrees\"),\n      minimumWidth: MINIMUM_WIDTH,\n      maximumWidth,\n      aspectRatio: 1 / this.boxAspect(region)\n    })\n    const height = width / this.boxAspect(region)\n\n    region.fields.width_ratio.value = width / stage.width\n    region.fields.height_ratio.value = height / stage.height\n    this.renderGeometry(region, this.currentCenterPixels(region), width, height)\n  }\n\n  rotateTo(event) {\n    const region = this.activeRegion\n    const center = this.currentCenterPixels(region)\n    const point = this.stagePoint(event)\n    const angle = Math.atan2(point.y - center.y, point.x - center.x) * 180 / Math.PI + 90\n    region.fields.rotation_degrees.value = this.normalizedDegrees(angle).toFixed(1)\n    this.renderGeometry(region, center, region.box.offsetWidth, region.box.offsetHeight)\n  }\n\n  // Re-derives a region's box height from its width so the box matches the print\n  // location aspect exactly (what keeps the preview frame == the rendered art).\n  lockRegionAspect(region) {\n    const stage = this.stageSize()\n    if (!stage.width || !stage.height) return\n\n    const maximumWidth = Math.min(stage.width, stage.height * this.boxAspect(region))\n    const desiredWidth = this.numberField(region, \"width_ratio\") * stage.width\n    const width = Math.min(Math.max(desiredWidth, MINIMUM_WIDTH), maximumWidth)\n    const height = width / this.boxAspect(region)\n    if (region.fields.width_ratio) region.fields.width_ratio.value = width / stage.width\n    if (region.fields.height_ratio) region.fields.height_ratio.value = height / stage.height\n    this.renderRegion(region)\n  }\n\n  // --- Crop mode (template-level; single crop rect) ------------------------\n\n  // Switches to cropping: the crop frame becomes editable, print overlays hide.\n  enterCropMode(event) {\n    if (event) event.preventDefault()\n    this.editorMode = \"crop\"\n    this.applyEditorMode()\n  }\n\n  // Switches back to placing prints inside the crop frame.\n  enterPlaceMode(event) {\n    if (event) event.preventDefault()\n    this.editorMode = \"place\"\n    this.applyEditorMode()\n  }\n\n  applyEditorMode() {\n    if (!this.cropEnabledValue) return\n\n    const cropping = this.editorMode === \"crop\"\n    if (this.hasCropFrameTarget) this.cropFrameTarget.classList.toggle(\"is-editable\", cropping)\n    this.liveRegions().forEach((region) => {\n      const display = cropping ? \"none\" : \"\"\n      if (region.box) region.box.style.display = display\n      if (region.artwork) region.artwork.style.display = display\n    })\n    if (this.hasCropModeBtnTarget) this.cropModeBtnTarget.setAttribute(\"aria-pressed\", String(cropping))\n    if (this.hasPlaceModeBtnTarget) this.placeModeBtnTarget.setAttribute(\"aria-pressed\", String(!cropping))\n  }\n\n  startCropDrag(event) {\n    if (this.editorMode !== \"crop\") return\n    if (!this.beginPointerMode(event, \"cropDrag\")) return\n\n    this.startPointer = this.stagePoint(event)\n    this.startCrop = this.currentCropPixels()\n  }\n\n  startCropResize(event) {\n    event.stopPropagation()\n    if (this.editorMode !== \"crop\") return\n    if (!this.beginPointerMode(event, \"cropResize\")) return\n\n    this.startPointer = this.stagePoint(event)\n    this.startCrop = this.currentCropPixels()\n  }\n\n  cropDragTo(event) {\n    const stage = this.stageSize()\n    const point = this.stagePoint(event)\n    const x = this.clamp(this.startCrop.x + point.x - this.startPointer.x, 0, stage.width - this.startCrop.width)\n    const y = this.clamp(this.startCrop.y + point.y - this.startPointer.y, 0, stage.height - this.startCrop.height)\n    this.writeCrop({ x, y, width: this.startCrop.width, height: this.startCrop.height })\n  }\n\n  cropResizeTo(event) {\n    const stage = this.stageSize()\n    const point = this.stagePoint(event)\n    const aspect = this.cropAspect()\n    const maxWidth = Math.min(stage.width - this.startCrop.x, (stage.height - this.startCrop.y) * aspect)\n    const width = Math.max(40, Math.min(this.startCrop.width + point.x - this.startPointer.x, maxWidth))\n    this.writeCrop({ x: this.startCrop.x, y: this.startCrop.y, width, height: width / aspect })\n  }\n\n  // Renders the crop frame from stored ratios; the first time (nothing set yet) it\n  // seeds a centered, aspect-locked frame so an untouched template still gets a\n  // sensible uniform crop.\n  renderCropFromInputs() {\n    if (!this.cropEnabledValue || !this.hasCropFrameTarget) return\n\n    const stage = this.stageSize()\n    if (!stage.width || !stage.height) return\n\n    const crop = this.cropIsUnset() ? this.centeredCrop(stage) : this.currentCropPixels()\n    this.writeCrop(crop)\n  }\n\n  writeCrop(crop) {\n    const stage = this.stageSize()\n    const frame = this.cropFrameTarget.style\n    frame.left = `${crop.x}px`\n    frame.top = `${crop.y}px`\n    frame.width = `${crop.width}px`\n    frame.height = `${crop.height}px`\n\n    this.cropXInputTarget.value = crop.x / stage.width\n    this.cropYInputTarget.value = crop.y / stage.height\n    this.cropWidthInputTarget.value = crop.width / stage.width\n    this.cropHeightInputTarget.value = crop.height / stage.height\n    if (this.hasCropReadoutTarget && this.outputWidthValue > 0) {\n      this.cropReadoutTarget.textContent = `${this.outputWidthValue} \u00D7 ${this.outputHeightValue} px`\n    }\n  }\n\n  cropIsUnset() {\n    return this.numberValue(this.cropWidthInputTarget) >= 0.999 &&\n      this.numberValue(this.cropHeightInputTarget) >= 0.999 &&\n      this.numberValue(this.cropXInputTarget) <= 0.001 &&\n      this.numberValue(this.cropYInputTarget) <= 0.001\n  }\n\n  centeredCrop(stage) {\n    const aspect = this.cropAspect()\n    const stageAspect = stage.width / stage.height\n    let width, height\n    if (aspect > stageAspect) {\n      width = stage.width\n      height = width / aspect\n    } else {\n      height = stage.height\n      width = height * aspect\n    }\n    return { x: (stage.width - width) / 2, y: (stage.height - height) / 2, width, height }\n  }\n\n  currentCropPixels() {\n    const stage = this.stageSize()\n    return {\n      x: this.numberValue(this.cropXInputTarget) * stage.width,\n      y: this.numberValue(this.cropYInputTarget) * stage.height,\n      width: this.numberValue(this.cropWidthInputTarget) * stage.width,\n      height: this.numberValue(this.cropHeightInputTarget) * stage.height\n    }\n  }\n\n  cropAspect() {\n    if (this.outputWidthValue > 0 && this.outputHeightValue > 0) {\n      return this.outputWidthValue / this.outputHeightValue\n    }\n    return 1\n  }\n\n  // --- Helpers -------------------------------------------------------------\n\n  beginPointerMode(event, mode) {\n    if (event.button !== 0) return false\n\n    event.preventDefault()\n    this.mode = mode\n    this.pointerId = event.pointerId\n    this.pointerTarget = event.currentTarget\n    this.pointerTarget.setPointerCapture(event.pointerId)\n    return true\n  }\n\n  // Resolves the region a control/handle event belongs to: the nearest\n  // `[data-region-index]` ancestor (multi-region), or the sole legacy region.\n  regionFor(event) {\n    if (this.multi) {\n      const element = event.currentTarget.closest(\"[data-region-index]\")\n      return element ? this.regionsByIndex.get(Number(element.dataset.regionIndex)) : null\n    }\n    return this.regions[0] || null\n  }\n\n  liveRegions() {\n    return this.regions.filter((region) => !region.destroyed)\n  }\n\n  // Clones a region <template>, swapping the placeholder index for a real one.\n  instantiate(templateTarget, index) {\n    const holder = document.createElement(\"template\")\n    holder.innerHTML = templateTarget.innerHTML.replaceAll(INDEX_TOKEN, String(index)).trim()\n    return holder.content.firstElementChild\n  }\n\n  // Reads the print location's aspect from the region's selected location option.\n  applyRegionAspectFromLocation(region) {\n    const select = region.fields.location_identifier\n    const option = select?.selectedOptions[0]\n    if (!option) return\n\n    const width = Number(option.dataset.aspectWidth)\n    const height = Number(option.dataset.aspectHeight)\n    if (width > 0 && height > 0) {\n      region.aspectWidth = width\n      region.aspectHeight = height\n      if (region.box) {\n        region.box.dataset.aspectWidth = width\n        region.box.dataset.aspectHeight = height\n      }\n    }\n  }\n\n  syncSourceKind(region) {\n    if (!region.slotWrapper) return\n\n    const upload = region.fields.source_kind?.value === \"upload_slot\"\n    region.slotWrapper.classList.toggle(\"hidden\", !upload)\n    const slot = region.fields.slot_index\n    if (!slot) return\n    if (!upload) slot.value = \"\"\n    else if (slot.value === \"\") slot.value = \"1\"\n  }\n\n  renumberLabels() {\n    let ordinal = 0\n    this.regions.forEach((region) => {\n      if (region.destroyed) return\n      ordinal += 1\n      region.labelEls.forEach((element) => { element.textContent = ordinal })\n    })\n  }\n\n  updateAddButton() {\n    if (!this.hasAddButtonTarget) return\n    this.addButtonTarget.disabled = this.liveRegions().length >= this.maxPlacementsValue\n  }\n\n  setArtworkSrc(region, src) {\n    if (region.artworkImg) region.artworkImg.src = src\n  }\n\n  hideElements(...elements) {\n    elements.forEach((element) => { if (element) element.style.display = \"none\" })\n  }\n\n  // Print box aspect ratio (width / height) for a region's print location.\n  boxAspect(region) {\n    return region.aspectWidth / region.aspectHeight\n  }\n\n  currentCenterPixels(region) {\n    const stage = this.stageSize()\n    return {\n      x: this.numberField(region, \"center_x_ratio\") * stage.width,\n      y: this.numberField(region, \"center_y_ratio\") * stage.height\n    }\n  }\n\n  stagePoint(event) {\n    const bounds = this.stageTarget.getBoundingClientRect()\n    return { x: event.clientX - bounds.left, y: event.clientY - bounds.top }\n  }\n\n  stageSize() {\n    return { width: this.stageTarget.clientWidth, height: this.stageTarget.clientHeight }\n  }\n\n  normalizedDegrees(degrees) {\n    return ((degrees + 180) % 360 + 360) % 360 - 180\n  }\n\n  numberField(region, key) {\n    return this.numberValue(region.fields[key])\n  }\n\n  numberValue(input) {\n    const value = Number.parseFloat(input?.value)\n    return Number.isFinite(value) ? value : 0\n  }\n\n  clamp(value, minimum, maximum) {\n    return Math.min(Math.max(value, minimum), maximum)\n  }\n\n  revokePreviewUrl() {\n    if (!this.previewUrl) return\n\n    URL.revokeObjectURL(this.previewUrl)\n    this.previewUrl = null\n  }\n}\n", "// Derives a center-anchored print-aspect box width from a rotated corner gesture.\n// aspectRatio is height / width of the print area (defaults to the source app's 8:7).\nexport function resizedWidth({\n  startWidth,\n  screenDelta,\n  rotationDegrees,\n  minimumWidth,\n  maximumWidth,\n  aspectRatio = 8 / 7\n}) {\n  const localDelta = rotateVector(screenDelta, -rotationDegrees * Math.PI / 180)\n  const diagonalProjection = (\n    localDelta.x + aspectRatio * localDelta.y\n  ) / (1 + aspectRatio ** 2)\n  const width = startWidth + 2 * diagonalProjection\n  return Math.min(Math.max(width, minimumWidth), maximumWidth)\n}\n\nfunction rotateVector(vector, radians) {\n  const cosine = Math.cos(radians)\n  const sine = Math.sin(radians)\n  return {\n    x: vector.x * cosine - vector.y * sine,\n    y: vector.x * sine + vector.y * cosine\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Manages the purchase order filter UI with dropdowns and count badges\nexport default class extends Controller {\n  static targets = [\n    \"form\",\n    \"poNumber\",\n    // Dropdowns\n    \"statusDropdown\", \"supplierDropdown\",\n    // Count badges\n    \"statusCount\", \"supplierCount\",\n    // Search inputs\n    \"supplierSearch\",\n    // Filter items\n    \"supplierItem\"\n  ]\n\n  connect() {\n    this.openDropdown = null\n\n    // Initialize counts\n    setTimeout(() => {\n      this.updateAllCounts()\n    }, 0)\n\n    // Close dropdowns when clicking outside\n    this.boundCloseDropdowns = this.closeDropdownsOnOutsideClick.bind(this)\n    document.addEventListener(\"click\", this.boundCloseDropdowns)\n  }\n\n  disconnect() {\n    document.removeEventListener(\"click\", this.boundCloseDropdowns)\n  }\n\n  toggleDropdown(event) {\n    event.preventDefault()\n    event.stopPropagation()\n\n    const dropdownName = event.params.dropdown\n    const dropdown = this[`${dropdownName}DropdownTarget`]\n\n    if (this.openDropdown && this.openDropdown !== dropdown) {\n      this.openDropdown.classList.add(\"hidden\")\n    }\n\n    dropdown.classList.toggle(\"hidden\")\n    this.openDropdown = dropdown.classList.contains(\"hidden\") ? null : dropdown\n  }\n\n  closeDropdownsOnOutsideClick(event) {\n    if (this.openDropdown && !this.element.contains(event.target)) {\n      this.openDropdown.classList.add(\"hidden\")\n      this.openDropdown = null\n    }\n  }\n\n  updateCounts() {\n    this.updateAllCounts()\n  }\n\n  updateAllCounts() {\n    // Status count\n    if (this.hasStatusCountTarget) {\n      const count = this.formTarget.querySelectorAll('input[name=\"statuses[]\"]:checked').length\n      this.updateCountBadge(this.statusCountTarget, count)\n    }\n\n    // Supplier count\n    if (this.hasSupplierCountTarget) {\n      const count = this.formTarget.querySelectorAll('input[name=\"supplier_ids[]\"]:checked').length\n      this.updateCountBadge(this.supplierCountTarget, count)\n    }\n  }\n\n  updateCountBadge(badge, count) {\n    if (count > 0) {\n      badge.textContent = count\n      badge.classList.remove(\"hidden\")\n    } else {\n      badge.classList.add(\"hidden\")\n    }\n  }\n\n  filterSuppliers(event) {\n    const searchTerm = event.target.value.toLowerCase()\n\n    this.supplierItemTargets.forEach(item => {\n      const label = item.querySelector('label').textContent.toLowerCase()\n      if (label.includes(searchTerm)) {\n        item.style.display = ''\n      } else {\n        item.style.display = 'none'\n      }\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport TomSelect from \"tom-select\"\n\nexport default class extends Controller {\n  static targets = [\n    \"typeSelect\",\n    \"catalogItemWrapper\",\n    \"variantCatalogItemWrapper\",\n    \"variantCatalogItemSelect\",\n    \"variantWrapper\",\n    \"variantSelect\",\n    \"supplyWrapper\",\n    \"swatchWrapper\",\n    \"colorSwatchGrid\",\n    \"sizeBadgeGrid\",\n    \"swatchSelectionLabel\",\n    \"swatchVariantId\"\n  ]\n\n  static values = {\n    variantsUrl: { type: String, default: \"/jobs/purchase_orders/variants\" },\n    variantOptionsUrl: { type: String, default: \"/jobs/purchase_orders/variant_options\" }\n  }\n\n  connect() {\n    this.tomSelects = []\n    this.selectedColorId = null\n    this.selectedColorName = null\n    this.selectedSizeId = null\n    this.selectedSizeName = null\n    this.swatchCatalogItemId = null\n  }\n\n  disconnect() {\n    this.destroyAllTomSelects()\n  }\n\n  typeChanged() {\n    const selected = this.typeSelectTarget.value\n\n    this.hideAllFields()\n    this.destroyAllTomSelects()\n    this.resetSwatchState()\n\n    if (selected === \"catalog_item\") {\n      this.showWrapper(this.catalogItemWrapperTarget)\n      this.initTomSelect(this.selectIn(this.catalogItemWrapperTarget))\n    } else if (selected === \"catalog_item_variant\") {\n      this.showWrapper(this.variantCatalogItemWrapperTarget)\n      this.initTomSelect(this.variantCatalogItemSelectTarget)\n    } else if (selected === \"supply\") {\n      this.showWrapper(this.supplyWrapperTarget)\n      this.initTomSelect(this.selectIn(this.supplyWrapperTarget))\n    }\n  }\n\n  variantCatalogItemChanged() {\n    const catalogItemId = this.variantCatalogItemSelectTarget.value\n\n    this.destroyTomSelectOn(this.variantSelectTarget)\n    this.hideSwatchMode()\n    this.resetSwatchState()\n\n    if (!catalogItemId) {\n      this.variantSelectTarget.innerHTML = '<option value=\"\">Select variant...</option>'\n      this.variantWrapperTarget.classList.add(\"hidden\")\n      return\n    }\n\n    // Check if swatch mode should be used\n    const optionsUrl = `${this.variantOptionsUrlValue}?catalog_item_id=${catalogItemId}`\n    fetch(optionsUrl, { headers: { \"Accept\": \"application/json\" } })\n      .then(response => response.json())\n      .then(data => {\n        if (data.swatch_mode) {\n          this.showSwatchMode(data, catalogItemId)\n        } else {\n          this.loadVariantDropdown(catalogItemId)\n        }\n      })\n  }\n\n  // Private\n\n  loadVariantDropdown(catalogItemId) {\n    const url = `${this.variantsUrlValue}?catalog_item_id=${catalogItemId}`\n    fetch(url, { headers: { \"Accept\": \"application/json\" } })\n      .then(response => response.json())\n      .then(variants => {\n        const variantSelect = this.variantSelectTarget\n        variantSelect.innerHTML = '<option value=\"\">Select variant...</option>'\n        variants.forEach(v => {\n          const option = document.createElement(\"option\")\n          option.value = v.id\n          option.textContent = v.label\n          variantSelect.appendChild(option)\n        })\n        this.showWrapper(this.variantWrapperTarget)\n        this.initTomSelect(variantSelect)\n      })\n  }\n\n  showSwatchMode(data, catalogItemId) {\n    this.swatchCatalogItemId = catalogItemId\n    this.variantWrapperTarget.classList.add(\"hidden\")\n\n    // Render color swatches\n    const colorGrid = this.colorSwatchGridTarget\n    colorGrid.innerHTML = \"\"\n\n    if (data.colors.length > 0) {\n      const label = document.createElement(\"label\")\n      label.className = \"block text-sm font-medium text-gray-700 mb-2\"\n      label.textContent = \"Color\"\n      colorGrid.appendChild(label)\n\n      const grid = document.createElement(\"div\")\n      grid.className = \"flex flex-wrap gap-2\"\n\n      data.colors.forEach(color => {\n        const btn = document.createElement(\"button\")\n        btn.type = \"button\"\n        btn.dataset.colorId = color.id\n        btn.dataset.colorName = color.name\n        btn.className = \"relative h-8 w-8 rounded-full border-2 border-gray-300 transition-all duration-150 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary cursor-pointer\"\n        btn.style.backgroundColor = color.swatch_hex || \"#E5E7EB\"\n        btn.title = color.name\n        btn.addEventListener(\"click\", (e) => this.selectColor(e))\n\n        if (!color.swatch_hex) {\n          const abbr = document.createElement(\"span\")\n          abbr.className = \"absolute inset-0 flex items-center justify-center text-[8px] font-medium text-gray-600\"\n          abbr.textContent = color.name.substring(0, 3).toUpperCase()\n          btn.appendChild(abbr)\n        }\n\n        grid.appendChild(btn)\n      })\n\n      colorGrid.appendChild(grid)\n    }\n\n    // Render size badges\n    const sizeGrid = this.sizeBadgeGridTarget\n    sizeGrid.innerHTML = \"\"\n\n    if (data.sizes.length > 0) {\n      const label = document.createElement(\"label\")\n      label.className = \"block text-sm font-medium text-gray-700 mb-2\"\n      label.textContent = \"Size\"\n      sizeGrid.appendChild(label)\n\n      const container = document.createElement(\"div\")\n      container.className = \"flex flex-wrap gap-2\"\n\n      data.sizes.forEach(size => {\n        const btn = document.createElement(\"button\")\n        btn.type = \"button\"\n        btn.dataset.sizeId = size.id\n        btn.dataset.sizeName = size.name\n        btn.className = \"rounded-full border px-3 py-1.5 text-sm font-medium transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-primary bg-base-200 text-base-content border-gray-300 cursor-pointer\"\n        btn.textContent = size.name\n        btn.addEventListener(\"click\", (e) => this.selectSize(e))\n        container.appendChild(btn)\n      })\n\n      sizeGrid.appendChild(container)\n    }\n\n    this.updateSwatchLabel()\n    this.swatchWrapperTarget.classList.remove(\"hidden\")\n  }\n\n  hideSwatchMode() {\n    if (this.hasSwatchWrapperTarget) {\n      this.swatchWrapperTarget.classList.add(\"hidden\")\n    }\n  }\n\n  selectColor(event) {\n    const btn = event.currentTarget\n    const colorId = btn.dataset.colorId\n\n    // Deselect all colors\n    this.colorSwatchGridTarget.querySelectorAll(\"button[data-color-id]\").forEach(b => {\n      b.classList.remove(\"ring-2\", \"ring-primary\", \"ring-offset-2\", \"border-primary\")\n      b.classList.add(\"border-gray-300\")\n    })\n\n    // Select this one\n    btn.classList.add(\"ring-2\", \"ring-primary\", \"ring-offset-2\", \"border-primary\")\n    btn.classList.remove(\"border-gray-300\")\n\n    this.selectedColorId = colorId\n    this.selectedColorName = btn.dataset.colorName\n    this.updateSwatchLabel()\n    this.resolveVariant()\n  }\n\n  selectSize(event) {\n    const btn = event.currentTarget\n    const sizeId = btn.dataset.sizeId\n\n    // Deselect all sizes\n    this.sizeBadgeGridTarget.querySelectorAll(\"button[data-size-id]\").forEach(b => {\n      b.classList.remove(\"bg-primary\", \"text-primary-content\", \"border-primary\")\n      b.classList.add(\"bg-base-200\", \"text-base-content\", \"border-gray-300\")\n    })\n\n    // Select this one\n    btn.classList.add(\"bg-primary\", \"text-primary-content\", \"border-primary\")\n    btn.classList.remove(\"bg-base-200\", \"text-base-content\", \"border-gray-300\")\n\n    this.selectedSizeId = sizeId\n    this.selectedSizeName = btn.dataset.sizeName\n    this.updateSwatchLabel()\n    this.resolveVariant()\n  }\n\n  updateSwatchLabel() {\n    if (!this.hasSwatchSelectionLabelTarget) return\n\n    if (this.selectedColorName && this.selectedSizeName) {\n      this.swatchSelectionLabelTarget.textContent = `${this.selectedColorName} / ${this.selectedSizeName}`\n      this.swatchSelectionLabelTarget.classList.remove(\"text-gray-500\")\n      this.swatchSelectionLabelTarget.classList.add(\"text-gray-900\", \"font-medium\")\n    } else if (this.selectedColorName) {\n      this.swatchSelectionLabelTarget.textContent = `${this.selectedColorName} - select a size`\n      this.swatchSelectionLabelTarget.classList.add(\"text-gray-500\")\n      this.swatchSelectionLabelTarget.classList.remove(\"text-gray-900\", \"font-medium\")\n    } else if (this.selectedSizeName) {\n      this.swatchSelectionLabelTarget.textContent = `Select a color - ${this.selectedSizeName}`\n      this.swatchSelectionLabelTarget.classList.add(\"text-gray-500\")\n      this.swatchSelectionLabelTarget.classList.remove(\"text-gray-900\", \"font-medium\")\n    } else {\n      this.swatchSelectionLabelTarget.textContent = \"Select a color and size\"\n      this.swatchSelectionLabelTarget.classList.add(\"text-gray-500\")\n      this.swatchSelectionLabelTarget.classList.remove(\"text-gray-900\", \"font-medium\")\n    }\n  }\n\n  resolveVariant() {\n    if (!this.selectedColorId || !this.selectedSizeId) {\n      if (this.hasSwatchVariantIdTarget) {\n        this.swatchVariantIdTarget.value = \"\"\n      }\n      return\n    }\n\n    const url = `${this.variantsUrlValue}?catalog_item_id=${this.swatchCatalogItemId}&color_option_id=${this.selectedColorId}&size_option_id=${this.selectedSizeId}`\n    fetch(url, { headers: { \"Accept\": \"application/json\" } })\n      .then(response => response.json())\n      .then(data => {\n        if (this.hasSwatchVariantIdTarget) {\n          this.swatchVariantIdTarget.value = data.id || \"\"\n        }\n        if (data.label) {\n          this.swatchSelectionLabelTarget.textContent = `${this.selectedColorName} / ${this.selectedSizeName} \u2014 ${data.label}`\n        }\n      })\n  }\n\n  resetSwatchState() {\n    this.selectedColorId = null\n    this.selectedColorName = null\n    this.selectedSizeId = null\n    this.selectedSizeName = null\n    this.swatchCatalogItemId = null\n    if (this.hasSwatchVariantIdTarget) {\n      this.swatchVariantIdTarget.value = \"\"\n    }\n  }\n\n  selectIn(wrapper) {\n    return wrapper.querySelector(\"select\")\n  }\n\n  hideAllFields() {\n    ;[\n      this.catalogItemWrapperTarget,\n      this.variantCatalogItemWrapperTarget,\n      this.variantWrapperTarget,\n      this.supplyWrapperTarget\n    ].forEach(wrapper => {\n      wrapper.classList.add(\"hidden\")\n      const select = this.selectIn(wrapper)\n      if (select) select.value = \"\"\n    })\n    this.hideSwatchMode()\n  }\n\n  showWrapper(wrapper) {\n    wrapper.classList.remove(\"hidden\")\n  }\n\n  initTomSelect(selectEl) {\n    if (!selectEl || selectEl.tomselect) return\n\n    const ts = new TomSelect(selectEl, {\n      allowEmptyOption: true,\n      controlInput: null\n    })\n    this.tomSelects.push(ts)\n  }\n\n  destroyTomSelectOn(selectEl) {\n    if (!selectEl) return\n    const instance = selectEl.tomselect\n    if (instance) {\n      this.tomSelects = this.tomSelects.filter(ts => ts !== instance)\n      instance.destroy()\n    }\n  }\n\n  destroyAllTomSelects() {\n    this.tomSelects.forEach(ts => {\n      try { ts.destroy() } catch (e) { /* already destroyed */ }\n    })\n    this.tomSelects = []\n  }\n}\n", "/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\ntype TCallback = (...args:any) => any;\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events:string,callback:(event:string)=>any){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\n\tpublic _events: {[key:string]:TCallback[]};\n\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events:string, fct:TCallback){\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = this._events[event] || [];\n\t\t\tevent_array.push(fct);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\toff(events:string, fct:TCallback){\n\t\tvar n = arguments.length;\n\t\tif( n === 0 ){\n\t\t\tthis._events = {};\n\t\t\treturn;\n\t\t}\n\n\t\tforEvents(events,(event) => {\n\n\t\t\tif (n === 1){\n\t\t\t\tdelete this._events[event];\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst event_array = this._events[event];\n\t\t\tif( event_array === undefined ) return;\n\n\t\t\tevent_array.splice(event_array.indexOf(fct), 1);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\ttrigger(events:string, ...args:any){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = self._events[event];\n\t\t\tif( event_array === undefined ) return;\n\t\t\tevent_array.forEach(fct => {\n\t\t\t\tfct.apply(self, args );\n\t\t\t});\n\n\t\t});\n\t}\n};\n", "/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\ntype TSettings = {\n\t[key:string]:any\n}\n\ntype TPlugins = {\n\tnames: string[],\n\tsettings: TSettings,\n\trequested: {[key:string]:boolean},\n\tloaded: {[key:string]:any}\n};\n\nexport type TPluginItem = {name:string,options:{}};\nexport type TPluginHash = {[key:string]:{}};\n\n\n\n\nexport default function MicroPlugin(Interface: any ){\n\n\tInterface.plugins = {};\n\n\treturn class extends Interface{\n\n\t\tpublic plugins:TPlugins = {\n\t\t\tnames     : [],\n\t\t\tsettings  : {},\n\t\t\trequested : {},\n\t\t\tloaded    : {}\n\t\t};\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name:string, fn:(this:any,settings:TSettings)=>any){\n\t\t\tInterface.plugins[name] = {\n\t\t\t\t'name' : name,\n\t\t\t\t'fn'   : fn\n\t\t\t};\n\t\t}\n\n\n\t\t/**\n\t\t * Initializes the listed plugins (with options).\n\t\t * Acceptable formats:\n\t\t *\n\t\t * List (without options):\n\t\t *   ['a', 'b', 'c']\n\t\t *\n\t\t * List (with options):\n\t\t *   [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n\t\t *\n\t\t * Hash (with options):\n\t\t *   {'a': { ... }, 'b': { ... }, 'c': { ... }}\n\t\t *\n\t\t * @param {array|object} plugins\n\t\t */\n\t\tinitializePlugins(plugins:string[]|TPluginItem[]|TPluginHash) {\n\t\t\tvar key, name;\n\t\t\tconst self  = this;\n\t\t\tconst queue:string[] = [];\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tplugins.forEach((plugin:string|TPluginItem)=>{\n\t\t\t\t\tif (typeof plugin === 'string') {\n\t\t\t\t\t\tqueue.push(plugin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugin.name] = plugin.options;\n\t\t\t\t\t\tqueue.push(plugin.name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (plugins) {\n\t\t\t\tfor (key in plugins) {\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\n\t\t\t\t\t\tqueue.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile( name = queue.shift() ){\n\t\t\t\tself.require(name);\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name:string) {\n\t\t\tvar self    = this;\n\t\t\tvar plugins = self.plugins;\n\t\t\tvar plugin  = Interface.plugins[name];\n\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\n\t\t\t\tthrow new Error('Unable to find \"' +  name + '\" plugin');\n\t\t\t}\n\n\t\t\tplugins.requested[name] = true;\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n\t\t\tplugins.names.push(name);\n\t\t}\n\n\t\t/**\n\t\t * Initializes a plugin.\n\t\t *\n\t\t */\n\t\trequire(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\n\t\t\t\tif (plugins.requested[name]) {\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\n\t\t\t\t}\n\t\t\t\tself.loadPlugin(name);\n\t\t\t}\n\n\t\t\treturn plugins.loaded[name];\n\t\t}\n\n\t};\n\n}\n", "/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n */\nexport const arrayToPattern = (chars: string[]): string => {\n\n\tchars = chars.filter( Boolean );\n\n\tif( chars.length < 2 ){\n\t\treturn chars[0] || '';\n\t}\n\n\treturn (maxValueLength(chars) == 1) ? '['+chars.join('')+']' : '(?:'+chars.join('|')+')';\n};\n\nexport const sequencePattern = (array: string[]): string => {\n\n\tif( !hasDuplicates(array) ){\n\t\treturn array.join('');\n\t}\n\n\tlet pattern = '';\n\tlet prev_char_count = 0;\n\n\tconst prev_pattern = ()=>{\n\t\tif( prev_char_count > 1 ){\n\t\t\tpattern += '{'+prev_char_count+'}';\n\t\t}\n\t}\n\n\tarray.forEach((char,i)=>{\n\n\t\tif( char === array[i-1] ){\n\t\t\tprev_char_count++;\n\t\t\treturn;\n\t\t}\n\n\t\tprev_pattern();\n\n\t\tpattern += char;\n\t\tprev_char_count = 1;\n\t});\n\n\tprev_pattern();\n\n\treturn pattern;\n\n}\n\n\n\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n */\nexport const setToPattern = (chars: Set<string>): string => {\n\tlet array = Array.from(chars);\n\treturn arrayToPattern(array);\n}\n\n\n\n/**\n * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values\n */\nexport const hasDuplicates = (array: any[]) => {\n    return (new Set(array)).size !== array.length;\n}\n\n\n/**\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n */\nexport const escape_regex = (str: string): string => {\n\treturn (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n\n/**\n * Return the max length of array values\n */\nexport const maxValueLength = (array: string[]) => {\n\treturn array.reduce( (longest, value) => Math.max(longest,unicodeLength(value)),0);\n}\n\n\nexport const unicodeLength = (str: string) => {\n\treturn Array.from(str).length;\n}\n", "/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n */\nexport const allSubstrings = (input: string): string[][] => {\n\n    if( input.length === 1) return [[input]];\n\n    let result: string[][] = [];\n\n\tconst start = input.substring(1);\n    const suba = allSubstrings(start);\n\n\tsuba.forEach(function(subresult) {\n        let tmp = subresult.slice(0);\n        tmp[0] = input.charAt(0) + tmp[0];\n        result.push(tmp);\n\n        tmp = subresult.slice(0);\n        tmp.unshift(input.charAt(0));\n        result.push(tmp);\n    });\n\n    return result;\n}\n", "import { setToPattern, arrayToPattern, escape_regex, sequencePattern } from './regex.ts';\nimport { allSubstrings } from './strings.ts';\n\nexport type TUnicodeMap = {[key:string]:string};\nexport type TUnicodeSets = {[key:string]:Set<string>};\nexport type TCodePoints = [[number,number]];\nexport type TCodePointObj = {folded:string,composed:string,code_point:number}\nexport type TSequencePart = {start:number,end:number,length:number,substr:string}\n\nexport const code_points: TCodePoints = [[ 0, 65535 ]];\n\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}\\u{2bc}]';\n\nexport let unicode_map: TUnicodeMap;\n\nlet multi_char_reg: RegExp;\n\nconst max_char_length = 3;\n\nconst latin_convert: TUnicodeMap = {}\n\nconst latin_condensed: TUnicodeMap = {\n\t'/': '\u2044\u2215',\n\t'0': '\u07C0',\n\t\"a\": \"\u2C65\u0250\u0251\",\n\t\"aa\": \"\uA733\",\n\t\"ae\": \"\u00E6\u01FD\u01E3\",\n\t\"ao\": \"\uA735\",\n\t\"au\": \"\uA737\",\n\t\"av\": \"\uA739\uA73B\",\n\t\"ay\": \"\uA73D\",\n\t\"b\": \"\u0180\u0253\u0183\",\n\t\"c\": \"\uA73F\u0188\u023C\u2184\",\n\t\"d\": \"\u0111\u0257\u0256\u1D05\u018C\uABB7\u0501\u0266\",\n\t\"e\": \"\u025B\u01DD\u1D07\u0247\",\n\t\"f\": \"\uA77C\u0192\",\n\t\"g\": \"\u01E5\u0260\uA7A1\u1D79\uA77F\u0262\",\n\t\"h\": \"\u0127\u2C68\u2C76\u0265\",\n\t\"i\": \"\u0268\u0131\",\n\t\"j\": \"\u0249\u0237\",\n\t\"k\": \"\u0199\u2C6A\uA741\uA743\uA745\uA7A3\",\n\t\"l\": \"\u0142\u019A\u026B\u2C61\uA749\uA747\uA781\u026D\",\n\t\"m\": \"\u0271\u026F\u03FB\",\n\t\"n\": \"\uA7A5\u019E\u0272\uA791\u1D0E\u043B\u0509\",\n\t\"o\": \"\u00F8\u01FF\u0254\u0275\uA74B\uA74D\u1D11\",\n\t\"oe\": \"\u0153\",\n\t\"oi\": \"\u01A3\",\n\t\"oo\": \"\uA74F\",\n\t\"ou\": \"\u0223\",\n\t\"p\": \"\u01A5\u1D7D\uA751\uA753\uA755\u03C1\",\n\t\"q\": \"\uA757\uA759\u024B\",\n\t\"r\": \"\u024D\u027D\uA75B\uA7A7\uA783\",\n\t\"s\": \"\u00DF\u023F\uA7A9\uA785\u0282\",\n\t\"t\": \"\u0167\u01AD\u0288\u2C66\uA787\",\n\t\"th\": \"\u00FE\",\n\t\"tz\": \"\uA729\",\n\t\"u\": \"\u0289\",\n\t\"v\": \"\u028B\uA75F\u028C\",\n\t\"vy\": \"\uA761\",\n\t\"w\": \"\u2C73\",\n\t\"y\": \"\u01B4\u024F\u1EFF\",\n\t\"z\": \"\u01B6\u0225\u0240\u2C6C\uA763\",\n\t\"hv\": \"\u0195\"\n}\n\n\nfor( let latin in latin_condensed ){\n\tlet unicode = latin_condensed[latin] || '';\n\tfor( let i = 0; i < unicode.length; i++){\n\t\tlet char\t= unicode.substring(i,i+1);\n\t\tlatin_convert[char] = latin;\n\t}\n}\n\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|')+'|'+accent_pat,'gu');\n\n\n\n/**\n * Initialize the unicode_map from the give code point ranges\n */\nexport const initialize = (_code_points?: TCodePoints) => {\n\tif( unicode_map !== undefined ) return;\n\tunicode_map = generateMap(_code_points || code_points );\n}\n\n\n/**\n * Helper method for normalize a string\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n */\nexport const normalize = (str: string, form: string = 'NFKD') => str.normalize(form);\n\n\n\n/**\n * Remove accents without reordering string\n * calling str.normalize('NFKD') on \\u{594}\\u{595}\\u{596} becomes \\u{596}\\u{594}\\u{595}\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n */\nexport const asciifold = (str: string): string => {\n\n\treturn Array.from(str).reduce(\n\t\t/**\n\t\t * @param {string} result\n\t\t * @param {string} char\n\t\t */\n\t\t(result, char) =>{\n\t\t\treturn result + _asciifold(char)\n\t\t},\n\t\t''\n\t);\n};\n\nexport const _asciifold = (str: string): string => {\n\tstr = normalize(str)\n\t\t.toLowerCase()\n\t\t.replace(convert_pat,(/** @type {string} */ char) => {\n\t\t\treturn latin_convert[char] || '';\n\t\t})\n\n\t//return str;\n\treturn normalize(str,'NFC')\n};\n\n/**\n * Generate a list of unicode variants from the list of code points\n */\nexport function* generator(code_points: TCodePoints): Generator<TCodePointObj> {\n\n\tfor(const [code_point_min, code_point_max] of code_points){\n\t\tfor(let i = code_point_min; i <= code_point_max; i++){\n\n\t\t\tlet composed\t\t= String.fromCharCode(i);\n\t\t\tlet folded\t\t\t= asciifold(composed);\n\n\n\t\t\tif( folded == composed.toLowerCase() ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// skip when folded is a string longer than 3 characters long\n\t\t\t// bc the resulting regex patterns will be long\n\t\t\t// eg:\n\t\t\t// folded \u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644\u064A\u0647 \u0648\u0633\u0644\u0645 length 18 code point 65018\n\t\t\t// folded \u062C\u0644 \u062C\u0644\u0627\u0644\u0647 length 8 code point 65019\n\t\t\tif( folded.length > max_char_length ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( folded.length == 0 ){\n\t\t\t\tcontinue\n\t\t\t}\n\n\n\t\t\tyield {folded:folded,composed:composed,code_point:i};\n\t\t}\n\t}\n}\n\n\n/**\n * Generate a unicode map from the list of code points\n */\nexport const generateSets = (code_points: TCodePoints): TUnicodeSets => {\n\n\tconst unicode_sets: {[key: string]: Set<string>} = {};\n\n\tconst addMatching = (folded: string, to_add: string) => {\n\n\t\t/** @type {Set<string>} */\n\t\tconst folded_set = unicode_sets[folded] || new Set();\n\n\t\tconst patt = new RegExp( '^'+setToPattern(folded_set)+'$','iu');\n\t\tif( to_add.match(patt) ){\n\t\t\treturn;\n\t\t}\n\n\t\tfolded_set.add(escape_regex(to_add));\n\t\tunicode_sets[folded] = folded_set;\n\t}\n\n\n\tfor( let value of generator(code_points) ){\n\t\taddMatching(value.folded,value.folded);\n\t\taddMatching(value.folded,value.composed);\n\t}\n\n\treturn unicode_sets;\n}\n\n/**\n * Generate a unicode map from the list of code points\n * ae => (?:(?:ae|\u00C6|\u01FC|\u01E2)|(?:A|\u24B6|\uFF21...)(?:E|\u025B|\u24BA...))\n */\nexport const generateMap = (code_points: TCodePoints): TUnicodeMap => {\n\tconst unicode_sets = generateSets(code_points);\n\n\tconst unicode_map: TUnicodeMap = {};\n\n\tlet multi_char: string[] = [];\n\n\tfor( let folded in unicode_sets ){\n\n\t\tlet set = unicode_sets[folded];\n\t\tif( set ){\n\t\t\tunicode_map[folded] = setToPattern(set);\n\t\t}\n\n\t\tif( folded.length > 1 ){\n\t\t\tmulti_char.push(escape_regex(folded));\n\t\t}\n\t}\n\n\tmulti_char.sort((a, b) => b.length - a.length );\n\tconst multi_char_patt = arrayToPattern(multi_char);\n\tmulti_char_reg = new RegExp('^'+multi_char_patt,'u');\n\n\treturn unicode_map;\n}\n\n\n/**\n * Map each element of an array from its folded value to all possible unicode matches\n */\nexport const mapSequence = (strings: string[], min_replacement: number = 1): string =>{\n\tlet chars_replaced = 0;\n\n\tstrings = strings.map((str)=>{\n\t\tif( unicode_map[str] ){\n\t\t\tchars_replaced += str.length;\n\t\t}\n\t\treturn unicode_map[str] || str;\n\t});\n\n\tif( chars_replaced >= min_replacement ){\n\t\treturn sequencePattern(strings);\n\t}\n\n\treturn '';\n}\n\n/**\n * Convert a short string and split it into all possible patterns\n * Keep a pattern only if min_replacement is met\n *\n * 'abc'\n * \t\t=> [['abc'],['ab','c'],['a','bc'],['a','b','c']]\n *\t\t=> ['abc-pattern','ab-c-pattern'...]\n */\nexport const substringsToPattern = (str: string, min_replacement: number = 1): string => {\n\n\tmin_replacement = Math.max(min_replacement,str.length-1);\n\n\treturn arrayToPattern(\n\t\tallSubstrings(str).map( (sub_pat) =>{\n\t\t\treturn mapSequence(sub_pat,min_replacement)\n\t\t})\n\t);\n}\n\n/**\n * Convert an array of sequences into a pattern\n * [{start:0,end:3,length:3,substr:'iii'}...] => (?:iii...)\n */\nconst sequencesToPattern = (sequences: Sequence[], all: boolean = true) => {\n\n\tlet min_replacement = sequences.length > 1 ? 1 : 0;\n\treturn arrayToPattern(\n\t\tsequences.map( (sequence) =>{\n\t\t\tlet seq: string[] = [];\n\t\t\tconst len = all ? sequence.length() : sequence.length() - 1;\n\t\t\tfor( let j = 0; j < len; j++){\n\t\t\t\tseq.push(substringsToPattern(sequence.substrs[j]||'',min_replacement));\n\t\t\t}\n\n\t\t\treturn sequencePattern(seq);\n\t\t})\n\t);\n}\n\n/**\n * Return true if the sequence is already in the sequences\n */\nconst inSequences = (needle_seq: Sequence, sequences: Sequence[]) => {\n\n\tfor(const seq of sequences){\n\n\t\tif( seq.start != needle_seq.start || seq.end != needle_seq.end ){\n\t\t\tcontinue;\n\t\t}\n\n\t\tif( seq.substrs.join('') !== needle_seq.substrs.join('') ){\n\t\t\tcontinue;\n\t\t}\n\n\n\t\tlet needle_parts\t= needle_seq.parts;\n\n\t\tconst filter = (part: TSequencePart) =>{\n\n\t\t\tfor(const needle_part of needle_parts){\n\n\t\t\t\tif( needle_part.start === part.start && needle_part.substr === part.substr ){\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif( part.length == 1 || needle_part.length == 1 ){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\n\t\t\t\t// check for overlapping parts\n\t\t\t\t// a = ['::=','==']\n\t\t\t\t// b = ['::','===']\n\t\t\t\t// a = ['r','sm']\n\t\t\t\t// b = ['rs','m']\n\t\t\t\tif( part.start < needle_part.start && part.end > needle_part.start ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif( needle_part.start < part.start && needle_part.end > part.start ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn false;\n\t\t};\n\n\t\tlet filtered = seq.parts.filter(filter);\n\n\t\tif( filtered.length > 0 ){\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nclass Sequence{\n\tparts: TSequencePart[];\n\tsubstrs: string[];\n\tstart: number;\n\tend: number;\n\n\tconstructor(){\n\t\tthis.parts\t\t= [];\n\t\tthis.substrs\t= [];\n\t\tthis.start\t\t= 0;\n\t\tthis.end\t\t= 0;\n\t}\n\n\tadd(part: TSequencePart|undefined){\n\t\tif( part ){\n\t\t\tthis.parts.push(part);\n\t\t\tthis.substrs.push(part.substr);\n\t\t\tthis.start\t= Math.min(part.start,this.start);\n\t\t\tthis.end\t= Math.max(part.end,this.end);\n\t\t}\n\t}\n\n\tlast(){\n\t\treturn this.parts[this.parts.length-1];\n\t}\n\n\tlength(){\n\t\treturn this.parts.length;\n\t}\n\n\tclone(position: number, last_piece: TSequencePart){\n\t\tlet clone = new Sequence();\n\n\t\tlet parts = JSON.parse(JSON.stringify(this.parts));\n\t\tlet last_part = parts.pop();\n\t\tfor( const part of parts ){\n\t\t\tclone.add(part);\n\t\t}\n\n\t\tlet last_substr = last_piece.substr.substring(0,position-last_part.start);\n\t\tlet clone_last_len = last_substr.length;\n\t\tclone.add({start:last_part.start,end:last_part.start+clone_last_len,length:clone_last_len,substr:last_substr});\n\n\t\treturn clone;\n\t}\n\n}\n\n/**\n * Expand a regular expression pattern to include unicode variants\n * \teg /a/ becomes /a\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251A\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F/\n *\n * Issue:\n *  \uFE8A\uFE8B [ '\uFE8A = \\\\u{fe8a}', '\uFE8B = \\\\u{fe8b}' ]\n *\tbecomes:\t\u064A\u0654\u064A\u0654 [ '\u064A = \\\\u{64a}', '\u0654 = \\\\u{654}', '\u064A = \\\\u{64a}', '\u0654 = \\\\u{654}' ]\n *\n *\t\u0130\u0132 = IIJ = \u2161J\n *\n * \t1/2/4\n */\nexport const getPattern = (str: string): string | undefined => {\n\tinitialize();\n\n\tstr\t\t\t\t\t= asciifold(str);\n\n\tlet pattern\t\t\t= '';\n\tlet sequences\t\t= [new Sequence()];\n\n\tfor( let i = 0; i < str.length; i++ ){\n\n\t\tlet substr\t= str.substring(i);\n\t\tlet match\t= substr.match(multi_char_reg);\n\t\tconst char\t= str.substring(i,i+1);\n\t\tconst match_str = match ? match[0] : null;\n\n\n\t\t// loop through sequences\n\t\t// add either the char or multi_match\n\t\tlet overlapping: Sequence[]\t= [];\n\t\tlet added_types\t\t\t\t\t\t\t= new Set();\n\t\tfor(const sequence of sequences){\n\n\t\t\tconst last_piece\t= sequence.last();\n\n\n\t\t\tif( !last_piece || last_piece.length == 1 || last_piece.end <= i ){\n\n\t\t\t\t// if we have a multi match\n\t\t\t\tif( match_str ){\n\t\t\t\t\tconst len = match_str.length;\n\t\t\t\t\tsequence.add({start:i,end:i+len,length:len,substr:match_str});\n\t\t\t\t\tadded_types.add('1');\n\t\t\t\t}else{\n\t\t\t\t\tsequence.add({start:i,end:i+1,length:1,substr:char});\n\t\t\t\t\tadded_types.add('2');\n\t\t\t\t}\n\n\t\t\t}else if( match_str ){\n\n\t\t\t\tlet clone = sequence.clone(i,last_piece);\n\n\t\t\t\tconst len = match_str.length;\n\t\t\t\tclone.add({start:i,end:i+len,length:len,substr:match_str});\n\n\t\t\t\toverlapping.push(clone);\n\n\t\t\t}else{\n\t\t\t\t// don't add char\n\t\t\t\t// adding would create invalid patterns: 234 => [2,34,4]\n\t\t\t\tadded_types.add('3');\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if we have overlapping\n\t\tif( overlapping.length > 0 ){\n\n\t\t\t// ['ii','iii'] before ['i','i','iii']\n\t\t\toverlapping = overlapping.sort((a,b)=>{\n\t\t\t\treturn a.length() - b.length();\n\t\t\t});\n\n\t\t\tfor( let clone of overlapping){\n\n\t\t\t\t// don't add if we already have an equivalent sequence\n\t\t\t\tif( inSequences(clone, sequences) ){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tsequences.push(clone);\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\n\t\t// if we haven't done anything unique\n\t\t// clean up the patterns\n\t\t// helps keep patterns smaller\n\t\t// if str = 'r\u20A8\u33A7aarss', pattern will be 446 instead of 655\n\t\tif( i > 0 && added_types.size == 1 && !added_types.has('3') ){\n\t\t\tpattern += sequencesToPattern(sequences,false);\n\t\t\tlet new_seq = new Sequence();\n\t\t\tconst old_seq = sequences[0];\n\t\t\tif( old_seq ){\n\t\t\t\tnew_seq.add(old_seq.last());\n\t\t\t}\n\t\t\tsequences = [new_seq];\n\t\t}\n\n\t}\n\n\tpattern += sequencesToPattern(sequences,true);\n\n\treturn pattern;\n}\n\n\nexport { escape_regex };\n", "\nimport { asciifold } from '@orchidjs/unicode-variants';\nimport * as T from './types.ts';\n\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nexport const getAttr = (obj:{[key:string]:any}, name:string ) => {\n    if (!obj ) return;\n    return obj[name];\n};\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nexport const getAttrNesting = (obj:{[key:string]:any}, name:string ) => {\n    if (!obj ) return;\n    var part, names = name.split(\".\");\n\twhile( (part = names.shift()) && (obj = obj[part]));\n    return obj;\n};\n\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const scoreValue = (value:string, token:T.Token, weight:number ):number => {\n\tvar score, pos;\n\n\tif (!value) return 0;\n\n\tvalue = value + '';\n\tif( token.regex == null ) return 0;\n\tpos = value.search(token.regex);\n\tif (pos === -1) return 0;\n\n\tscore = token.string.length / value.length;\n\tif (pos === 0) score += 0.5;\n\n\treturn score * weight;\n};\n\n\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const propToArray = (obj:{[key:string]:any}, key:string) => {\n\tvar value = obj[key];\n\n\tif( typeof value == 'function' ) return value;\n\n\tif( value && !Array.isArray(value) ){\n\t\tobj[key] = [value];\n\t}\n}\n\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nexport const cmp = (a:number|string, b:number|string) => {\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a > b ? 1 : (a < b ? -1 : 0);\n\t}\n\ta = asciifold(a + '').toLowerCase();\n\tb = asciifold(b + '').toLowerCase();\n\tif (a > b) return 1;\n\tif (b > a) return -1;\n\treturn 0;\n};\n", "/**\n * sifter.js\n * Copyright (c) 2013\u20132020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\nimport { scoreValue, getAttr, getAttrNesting, propToArray, iterate, cmp } from './utils.ts';\nimport { getPattern, escape_regex } from '@orchidjs/unicode-variants';\nimport * as T from './types.ts';\n\nclass Sifter{\n\n\tpublic items: any; // []|{};\n\tpublic settings: T.Settings;\n\n\t/**\n\t * Textually searches arrays and hashes of objects\n\t * by property (or multiple properties). Designed\n\t * specifically for autocomplete.\n\t *\n\t */\n\tconstructor(items:any, settings:T.Settings) {\n\t\tthis.items = items;\n\t\tthis.settings = settings || {diacritics: true};\n\t};\n\n\t/**\n\t * Splits a search string into an array of individual\n\t * regexps to be used to match results.\n\t *\n\t */\n\ttokenize(query:string, respect_word_boundaries?:boolean, weights?:T.Weights ):T.Token[] {\n\t\tif (!query || !query.length) return [];\n\n\t\tconst tokens:T.Token[]\t= [];\n\t\tconst words\t\t\t\t= query.split(/\\s+/);\n\t\tvar field_regex:RegExp;\n\n\t\tif( weights ){\n\t\t\tfield_regex = new RegExp( '^('+ Object.keys(weights).map(escape_regex).join('|')+')\\:(.*)$');\n\t\t}\n\n\t\twords.forEach((word:string) => {\n\t\t\tlet field_match;\n\t\t\tlet field:null|string\t= null;\n\t\t\tlet regex:null|string\t= null;\n\n\t\t\t// look for \"field:query\" tokens\n\t\t\tif( field_regex && (field_match = word.match(field_regex)) ){\n\t\t\t\tfield\t= field_match[1]!;\n\t\t\t\tword\t= field_match[2]!;\n\t\t\t}\n\n\t\t\tif( word.length > 0 ){\n\t\t\t\tif( this.settings.diacritics ){\n\t\t\t\t\tregex = getPattern(word) || null;\n\t\t\t\t}else{\n\t\t\t\t\tregex = escape_regex(word);\n\t\t\t\t}\n\t\t\t\tif( regex && respect_word_boundaries ) regex = \"\\\\b\"+regex;\n\t\t\t}\n\n\t\t\ttokens.push({\n\t\t\t\tstring : word,\n\t\t\t\tregex  : regex ? new RegExp(regex,'iu') : null,\n\t\t\t\tfield  : field,\n\t\t\t});\n\t\t});\n\n\t\treturn tokens;\n\t};\n\n\n\t/**\n\t * Returns a function to be used to score individual results.\n\t *\n\t * Good matches will have a higher score than poor matches.\n\t * If an item is not a match, 0 will be returned by the function.\n\t *\n\t * @returns {T.ScoreFn}\n\t */\n\tgetScoreFunction(query:string, options:T.UserOptions ){\n\t\tvar search = this.prepareSearch(query, options);\n\t\treturn this._getScoreFunction(search);\n\t}\n\n\t/**\n\t * @returns {T.ScoreFn}\n\t *\n\t */\n\t_getScoreFunction(search:T.PrepareObj ){\n\t\tconst tokens\t\t= search.tokens,\n\t\ttoken_count\t\t\t= tokens.length;\n\n\t\tif (!token_count) {\n\t\t\treturn function() { return 0; };\n\t\t}\n\n\t\tconst fields\t= search.options.fields,\n\t\tweights\t\t\t= search.weights,\n\t\tfield_count\t\t= fields.length,\n\t\tgetAttrFn\t\t= search.getAttrFn;\n\n\t\tif (!field_count) {\n\t\t\treturn function() { return 1; };\n\t\t}\n\n\n\t\t/**\n\t\t * Calculates the score of an object\n\t\t * against the search query.\n\t\t *\n\t\t */\n\t\tconst scoreObject = (function() {\n\n\n\t\t\tif (field_count === 1) {\n\t\t\t\treturn function(token:T.Token, data:{}) {\n\t\t\t\t\tconst field = fields[0]!.field;\n\t\t\t\t\treturn scoreValue(getAttrFn(data, field), token, weights[field]||1);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function(token:T.Token, data:{}) {\n\t\t\t\tvar sum = 0;\n\n\t\t\t\t// is the token specific to a field?\n\t\t\t\tif( token.field ){\n\n\t\t\t\t\tconst value = getAttrFn(data, token.field);\n\n\t\t\t\t\tif( !token.regex && value ){\n\t\t\t\t\t\tsum += (1/field_count);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tsum += scoreValue(value, token, 1);\n\t\t\t\t\t}\n\n\n\n\t\t\t\t}else{\n\t\t\t\t\titerate(weights, (weight:number, field:string) => {\n\t\t\t\t\t\tsum += scoreValue(getAttrFn(data, field), token, weight);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn sum / field_count;\n\t\t\t};\n\t\t})();\n\n\t\tif (token_count === 1) {\n\t\t\treturn function(data:{}) {\n\t\t\t\treturn scoreObject(tokens[0]!, data);\n\t\t\t};\n\t\t}\n\n\t\tif (search.options.conjunction === 'and') {\n\t\t\treturn function(data:{}) {\n\t\t\t\tvar score, sum = 0;\n\t\t\t\tfor( let token of tokens){\n\t\t\t\t\tscore = scoreObject(token, data);\n\t\t\t\t\tif (score <= 0) return 0;\n\t\t\t\t\tsum += score;\n\t\t\t\t}\n\t\t\t\treturn sum / token_count;\n\t\t\t};\n\t\t} else {\n\t\t\treturn function(data:{}) {\n\t\t\t\tvar sum = 0;\n\t\t\t\titerate(tokens,(token:T.Token)=>{\n\t\t\t\t\tsum += scoreObject(token, data);\n\t\t\t\t});\n\t\t\t\treturn sum / token_count;\n\t\t\t};\n\t\t}\n\t};\n\n\t/**\n\t * Returns a function that can be used to compare two\n\t * results, for sorting purposes. If no sorting should\n\t * be performed, `null` will be returned.\n\t *\n\t * @return function(a,b)\n\t */\n\tgetSortFunction(query:string, options:T.UserOptions) {\n\t\tvar search  = this.prepareSearch(query, options);\n\t\treturn this._getSortFunction(search);\n\t}\n\n\t_getSortFunction(search:T.PrepareObj){\n\t\tvar implicit_score,\n\t\tsort_flds:T.Sort[]\t= [];\n\n\t\tconst self\t= this,\n\t\toptions\t\t= search.options,\n\t\tsort\t\t= (!search.query && options.sort_empty) ? options.sort_empty : options.sort;\n\n\n\t\tif( typeof sort == 'function' ){\n\t\t\treturn sort.bind(this);\n\t\t}\n\n\t\t/**\n\t\t * Fetches the specified sort field value\n\t\t * from a search result item.\n\t\t *\n\t\t */\n\t\tconst get_field = function(name:string, result:T.ResultItem):string|number {\n\t\t\tif (name === '$score') return result.score;\n\t\t\treturn search.getAttrFn(self.items[result.id], name);\n\t\t};\n\n\t\t// parse options\n\t\tif (sort) {\n\t\t\tfor( let s of sort ){\n\t\t\t\tif (search.query || s.field !== '$score') {\n\t\t\t\t\tsort_flds.push(s);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// the \"$score\" field is implied to be the primary\n\t\t// sort field, unless it's manually specified\n\t\tif (search.query) {\n\t\t\timplicit_score = true;\n\t\t\tfor( let fld of sort_flds ){\n\t\t\t\tif( fld.field === '$score' ){\n\t\t\t\t\timplicit_score = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (implicit_score) {\n\t\t\t\tsort_flds.unshift({field: '$score', direction: 'desc'});\n\t\t\t}\n\n\t\t// without a search.query, all items will have the same score\n\t\t} else {\n\t\t\tsort_flds = sort_flds.filter((fld) => fld.field !== '$score' );\n\t\t}\n\n\n\t\t// build function\n\t\tconst sort_flds_count = sort_flds.length;\n\t\tif (!sort_flds_count) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn function(a:T.ResultItem, b:T.ResultItem) {\n\t\t\tvar result, field;\n\t\t\tfor( let sort_fld of sort_flds ){\n\t\t\t\tfield = sort_fld.field;\n\n\t\t\t\tlet\tmultiplier = sort_fld.direction === 'desc' ? -1 : 1;\n\n\t\t\t\tresult = multiplier * cmp(\n\t\t\t\t\tget_field(field, a),\n\t\t\t\t\tget_field(field, b)\n\t\t\t\t);\n\t\t\t\tif (result) return result;\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\n\t};\n\n\t/**\n\t * Parses a search query and returns an object\n\t * with tokens and fields ready to be populated\n\t * with results.\n\t *\n\t */\n\tprepareSearch(query:string, optsUser:T.UserOptions):T.PrepareObj {\n\t\tconst weights:T.Weights = {};\n\t\tvar options\t\t= Object.assign({},optsUser) as T.Options;\n\n\t\tpropToArray(options,'sort');\n\t\tpropToArray(options,'sort_empty');\n\n\t\t// convert fields to new format\n\t\tif( options.fields ){\n\t\t\tpropToArray(options,'fields');\n\t\t\tconst fields:T.Field[] = [];\n\t\t\toptions.fields.forEach((field:string|T.Field) => {\n\t\t\t\tif( typeof field == 'string' ){\n\t\t\t\t\tfield = {field:field,weight:1};\n\t\t\t\t}\n\t\t\t\tfields.push(field);\n\t\t\t\tweights[field.field] = ('weight' in field) ? field.weight : 1;\n\t\t\t});\n\t\t\toptions.fields = fields;\n\t\t}\n\n\n\t\treturn {\n\t\t\toptions\t\t: options as T.Options,\n\t\t\tquery\t\t: query.toLowerCase().trim(),\n\t\t\ttokens\t\t: this.tokenize(query, options.respect_word_boundaries, weights),\n\t\t\ttotal\t\t: 0,\n\t\t\titems\t\t: [],\n\t\t\tweights\t\t: weights,\n\t\t\tgetAttrFn\t: (options.nesting) ? getAttrNesting : getAttr,\n\t\t};\n\t};\n\n\t/**\n\t * Searches through all items and returns a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string, options:T.UserOptions) : T.PrepareObj {\n\t\tvar self = this, score, search: T.PrepareObj;\n\n\t\tsearch  = this.prepareSearch(query, options);\n\t\toptions = search.options;\n\t\tquery   = search.query;\n\n\t\t// generate result scoring function\n\t\tconst fn_score:T.ScoreFn = options.score || self._getScoreFunction(search);\n\n\t\t// perform search and sort\n\t\tif (query.length) {\n\t\t\titerate(self.items, (item:T.ResultItem, id:string|number) => {\n\t\t\t\tscore = fn_score(item);\n\t\t\t\tif (options.filter === false || score > 0) {\n\t\t\t\t\tsearch.items.push({'score': score, 'id': id});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\titerate(self.items, (_:T.ResultItem, id:string|number) => {\n\t\t\t\tsearch.items.push({'score': 1, 'id': id});\n\t\t\t});\n\t\t}\n\n\t\tconst fn_sort = self._getSortFunction(search);\n\t\tif (fn_sort) search.items.sort(fn_sort);\n\n\t\t// apply limits\n\t\tsearch.total = search.items.length;\n\t\tif (typeof options.limit === 'number') {\n\t\t\tsearch.items = search.items.slice(0, options.limit);\n\t\t}\n\n\t\treturn search;\n\t};\n}\n\nexport { Sifter, scoreValue, getAttr, getAttrNesting, propToArray, iterate, cmp, getPattern }\nexport * from './types.ts';\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\n\nimport {replaceNode} from '../vanilla.ts';\n\n\nexport const highlight = (element:HTMLElement, regex:string|RegExp) => {\n\n\tif( regex === null ) return;\n\n\t// convet string to regex\n\tif( typeof regex === 'string' ){\n\n\t\tif( !regex.length ) return;\n\t\tregex = new RegExp(regex, 'i');\n\t}\n\n\n\t// Wrap matching part of text node with highlighting <span>, e.g.\n\t// Soccer  ->  <span class=\"highlight\">Soc</span>cer  for regex = /soc/i\n\tconst highlightText = ( node:Text ):number => {\n\n\t\tvar match = node.data.match(regex);\n\t\tif( match && node.data.length > 0 ){\n\t\t\tvar spannode\t\t= document.createElement('span');\n\t\t\tspannode.className\t= 'highlight';\n\t\t\tvar middlebit\t\t= node.splitText(match.index as number);\n\n\t\t\tmiddlebit.splitText(match[0]!.length);\n\t\t\tvar middleclone\t\t= middlebit.cloneNode(true);\n\n\t\t\tspannode.appendChild(middleclone);\n\t\t\treplaceNode(middlebit, spannode);\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\n\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t// is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n\tconst highlightChildren = ( node:Element ):void => {\n\t\tif( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && ( node.className !== 'highlight' || node.tagName !== 'SPAN' ) ){\n\t\t\tArray.from(node.childNodes).forEach(element => {\n\t\t\t\thighlightRecursive(element);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tconst highlightRecursive = ( node:Node|Element ):number => {\n\n\t\tif( node.nodeType === 3 ){\n\t\t\treturn highlightText(node as Text);\n\t\t}\n\n\t\thighlightChildren(node as Element);\n\n\t\treturn 0;\n\t};\n\n\thighlightRecursive( element );\n};\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el:HTMLElement) => {\n\tvar elements = el.querySelectorAll(\"span.highlight\");\n\tArray.prototype.forEach.call(elements, function(el:HTMLElement){\n\t\tvar parent = el.parentNode as Node;\n\t\tparent.replaceChild(el.firstChild as Node, el);\n\t\tparent.normalize();\n\t});\n};\n", "export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC      \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n", "\nexport default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: null,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\thighlight: true,\n\topenOnFocus: true,\n\tshouldOpen: null,\n\tmaxOptions: 50,\n\tmaxItems: null,\n\thideSelected: null,\n\tduplicates: false,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: null,\n\tallowEmptyOption: false,\n\t//closeAfterSelect: false,\n\trefreshThrottle: 300,\n\n\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: null, //'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\tdisabledField: 'disabled',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'ts-wrapper',\n\tcontrolClass: 'ts-control',\n\tdropdownClass: 'ts-dropdown',\n\tdropdownContentClass: 'ts-dropdown-content',\n\titemClass: 'item',\n\toptionClass: 'option',\n\n\tdropdownParent: null,\n\tcontrolInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n\n\tcopyClassesToDropdown: false,\n\n\tplaceholder: null,\n\thidePlaceholder: null,\n\n\tshouldLoad: function(query:string):boolean{\n\t\treturn query.length > 0;\n\t},\n\n\t/*\n\tload                 : null, // function(query, callback) { ... }\n\tscore                : null, // function(search) { ... }\n\tonInitialize         : null, // function() { ... }\n\tonChange             : null, // function(value) { ... }\n\tonItemAdd            : null, // function(value, $item) { ... }\n\tonItemRemove         : null, // function(value) { ... }\n\tonClear              : null, // function() { ... }\n\tonOptionAdd          : null, // function(value, data) { ... }\n\tonOptionRemove       : null, // function(value) { ... }\n\tonOptionClear        : null, // function() { ... }\n\tonOptionGroupAdd     : null, // function(id, data) { ... }\n\tonOptionGroupRemove  : null, // function(id) { ... }\n\tonOptionGroupClear   : null, // function() { ... }\n\tonDropdownOpen       : null, // function(dropdown) { ... }\n\tonDropdownClose      : null, // function(dropdown) { ... }\n\tonType               : null, // function(str) { ... }\n\tonDelete             : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n};\n", "import defaults from './defaults.ts';\nimport { hash_key, iterate } from './utils.ts';\nimport { TomOption, TomSettings, RecursivePartial } from './types/index.ts';\nimport { TomInput } from './types/index.ts';\n\n\nexport default function getSettings( input:TomInput, settings_user:RecursivePartial<TomSettings>):TomSettings{\n\tvar settings:TomSettings\t= Object.assign({}, defaults, settings_user);\n\n\tvar attr_data\t\t\t\t= settings.dataAttr;\n\tvar field_label\t\t\t\t= settings.labelField;\n\tvar field_value\t\t\t\t= settings.valueField;\n\tvar field_disabled\t\t\t= settings.disabledField;\n\tvar field_optgroup\t\t\t= settings.optgroupField;\n\tvar field_optgroup_label\t= settings.optgroupLabelField;\n\tvar field_optgroup_value\t= settings.optgroupValueField;\n\n\tvar tag_name\t\t\t\t= input.tagName.toLowerCase();\n\tvar placeholder\t\t\t\t= input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n\n\tif (!placeholder && !settings.allowEmptyOption) {\n\t\tlet option\t\t= input.querySelector('option[value=\"\"]');\n\t\tif( option ){\n\t\t\tplaceholder = option.textContent;\n\t\t}\n\n\t}\n\n\tvar settings_element:{\n\t\tplaceholder\t: null|string,\n\t\toptions\t\t: TomOption[],\n\t\toptgroups\t: TomOption[],\n\t\titems\t\t: string[],\n\t\tmaxItems\t: null|number,\n\t} = {\n\t\tplaceholder\t: placeholder,\n\t\toptions\t\t: [],\n\t\toptgroups\t: [],\n\t\titems\t\t: [],\n\t\tmaxItems\t: null,\n\t};\n\n\n\t/**\n\t * Initialize from a <select> element.\n\t *\n\t */\n\tvar init_select = () => {\n\t\tvar tagName;\n\t\tvar options = settings_element.options;\n\t\tvar optionsMap:{[key:string]:any} = {};\n\t\tvar group_count = 1;\n\t\tlet $order = 0;\n\n\t\tvar readData = (el:HTMLElement):TomOption => {\n\n\t\t\tvar data\t= Object.assign({},el.dataset); // get plain object from DOMStringMap\n\t\t\tvar json\t= attr_data && data[attr_data];\n\n\t\t\tif( typeof json === 'string' && json.length ){\n\t\t\t\tdata = Object.assign(data,JSON.parse(json));\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\tvar addOption = (option:HTMLOptionElement, group?:string) => {\n\n\t\t\tvar value = hash_key(option.value);\n\t\t\tif ( value == null ) return;\n\t\t\tif ( !value && !settings.allowEmptyOption) return;\n\n\t\t\t// if the option already exists, it's probably been\n\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t// existing option so that it's rendered in both places.\n\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\tif (group) {\n\t\t\t\t\tvar arr = optionsMap[value][field_optgroup];\n\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t} else if (!Array.isArray(arr)) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tvar option_data             = readData(option);\n\t\t\t\toption_data[field_label]    = option_data[field_label] || option.textContent;\n\t\t\t\toption_data[field_value]    = option_data[field_value] || value;\n\t\t\t\toption_data[field_disabled] = option_data[field_disabled] || option.disabled;\n\t\t\t\toption_data[field_optgroup] = option_data[field_optgroup] || group;\n\t\t\t\toption_data.$option\t\t\t= option;\n\t\t\t\toption_data.$order\t\t\t= option_data.$order || ++$order;\n\n\t\t\t\toptionsMap[value] = option_data;\n\t\t\t\toptions.push(option_data);\n\t\t\t}\n\n\t\t\tif( option.selected ){\n\t\t\t\tsettings_element.items.push(value);\n\t\t\t}\n\t\t};\n\n\t\tvar addGroup = ( optgroup:HTMLOptGroupElement ) => {\n\t\t\tvar id:string, optgroup_data\n\n\t\t\toptgroup_data\t\t\t\t\t\t\t= readData(optgroup);\n\t\t\toptgroup_data[field_optgroup_label]\t\t= optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n\t\t\toptgroup_data[field_optgroup_value]\t\t= optgroup_data[field_optgroup_value] || group_count++;\n\t\t\toptgroup_data[field_disabled]\t\t\t= optgroup_data[field_disabled] || optgroup.disabled;\n\t\t\toptgroup_data.$order\t\t\t\t\t= optgroup_data.$order || ++$order;\n\n\t\t\tsettings_element.optgroups.push(optgroup_data);\n\n\t\t\tid = optgroup_data[field_optgroup_value];\n\n\t\t\titerate(optgroup.children, (option)=>{\n\t\t\t\taddOption(option as HTMLOptionElement, id);\n\t\t\t});\n\n\t\t};\n\n\t\tsettings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n\n\t\titerate(input.children,(child)=>{\n\t\t\ttagName = child.tagName.toLowerCase();\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\taddGroup(child as HTMLOptGroupElement);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\taddOption(child as HTMLOptionElement);\n\t\t\t}\n\t\t});\n\n\t};\n\n\n\t/**\n\t * Initialize from a <input type=\"text\"> element.\n\t *\n\t */\n\tvar init_textbox = () => {\n\t\tconst data_raw = input.getAttribute(attr_data);\n\n\t\tif (!data_raw) {\n\t\t\tvar value = input.value.trim() || '';\n\t\t\tif (!settings.allowEmptyOption && !value.length) return;\n\t\t\tconst values = value.split(settings.delimiter);\n\n\t\t\titerate( values, (value) => {\n\t\t\t\tconst option:TomOption = {};\n\t\t\t\toption[field_label] = value;\n\t\t\t\toption[field_value] = value;\n\t\t\t\tsettings_element.options.push(option);\n\t\t\t});\n\t\t\tsettings_element.items = values;\n\t\t} else {\n\t\t\tsettings_element.options = JSON.parse(data_raw);\n\t\t\titerate( settings_element.options, (opt) => {\n\t\t\t\tsettings_element.items.push(opt[field_value]);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tif (tag_name === 'select') {\n\t\tinit_select();\n\t} else {\n\t\tinit_textbox();\n\t}\n\n\treturn Object.assign( {}, defaults, settings_element, settings_user) as TomSettings;\n};\n", "\nimport MicroEvent from './contrib/microevent.ts';\nimport MicroPlugin from './contrib/microplugin.ts';\nimport { Sifter } from '@orchidjs/sifter';\nimport { escape_regex } from '@orchidjs/unicode-variants';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames, TomClearFilter, RecursivePartial } from './types/index.ts';\nimport {highlight, removeHighlight} from './contrib/highlight.ts';\nimport * as constants from './constants.ts';\nimport getSettings from './getSettings.ts';\nimport {\n\thash_key,\n\tget_hash,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\ttimeout,\n\tisKeyDown,\n\tgetId,\n\taddSlashes,\n\tappend,\n\titerate\n} from './utils.ts';\n\nimport {\n\tgetDom,\n\tisHtmlString,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr,\n\treplaceNode\n} from './vanilla.ts';\n\nvar instance_i = 0;\n\nexport default class TomSelect extends MicroPlugin(MicroEvent){\n\n\tpublic control_input\t\t\t: HTMLInputElement;\n\tpublic wrapper\t\t\t\t\t: HTMLElement;\n\tpublic dropdown\t\t\t\t\t: HTMLElement;\n\tpublic control\t\t\t\t\t: HTMLElement;\n\tpublic dropdown_content\t\t\t: HTMLElement;\n\tpublic focus_node\t\t\t\t: HTMLElement;\n\n\tpublic order\t\t\t\t\t: number = 0;\n\tpublic settings\t\t\t\t\t: TomSettings;\n\tpublic input\t\t\t\t\t: TomInput;\n\tpublic tabIndex\t\t\t\t\t: number;\n\tpublic is_select_tag\t\t\t: boolean;\n\tpublic rtl\t\t\t\t\t\t: boolean;\n\tprivate inputId\t\t\t\t\t: string;\n\n\tprivate _destroy\t\t\t\t!: () => void;\n\tpublic sifter\t\t\t\t\t: Sifter;\n\n\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isReadOnly\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false; // @deprecated 1.8\n\tpublic isValid\t\t\t\t\t: boolean = true;\n\tpublic isLocked\t\t\t\t\t: boolean = false;\n\tpublic isFocused\t\t\t\t: boolean = false;\n\tpublic isInputHidden\t\t\t: boolean = false;\n\tpublic isSetup\t\t\t\t\t: boolean = false;\n\tpublic ignoreFocus\t\t\t\t: boolean = false;\n\tpublic ignoreHover\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t?: ReturnType<Sifter['search']>;\n\tpublic lastValue\t\t\t\t: string = '';\n\tpublic caretPos\t\t\t\t\t: number = 0;\n\tpublic loading\t\t\t\t\t: number = 0;\n\tpublic loadedSearches\t\t\t: { [key: string]: boolean } = {};\n\n\tpublic activeOption\t\t\t\t: null|HTMLElement = null;\n\tpublic activeItems\t\t\t\t: TomItem[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\n\tprivate refreshTimeout\t\t\t: null|number = null;\n\n\n\tconstructor( input_arg: string|TomInput, user_settings:RecursivePartial<TomSettings> ){\n\t\tsuper();\n\n\t\tinstance_i++;\n\n\t\tvar dir;\n\t\tvar input\t\t\t\t= getDom( input_arg ) as TomInput;\n\n\t\tif( input.tomselect ){\n\t\t\tthrow new Error('Tom Select already initialized on this element');\n\t\t}\n\n\n\t\tinput.tomselect\t\t\t= this;\n\n\n\t\t// detect rtl environment\n\t\tvar computedStyle\t\t= window.getComputedStyle && window.getComputedStyle(input, null);\n\t\tdir\t\t\t\t\t\t= computedStyle.getPropertyValue('direction');\n\n\t\t// setup default state\n\t\tconst settings\t\t\t= getSettings( input, user_settings );\n\t\tthis.settings\t\t\t= settings;\n\t\tthis.input\t\t\t\t= input;\n\t\tthis.tabIndex\t\t\t= input.tabIndex || 0;\n\t\tthis.is_select_tag\t\t= input.tagName.toLowerCase() === 'select';\n\t\tthis.rtl\t\t\t\t= /rtl/i.test(dir);\n\t\tthis.inputId\t\t\t= getId(input, 'tomselect-'+instance_i);\n\t\tthis.isRequired\t\t\t= input.required;\n\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t\t// option-dependent defaults\n\t\tsettings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof settings.hideSelected !== 'boolean') {\n\t\t\tsettings.hideSelected = settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof settings.hidePlaceholder !== 'boolean' ){\n\t\t\tsettings.hidePlaceholder = settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = settings.createFilter;\n\t\tif( typeof filter !== 'function' ){\n\n\t\t\tif( typeof filter === 'string' ){\n\t\t\t\tfilter = new RegExp(filter);\n\t\t\t}\n\n\t\t\tif( filter instanceof RegExp ){\n\t\t\t\tsettings.createFilter = (input: string) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tsettings.createFilter = (value: string) => {\n\t\t\t\t\treturn this.settings.duplicates || !this.options[value];\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\n\n\t\t// Create all elements\n\t\tconst wrapper\t\t\t= getDom('<div>');\n\t\tconst control\t\t\t= getDom('<div>');\n\t\tconst dropdown\t\t\t= this._render('dropdown');\n\t\tconst dropdown_content\t= getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n\n\t\tconst classes\t\t\t= this.input.getAttribute('class') || '';\n\t\tconst inputMode\t\t\t= settings.mode;\n\n\t\tvar control_input: HTMLInputElement;\n\n\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\n\n\t\taddClasses(control,settings.controlClass);\n\t\tappend( wrapper, control );\n\n\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\t\tif( settings.copyClassesToDropdown ){\n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tappend( dropdown, dropdown_content );\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\n\t\t// default controlInput\n\t\tif( isHtmlString(settings.controlInput) ){\n\t\t\tcontrol_input\t\t= getDom(settings.controlInput ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete','spellcheck'];\n\t\t\titerate(attrs,(attr:string) => {\n\t\t\t\tif( input.getAttribute(attr) ){\n\t\t\t\t\tsetAttr(control_input,{[attr]:input.getAttribute(attr)});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcontrol_input.tabIndex = -1;\n\t\t\tcontrol.appendChild( control_input );\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t// dom element\n\t\t}else if( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('<input/>') as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control;\n\t\t}\n\n\t\tthis.wrapper\t\t\t= wrapper;\n\t\tthis.dropdown\t\t\t= dropdown;\n\t\tthis.dropdown_content\t= dropdown_content;\n\t\tthis.control \t\t\t= control;\n\t\tthis.control_input\t\t= control_input;\n\n\t\tthis.setup();\n\t}\n\n\t/**\n\t * set up event bindings.\n\t *\n\t */\n\tsetup(){\n\n\t\tconst self = this;\n\t\tconst settings\t\t\t\t= self.settings;\n\t\tconst control_input\t\t\t= self.control_input;\n\t\tconst dropdown\t\t\t\t= self.dropdown;\n\t\tconst dropdown_content\t\t= self.dropdown_content;\n\t\tconst wrapper\t\t\t\t= self.wrapper;\n\t\tconst control\t\t\t\t= self.control;\n\t\tconst input\t\t\t\t\t= self.input;\n\t\tconst focus_node\t\t\t= self.focus_node;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId\t\t\t\t= self.inputId +'-ts-dropdown';\n\n\n\t\tsetAttr(dropdown_content,{\n\t\t\tid: listboxId\n\t\t});\n\n\t\tsetAttr(focus_node,{\n\t\t\trole:'combobox',\n\t\t\t'aria-haspopup':'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tconst control_id\t= getId(focus_node,self.inputId + '-ts-control');\n\t\tconst query\t\t\t= \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tconst label\t\t\t= document.querySelector(query);\n\t\tconst label_click\t= self.focus.bind(self);\n\t\tif( label ){\n\t\t\taddEvent(label,'click', label_click );\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tconst label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(focus_node,{'aria-labelledby':label_id});\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tconst classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\taddClasses( [wrapper,dropdown], classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag ){\n\t\t\tsetAttr(input,{multiple:'multiple'});\n\t\t}\n\n\t\tif (settings.placeholder) {\n\t\t\tsetAttr(control_input,{placeholder:settings.placeholder});\n\t\t}\n\n\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\t\tif (!settings.splitOn && settings.delimiter) {\n\t\t\tsettings.splitOn = new RegExp('\\\\s*' + escape_regex(settings.delimiter) + '+\\\\s*');\n\t\t}\n\n\t\t// debounce user defined load() if loadThrottle > 0\n\t\t// after initializePlugins() so plugins can create/modify user defined loaders\n\t\tif( settings.load && settings.loadThrottle ){\n\t\t\tsettings.load = loadDebounce(settings.load,settings.loadThrottle)\n\t\t}\n\n\t\taddEvent(dropdown,'mousemove', () => {\n\t\t\tself.ignoreHover = false;\n\t\t});\n\n\t\taddEvent(dropdown,'mouseenter', (e) => {\n\n\t\t\tvar target_match = parentMatch(e.target as HTMLElement, '[data-selectable]', dropdown);\n\t\t\tif( target_match ) self.onOptionHover( e as MouseEvent, target_match );\n\n\t\t}, {capture:true});\n\n\t\t// clicking on an option should select it\n\t\taddEvent(dropdown,'click',(evt) => {\n\t\t\tconst option = parentMatch(evt.target as HTMLElement, '[data-selectable]');\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( evt as MouseEvent, option );\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t});\n\n\t\taddEvent(control,'click', (evt) => {\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '[data-ts-item]', control);\n\t\t\tif( target_match && self.onItemSelect(evt as MouseEvent, target_match as TomItem) ){\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// retain focus (see control_input mousedown)\n\t\t\tif( control_input.value != '' ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.onClick();\n\t\t\tpreventDefault(evt,true);\n\t\t});\n\n\n\t\t// keydown on focus_node for arrow_down/arrow_up\n\t\taddEvent(focus_node,'keydown',\t\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\n\t\t// keypress and input/keyup\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'input',\t\t(e) => self.onInput(e as KeyboardEvent) );\n\t\taddEvent(focus_node,'blur', \t\t(e) => self.onBlur(e as FocusEvent) );\n\t\taddEvent(focus_node,'focus',\t\t(e) => self.onFocus(e as MouseEvent) );\n\t\taddEvent(control_input,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\tconst doc_mousedown = (evt:Event) => {\n\n\t\t\t// blur if target is outside of this instance\n\t\t\t// dropdown is not always inside wrapper\n\t\t\tconst target = evt.composedPath()[0];\n\t\t\tif( !wrapper.contains(target as HTMLElement) && !dropdown.contains(target as HTMLElement) ){\n\t\t\t\tif (self.isFocused) {\n\t\t\t\t\tself.blur();\n\t\t\t\t}\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t// retain focus by preventing native handling. if the\n\t\t\t// event target is the input it should not be modified.\n\t\t\t// otherwise, text selection within the input won't work.\n\t\t\t// Fixes bug #212 which is no covered by tests\n\t\t\tif( target == control_input && self.isOpen ){\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t// clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n\t\t\t}else{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\n\t\t};\n\n\t\tconst win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown', doc_mousedown);\n\t\taddEvent(window,'scroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tthis._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('scroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\n\t\t\tif( label ) label.removeEventListener('click',label_click);\n\t\t};\n\n\t\t// store original html and tab index so that they can be\n\t\t// restored when the destroy() method is called.\n\t\tthis.revertSettings = {\n\t\t\tinnerHTML : input.innerHTML,\n\t\t\ttabIndex : input.tabIndex\n\t\t};\n\n\n\t\tinput.tabIndex = -1;\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\t\tself.sync(false);\n\t\tsettings.items = [];\n\t\tdelete settings.optgroups;\n\t\tdelete settings.options;\n\n\t\taddEvent(input,'invalid', () => {\n\t\t\tif( self.isValid ){\n\t\t\t\tself.isValid = false;\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.close(false);\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}else if( input.readOnly ){\n\t\t\tself.setReadOnly(true);\n\t\t}else{\n\t\t\tself.enable(); //sets tabIndex\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected','ts-hidden-accessible');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.preload();\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Register options and optgroups\n\t *\n\t */\n\tsetupOptions(options:TomOption[] = [], optgroups:TomOption[] = []){\n\n\t\t// build options table\n\t\tthis.addOptions(options);\n\n\n\t\t// build optgroup table\n\t\titerate( optgroups, (optgroup:TomOption) => {\n\t\t\tthis.registerOptionGroup(optgroup);\n\t\t});\n\t}\n\n\t/**\n\t * Sets up default rendering functions.\n\t */\n\tsetupTemplates() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': (data:TomOption) => {\n\t\t\t\tlet optgroup = document.createElement('div');\n\t\t\t\toptgroup.className = 'optgroup';\n\t\t\t\toptgroup.appendChild(data.options);\n\t\t\t\treturn optgroup;\n\n\t\t\t},\n\t\t\t'optgroup_header': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>';\n\t\t\t},\n\t\t\t'no_results':() => {\n\t\t\t\treturn '<div class=\"no-results\">No results found</div>';\n\t\t\t},\n\t\t\t'loading':() => {\n\t\t\t\treturn '<div class=\"spinner\"></div>';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '<div></div>';\n\t\t\t}\n\t\t};\n\n\n\t\tself.settings.render = Object.assign({}, templates, self.settings.render);\n\t}\n\n\t/**\n\t * Maps fired events to callbacks provided\n\t * in the settings used when creating the control.\n\t */\n\tsetupCallbacks() {\n\t\tvar key, fn;\n\t\tvar callbacks:{[key:string]:string} = {\n\t\t\t'initialize'      : 'onInitialize',\n\t\t\t'change'          : 'onChange',\n\t\t\t'item_add'        : 'onItemAdd',\n\t\t\t'item_remove'     : 'onItemRemove',\n\t\t\t'item_select'     : 'onItemSelect',\n\t\t\t'clear'           : 'onClear',\n\t\t\t'option_add'      : 'onOptionAdd',\n\t\t\t'option_remove'   : 'onOptionRemove',\n\t\t\t'option_clear'    : 'onOptionClear',\n\t\t\t'optgroup_add'    : 'onOptionGroupAdd',\n\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\n\t\t\t'optgroup_clear'  : 'onOptionGroupClear',\n\t\t\t'dropdown_open'   : 'onDropdownOpen',\n\t\t\t'dropdown_close'  : 'onDropdownClose',\n\t\t\t'type'            : 'onType',\n\t\t\t'load'            : 'onLoad',\n\t\t\t'focus'           : 'onFocus',\n\t\t\t'blur'            : 'onBlur'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\n\t\t\tfn = this.settings[callbacks[key] as (keyof TomSettings)];\n\t\t\tif (fn) this.on(key, fn);\n\n\t\t}\n\t}\n\n\t/**\n\t * Sync the Tom Select instance with the original input or select\n\t *\n\t */\n\tsync(get_settings:boolean=true):void{\n\t\tconst self\t\t= this;\n\t\tconst settings\t= get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as RecursivePartial<TomSettings> ) : self.settings;\n\n\t\tself.setupOptions(settings.options,settings.optgroups);\n\n\t\tself.setValue(settings.items||[],true); // silent prevents recursion\n\n\t\tself.lastQuery = null; // so updated options will be displayed in dropdown\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick():void {\n\t\tvar self = this;\n\n\t\tif( self.activeItems.length > 0 ){\n\t\t\tself.clearActiveItems();\n\t\t\tself.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.isFocused && self.isOpen ){\n\t\t\tself.blur();\n\t\t} else {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated v1.7\n\t *\n\t */\n\tonMouseDown():void {}\n\n\t/**\n\t * Triggered when the value of the control has been changed.\n\t * This should propagate the event to the original DOM\n\t * input / select element.\n\t */\n\tonChange() {\n\t\ttriggerEvent(this.input, 'input');\n\t\ttriggerEvent(this.input, 'change');\n\t}\n\n\t/**\n\t * Triggered on <input> paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isInputHidden || self.isLocked ){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\t// If a regex or string is included, this will split the pasted\n\t\t// input and create Items for each separate value\n\t\tif( !self.settings.splitOn ){\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for pasted text to be recognized in value\n\t\tsetTimeout(() => {\n\t\t\tvar pastedText = self.inputValue();\n\t\t\tif( !pastedText.match(self.settings.splitOn)){\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\titerate( splitInput, (piece:string) => {\n\n\t\t\t\tconst hash = hash_key(piece);\n\t\t\t\tif( hash ){\n\t\t\t\t\tif( this.options[piece] ){\n\t\t\t\t\t\tself.addItem(piece);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tself.createItem(piece);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, 0);\n\n\t}\n\n\t/**\n\t * Triggered on <input> keypress.\n\t *\n\t */\n\tonKeyPress(e:KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif(self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n\t\t\tself.createItem();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tself.ignoreHover = true;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== constants.KEY_TAB) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\t// ctrl+A: select all\n\t\t\tcase constants.KEY_A:\n\t\t\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\t\t\tif( self.control_input.value == '' ){\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tself.selectAll();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// esc: close dropdown\n\t\t\tcase constants.KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\tpreventDefault(e,true);\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\n\t\t\t// down: open dropdown or move selection down\n\t\t\tcase constants.KEY_DOWN:\n\t\t\t\tif (!self.isOpen && self.hasOptions) {\n\t\t\t\t\tself.open();\n\t\t\t\t} else if (self.activeOption) {\n\t\t\t\t\tlet next = self.getAdjacent(self.activeOption, 1);\n\t\t\t\t\tif (next) self.setActiveOption(next);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// up: move selection up\n\t\t\tcase constants.KEY_UP:\n\t\t\t\tif (self.activeOption) {\n\t\t\t\t\tlet prev = self.getAdjacent(self.activeOption, -1);\n\t\t\t\t\tif (prev) self.setActiveOption(prev);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// return: select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// if the option_create=null, the dropdown might be closed\n\t\t\t\t}else if (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// don't submit form when searching for a value\n\t\t\t\t}else if( document.activeElement == self.control_input && self.isOpen ){\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\n\t\t\t// left: modifiy item selection to the left\n\t\t\tcase constants.KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\n\t\t\t// right: modifiy item selection to the right\n\t\t\tcase constants.KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\n\t\t\t// tab: select active option and/or create item\n\t\t\tcase constants.KEY_TAB:\n\n\t\t\t\tif( self.settings.selectOnTab ){\n\t\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\n\t\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\t\t\t\t\t\t// if select isFull, then the dropdown won't be open and [tab] will work normally\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// delete|backspace: delete items\n\t\t\tcase constants.KEY_BACKSPACE:\n\t\t\tcase constants.KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\t// don't enter text in the control_input when active items are selected\n\t\tif( self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keyup.\n\t *\n\t */\n\tonInput(e:MouseEvent|KeyboardEvent):void {\n\t\t\n\t\tif( this.isLocked ){\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = this.inputValue();\n\t\tif( this.lastValue === value ) return;\n\t\tthis.lastValue = value;\n\t\t\n\t\tif( value == '' ){\n\t\t\tthis._onInput();\n\t\t\treturn;\n\t\t}\n\n\t\tif( this.refreshTimeout ){\n\t\t\twindow.clearTimeout(this.refreshTimeout);\n\t\t}\n\n\t\tthis.refreshTimeout = timeout(()=> {\n\t\t\tthis.refreshTimeout = null;\n\t\t\tthis._onInput();\n\t\t}, this.settings.refreshThrottle);\n\t}\n\n\t_onInput():void {\n\t\tconst value = this.lastValue;\n\n\t\tif( this.settings.shouldLoad.call(this,value) ){\n\t\t\tthis.load(value);\n\t\t}\n\n\t\tthis.refreshOptions();\n\t\tthis.trigger('type', value);\n\t}\n\n\t/**\n\t * Triggered when the user rolls over\n\t * an option in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionHover( evt:MouseEvent|KeyboardEvent, option:HTMLElement ):void{\n\t\tif( this.ignoreHover ) return;\n\t\tthis.setActiveOption(option, false);\n\t}\n\n\t/**\n\t * Triggered on <input> focus.\n\t *\n\t */\n\tonFocus(e?:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tvar wasFocused = self.isFocused;\n\n\t\tif( self.isDisabled || self.isReadOnly ){\n\t\t\tself.blur();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif( self.settings.preload === 'focus' ) self.preload();\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.inputState();\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Triggered on <input> blur.\n\t *\n\t */\n\tonBlur(e?:FocusEvent):void {\n\n\t\tif( document.hasFocus() === false ) return;\n\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\t\tvar deactivate = () => {\n\t\t\tself.close();\n\t\t\tself.setActiveItem();\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tif (self.settings.create && self.settings.createOnBlur) {\n\t\t\tself.createItem(null, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered when the user clicks on an option\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionSelect( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){\n\t\tvar value, self = this;\n\n\n\t\t// should not be possible to trigger a option under a disabled optgroup\n\t\tif( option.parentElement && option.parentElement.matches('[data-disabled]') ){\n\t\t\treturn;\n\t\t}\n\n\n\t\tif( option.classList.contains('create') ){\n\t\t\tself.createItem(null, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option.dataset.value;\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.lastQuery = null;\n\t\t\t\tself.addItem(value);\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( !self.settings.hideSelected && evt.type && /click/.test(evt.type) ){\n\t\t\t\t\tself.setActiveOption(option);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return true if the given option can be selected\n\t *\n\t */\n\tcanSelect(option:HTMLElement|null):boolean{\n\n\t\tif( this.isOpen && option && this.dropdown_content.contains(option) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Triggered when the user clicks on an item\n\t * that has been selected.\n\t *\n\t */\n\tonItemSelect( evt?:MouseEvent, item?:TomItem ):boolean{\n\t\tvar self = this;\n\n\t\tif( !self.isLocked && self.settings.mode === 'multi' ){\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determines whether or not to invoke\n\t * the user-provided option provider / loader\n\t *\n\t * Note, there is a subtle difference between\n\t * this.canLoad() and this.settings.shouldLoad();\n\t *\n\t *\t- settings.shouldLoad() is a user-input validator.\n\t *\tWhen false is returned, the not_loading template\n\t *\twill be added to the dropdown\n\t *\n\t *\t- canLoad() is lower level validator that checks\n\t * \tthe Tom Select instance. There is no inherent user\n\t *\tfeedback when canLoad returns false\n\t *\n\t */\n\tcanLoad(value:string):boolean{\n\n\t\tif( !this.settings.load ) return false;\n\t\tif( this.loadedSearches.hasOwnProperty(value) ) return false;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\t\tconst self = this;\n\n\t\tif( !self.canLoad(value) ) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\t\tconst callback = self.loadCallback.bind(self);\n\t\tself.settings.load.call(self, value, callback);\n\t}\n\n\t/**\n\t * Invoked by the user-provided option provider\n\t *\n\t */\n\tloadCallback( options:TomOption[], optgroups:TomOption[] ):void{\n\t\tconst self = this;\n\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\tself.lastQuery = null;\n\n\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\tself.setupOptions(options,optgroups);\n\n\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\tif (!self.loading) {\n\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t}\n\n\t\tself.trigger('load', options, optgroups);\n\t}\n\n\tpreload():void{\n\t\tvar classList = this.wrapper.classList;\n\t\tif( classList.contains('preloaded') ) return;\n\t\tclassList.add('preloaded');\n\t\tthis.load('');\n\t}\n\n\n\t/**\n\t * Sets the input field of the control to the specified value.\n\t *\n\t */\n\tsetTextboxValue(value:string = '') {\n\t\tvar input = this.control_input;\n\t\tvar changed = input.value !== value;\n\t\tif (changed) {\n\t\t\tinput.value = value;\n\t\t\ttriggerEvent(input,'update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value of the control. If multiple items\n\t * can be selected (e.g. <select multiple>), this returns\n\t * an array. If only one item can be selected, this\n\t * returns a string.\n\t *\n\t */\n\tgetValue():string|string[] {\n\n\t\tif( this.is_select_tag && this.input.hasAttribute('multiple')) {\n\t\t\treturn this.items;\n\t\t}\n\n\t\treturn this.items.join(this.settings.delimiter);\n\t}\n\n\t/**\n\t * Resets the selected items to the given value.\n\t *\n\t */\n\tsetValue( value:string|string[], silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events,() => {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t}\n\n\n\t/**\n\t * Resets the number of max items to the given value\n\t *\n\t */\n\tsetMaxItems(value:null|number){\n\t\tif(value === 0) value = null; //reset to unlimited items.\n\t\tthis.settings.maxItems = value;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Sets the selected item.\n\t *\n\t */\n\tsetActiveItem( item?:TomItem, e?:MouseEvent|KeyboardEvent ){\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, begin, end, swap;\n\t\tvar last;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\t// clear the active selection\n\t\tif( !item ){\n\t\t\tself.clearActiveItems();\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.inputState();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// modify selection\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'click' && isKeyDown('shiftKey',e) && self.activeItems.length) {\n\t\t\tlast\t= self.getLastActive();\n\t\t\tbegin\t= Array.prototype.indexOf.call(self.control.children, last);\n\t\t\tend\t\t= Array.prototype.indexOf.call(self.control.children, item);\n\n\t\t\tif (begin > end) {\n\t\t\t\tswap  = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend   = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.control.children[i] as TomItem;\n\t\t\t\tif (self.activeItems.indexOf(item) === -1) {\n\t\t\t\t\tself.setActiveItemClass(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault(e);\n\t\t} else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT,e) ) || (eventName === 'keydown' && isKeyDown('shiftKey',e))) {\n\t\t\tif( item.classList.contains('active') ){\n\t\t\t\tself.removeActiveItem( item );\n\t\t\t} else {\n\t\t\t\tself.setActiveItemClass(item);\n\t\t\t}\n\t\t} else {\n\t\t\tself.clearActiveItems();\n\t\t\tself.setActiveItemClass(item);\n\t\t}\n\n\t\t// ensure control has focus\n\t\tself.inputState();\n\t\tif (!self.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Set the active and last-active classes\n\t *\n\t */\n\tsetActiveItemClass( item:TomItem ){\n\t\tconst self = this;\n\t\tconst last_active = self.control.querySelector('.last-active');\n\t\tif( last_active ) removeClasses(last_active as HTMLElement,'last-active');\n\n\t\taddClasses(item,'active last-active');\n\t\tself.trigger('item_select', item);\n\t\tif( self.activeItems.indexOf(item) == -1 ){\n\t\t\tself.activeItems.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Remove active item\n\t *\n\t */\n\tremoveActiveItem( item:TomItem ){\n\t\tvar idx = this.activeItems.indexOf(item);\n\t\tthis.activeItems.splice(idx, 1);\n\t\tremoveClasses(item,'active');\n\t}\n\n\t/**\n\t * Clears all the active items\n\t *\n\t */\n\tclearActiveItems(){\n\t\tremoveClasses(this.activeItems,'active');\n\t\tthis.activeItems = [];\n\t}\n\n\t/**\n\t * Sets the selected item in the dropdown menu\n\t * of available options.\n\t *\n\t */\n\tsetActiveOption( option:null|HTMLElement,scroll:boolean=true ):void{\n\n\t\tif( option === this.activeOption ){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearActiveOption();\n\t\tif( !option ) return;\n\n\t\tthis.activeOption = option;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':option.getAttribute('id')});\n\t\tsetAttr(option,{'aria-selected':'true'});\n\t\taddClasses(option,'active');\n\t\tif( scroll ) this.scrollToOption(option);\n\t}\n\n\t/**\n\t * Sets the dropdown_content scrollTop to display the option\n\t *\n\t */\n\tscrollToOption( option:null|HTMLElement, behavior?:string ):void{\n\n\t\tif( !option ) return;\n\n\t\tconst content\t\t= this.dropdown_content;\n\t\tconst height_menu\t= content.clientHeight;\n\t\tconst scrollTop\t\t= content.scrollTop || 0;\n\t\tconst height_item\t= option.offsetHeight;\n\t\tconst y\t\t\t\t= option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n\n\t\tif (y + height_item > height_menu + scrollTop) {\n\t\t\tthis.scroll(y - height_menu + height_item, behavior);\n\n\t\t} else if (y < scrollTop) {\n\t\t\tthis.scroll(y, behavior);\n\t\t}\n\t}\n\n\t/**\n\t * Scroll the dropdown to the given position\n\t *\n\t */\n\tscroll( scrollTop:number, behavior?:string ):void{\n\t\tconst content = this.dropdown_content;\n\t\tif( behavior ){\n\t\t\tcontent.style.scrollBehavior = behavior;\n\t\t}\n\t\tcontent.scrollTop = scrollTop;\n\t\tcontent.style.scrollBehavior = '';\n\t}\n\n\t/**\n\t * Clears the active option\n\t *\n\t */\n\tclearActiveOption(){\n\t\tif( this.activeOption ){\n\t\t\tremoveClasses(this.activeOption,'active');\n\t\t\tsetAttr(this.activeOption,{'aria-selected':null});\n\t\t}\n\t\tthis.activeOption = null;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':null});\n\t}\n\n\n\t/**\n\t * Selects all items (CTRL + A).\n\t */\n\tselectAll() {\n\t\tconst self = this;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\tconst activeItems = self.controlChildren();\n\n\t\tif( !activeItems.length ) return;\n\n\t\tself.inputState();\n\t\tself.close();\n\n\t\tself.activeItems = activeItems;\n\t\titerate( activeItems, (item:TomItem) => {\n\t\t\tself.setActiveItemClass(item);\n\t\t});\n\n\t}\n\n\t/**\n\t * Determines if the control_input should be in a hidden or visible state\n\t *\n\t */\n\tinputState(){\n\t\tvar self = this;\n\n\t\tif( !self.control.contains(self.control_input) ) return;\n\n\t\tsetAttr(self.control_input,{placeholder:self.settings.placeholder});\n\n\t\tif( self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0) ){\n\t\t\tself.setTextboxValue();\n\t\t\tself.isInputHidden = true;\n\n\t\t}else{\n\n\t\t\tif( self.settings.hidePlaceholder && self.items.length > 0 ){\n\t\t\t\tsetAttr(self.control_input,{placeholder:''});\n\t\t\t}\n\t\t\tself.isInputHidden = false;\n\t\t}\n\n\t\tself.wrapper.classList.toggle('input-hidden', self.isInputHidden );\n\t}\n\n\t/**\n\t * Get the input value\n\t */\n\tinputValue(){\n\t\treturn this.control_input.value.trim();\n\t}\n\n\t/**\n\t * Gives the control focus.\n\t */\n\tfocus() {\n\t\tvar self = this;\n\t\tif( self.isDisabled || self.isReadOnly) return;\n\n\t\tself.ignoreFocus = true;\n\n\t\tif( self.control_input.offsetWidth ){\n\t\t\tself.control_input.focus();\n\t\t}else{\n\t\t\tself.focus_node.focus();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.onFocus();\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Forces the control out of focus.\n\t *\n\t */\n\tblur():void {\n\t\tthis.focus_node.blur();\n\t\tthis.onBlur();\n\t}\n\n\t/**\n\t * Returns a function that scores an object\n\t * to show how good of a match it is to the\n\t * provided query.\n\t *\n\t * @return {function}\n\t */\n\tgetScoreFunction(query:string) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t}\n\n\t/**\n\t * Returns search options for sifter (the system\n\t * for scoring and sorting results).\n\t *\n\t * @see https://github.com/orchidjs/sifter.js\n\t * @return {object}\n\t */\n\tgetSearchOptions() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof settings.sortField === 'string') {\n\t\t\tsort = [{field: settings.sortField}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields      : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort        : sort,\n\t\t\tnesting     : settings.nesting\n\t\t};\n\t}\n\n\t/**\n\t * Searches through available options and returns\n\t * a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string) : ReturnType<Sifter['search']>{\n\t\tvar result, calculateScore;\n\t\tvar self     = this;\n\t\tvar options  = this.getSearchOptions();\n\n\t\t// validate user-provided result scoring function\n\t\tif ( self.settings.score ){\n\t\t\tcalculateScore = self.settings.score.call(self,query);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Tom Select \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n\t\t// perform search\n\t\tif (query !== self.lastQuery) {\n\t\t\tself.lastQuery\t\t\t= query;\n\t\t\tresult\t\t\t\t\t= self.sifter.search(query, Object.assign(options, {score: calculateScore}));\n\t\t\tself.currentResults\t\t= result;\n\t\t} else {\n\t\t\tresult\t\t\t\t\t= Object.assign( {}, self.currentResults);\n\t\t}\n\n\t\t// filter out selected items\n\t\tif( self.settings.hideSelected ){\n\t\t\tresult.items = result.items.filter((item) => {\n\t\t\t\tlet hashed = hash_key(item.id);\n\t\t\t\treturn !(hashed && self.items.indexOf(hashed) !== -1 );\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Refreshes the list of available options shown\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\trefreshOptions( triggerDropdown:boolean = true ){\n\t\tvar i, j, k, n, optgroup, optgroups, html:DocumentFragment, has_create_option, active_group;\n\t\tvar create;\n\n\t\ttype Group = {fragment:DocumentFragment,order:number,optgroup:string}\n\t\tconst groups: {[key:string]:number} = {};\n\t\tconst groups_order:Group[]\t= [];\n\n\t\tvar self\t\t\t\t\t= this;\n\t\tvar query\t\t\t\t\t= self.inputValue();\n\t\tconst same_query\t\t\t= query === self.lastQuery || (query == '' && self.lastQuery == null);\n\t\tvar results\t\t\t\t\t= self.search(query);\n\t\tvar active_option:HTMLElement|null = null;\n\t\tvar show_dropdown\t\t\t= self.settings.shouldOpen || false;\n\t\tvar dropdown_content\t\t= self.dropdown_content;\n\n\n\t\tif( same_query ){\n\t\t\tactive_option\t\t\t= self.activeOption;\n\n\t\t\tif( active_option ){\n\t\t\t\tactive_group = active_option.closest('[data-group]') as HTMLElement;\n\t\t\t}\n\t\t}\n\n\t\t// build markup\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tif( n > 0 ){\n\t\t\tshow_dropdown = true;\n\t\t}\n\n\t\t// get fragment for group and the position of the group in group_order\n\t\tconst getGroupFragment = (optgroup:string,order:number):[number,DocumentFragment] => {\n\n\t\t\tlet group_order_i = groups[optgroup];\n\n\t\t\tif( group_order_i !== undefined ){\n\t\t\t\tlet order_group = groups_order[group_order_i];\n\t\t\t\tif( order_group !== undefined ){\n\t\t\t\t\treturn [group_order_i,order_group.fragment];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet group_fragment = document.createDocumentFragment();\n\t\t\tgroup_order_i = groups_order.length;\n\t\t\tgroups_order.push({fragment:group_fragment,order,optgroup});\n\n\t\t\treturn [group_order_i,group_fragment]\n\t\t}\n\n\t\t// render and group available options individually\n\t\tfor (i = 0; i < n; i++) {\n\n\t\t\t// get option dom element\n\t\t\tlet item\t\t\t= results.items[i];\n\t\t\tif( !item ) continue;\n\n\t\t\tlet opt_value\t\t= item.id;\n\t\t\tlet option\t\t\t= self.options[opt_value];\n\n\t\t\tif( option === undefined ) continue;\n\n\t\t\tlet opt_hash\t\t= get_hash(opt_value);\n\t\t\tlet option_el\t\t= self.getOption(opt_hash,true) as HTMLElement;\n\n\t\t\t// toggle 'selected' class\n\t\t\tif( !self.settings.hideSelected ){\n\t\t\t\toption_el.classList.toggle('selected', self.items.includes(opt_hash) );\n\t\t\t}\n\n\t\t\toptgroup    = option[self.settings.optgroupField] || '';\n\t\t\toptgroups   = Array.isArray(optgroup) ? optgroup : [optgroup];\n\t\t\t\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\n\t\t\t\tlet order = option.$order;\n\t\t\t\tlet self_optgroup = self.optgroups[optgroup];\n\t\t\t\tif( self_optgroup === undefined ){\t\t\t\t\t\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}else{\n\t\t\t\t\torder = self_optgroup.$order;\n\t\t\t\t}\n\n\t\t\t\tconst [group_order_i,group_fragment] = getGroupFragment(optgroup,order);\n\n\n\t\t\t\t// nodes can only have one parent, so if the option is in mutple groups, we need a clone\n\t\t\t\tif( j > 0 ){\n\t\t\t\t\toption_el = option_el.cloneNode(true) as HTMLElement;\n\t\t\t\t\tsetAttr(option_el,{id: option.$id+'-clone-'+j,'aria-selected':null});\n\t\t\t\t\toption_el.classList.add('ts-cloned');\n\t\t\t\t\tremoveClasses(option_el,'active');\n\n\n\t\t\t\t\t// make sure we keep the activeOption in the same group\n\t\t\t\t\tif( self.activeOption && self.activeOption.dataset.value == opt_value ){\n\t\t\t\t\t\tif( active_group && active_group.dataset.group === optgroup.toString() ){\n\t\t\t\t\t\t\tactive_option = option_el;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\t\n\t\t\t\t\n\t\t\t\tgroup_fragment.appendChild(option_el);\n\t\t\t\tif( optgroup != '' ){\n\t\t\t\t\tgroups[optgroup] = group_order_i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// sort optgroups\n\t\tif( self.settings.lockOptgroupOrder ){\n\t\t\tgroups_order.sort((a, b) => {\n\t\t\t\treturn a.order - b.order;\n\t\t\t});\n\t\t}\n\n\t\t// render optgroup headers & join groups\n\t\thtml = document.createDocumentFragment();\n\t\titerate( groups_order, (group_order:Group) => {\n\n\t\t\tlet group_fragment = group_order.fragment;\n\t\t\tlet optgroup = group_order.optgroup\n\n\t\t\tif( !group_fragment || !group_fragment.children.length ) return;\n\n\t\t\tlet group_heading = self.optgroups[optgroup];\n\n\t\t\tif( group_heading !== undefined ){\n\n\t\t\t\tlet group_options = document.createDocumentFragment();\n\t\t\t\tlet header = self.render('optgroup_header', group_heading);\n\t\t\t\tappend( group_options, header );\n\t\t\t\tappend( group_options, group_fragment );\n\n\t\t\t\tlet group_html = self.render('optgroup', {group:group_heading,options:group_options} );\n\n\t\t\t\tappend( html, group_html );\n\n\t\t\t} else {\n\t\t\t\tappend( html, group_fragment );\n\t\t\t}\n\t\t});\n\n\t\tdropdown_content.innerHTML = '';\n\t\tappend( dropdown_content, html );\n\n\t\t// highlight matching terms inline\n\t\tif (self.settings.highlight) {\n\t\t\tremoveHighlight( dropdown_content );\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\titerate( results.tokens, (tok) => {\n\t\t\t\t\thighlight( dropdown_content, tok.regex);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// helper method for adding templates to dropdown\n\t\tvar add_template = (template:TomTemplateNames) => {\n\t\t\tlet content = self.render(template,{input:query});\n\t\t\tif( content ){\n\t\t\t\tshow_dropdown = true;\n\t\t\t\tdropdown_content.insertBefore(content, dropdown_content.firstChild);\n\t\t\t}\n\t\t\treturn content;\n\t\t};\n\n\n\t\t// add loading message\n\t\tif( self.loading ){\n\t\t\tadd_template('loading');\n\n\t\t// invalid query\n\t\t}else if( !self.settings.shouldLoad.call(self,query) ){\n\t\t\tadd_template('not_loading');\n\n\t\t// add no_results message\n\t\t}else if( results.items.length === 0 ){\n\t\t\tadd_template('no_results');\n\n\t\t}\n\n\n\n\t\t// add create option\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tcreate = add_template('option_create');\n\t\t}\n\n\n\t\t// activate\n\t\tself.hasOptions = results.items.length > 0 || has_create_option;\n\t\tif( show_dropdown ){\n\n\t\t\tif (results.items.length > 0) {\n\n\t\t\t\tif( !active_option && self.settings.mode === 'single' && self.items[0] != undefined ){\n\t\t\t\t\tactive_option = self.getOption(self.items[0]);\n\t\t\t\t}\n\n\t\t\t\tif( !dropdown_content.contains(active_option)  ){\n\n\t\t\t\t\tlet active_index = 0;\n\t\t\t\t\tif( create && !self.settings.addPrecedence ){\n\t\t\t\t\t\tactive_index = 1;\n\t\t\t\t\t}\n\t\t\t\t\tactive_option = self.selectable()[active_index] as HTMLElement;\n\t\t\t\t}\n\n\t\t\t}else if( create ){\n\t\t\t\tactive_option = create;\n\t\t\t}\n\n\t\t\tif( triggerDropdown && !self.isOpen ){\n\t\t\t\tself.open();\n\t\t\t\tself.scrollToOption(active_option,'auto');\n\t\t\t}\n\t\t\tself.setActiveOption(active_option);\n\n\t\t}else{\n\t\t\tself.clearActiveOption();\n\t\t\tif( triggerDropdown && self.isOpen ){\n\t\t\t\tself.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return list of selectable options\n\t *\n\t */\n\tselectable():NodeList{\n\t\treturn this.dropdown_content.querySelectorAll('[data-selectable]');\n\t}\n\n\n\n\t/**\n\t * Adds an available option. If it already exists,\n\t * nothing will happen. Note: this does not refresh\n\t * the options list dropdown (use `refreshOptions`\n\t * for that).\n\t *\n\t * Usage:\n\t *\n\t *   this.addOption(data)\n\t *\n\t */\n\taddOption( data:TomOption, user_created = false ):false|string {\n\t\tconst self = this;\n\n\t\t// @deprecated 1.7.7\n\t\t// use addOptions( array, user_created ) for adding multiple options\n\t\tif( Array.isArray(data) ){\n\t\t\tself.addOptions( data, user_created);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst key = hash_key(data[self.settings.valueField]);\n\t\tif( key === null || self.options.hasOwnProperty(key) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tdata.$order\t\t\t= data.$order || ++self.order;\n\t\tdata.$id\t\t\t= self.inputId + '-opt-' + data.$order;\n\t\tself.options[key]\t= data;\n\t\tself.lastQuery\t\t= null;\n\n\t\tif( user_created ){\n\t\t\tself.userOptions[key] = user_created;\n\t\t\tself.trigger('option_add', key, data);\n\t\t}\n\n\t\treturn key;\n\t}\n\n\t/**\n\t * Add multiple options\n\t *\n\t */\n\taddOptions( data:TomOption[], user_created = false ):void{\n\t\titerate( data, (dat:TomOption) => {\n\t\t\tthis.addOption(dat, user_created);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.7.7\n\t */\n\tregisterOption( data:TomOption ):false|string {\n\t\treturn this.addOption(data);\n\t}\n\n\t/**\n\t * Registers an option group to the pool of option groups.\n\t *\n\t * @return {boolean|string}\n\t */\n\tregisterOptionGroup(data:TomOption) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\n\t\tif ( key === null ) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t}\n\n\t/**\n\t * Registers a new optgroup for options\n\t * to be bucketed into.\n\t *\n\t */\n\taddOptionGroup(id:string, data:TomOption) {\n\t\tvar hashed_id;\n\t\tdata[this.settings.optgroupValueField] = id;\n\n\t\tif( hashed_id = this.registerOptionGroup(data) ){\n\t\t\tthis.trigger('optgroup_add', hashed_id, data);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an existing option group.\n\t *\n\t */\n\tremoveOptionGroup(id:string) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.clearCache();\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all existing option groups.\n\t */\n\tclearOptionGroups() {\n\t\tthis.optgroups = {};\n\t\tthis.clearCache();\n\t\tthis.trigger('optgroup_clear');\n\t}\n\n\t/**\n\t * Updates an option available for selection. If\n\t * it is visible in the selected items or options\n\t * dropdown, it will be re-rendered automatically.\n\t *\n\t */\n\tupdateOption(value:string, data:TomOption) {\n\t\tconst self = this;\n\t\tvar item_new;\n\t\tvar index_item;\n\n\t\tconst value_old\t\t= hash_key(value);\n\t\tconst value_new\t\t= hash_key(data[self.settings.valueField]);\n\n\t\t// sanity checks\n\t\tif( value_old === null ) return;\n\n\t\tconst data_old\t\t= self.options[value_old];\n\n\t\tif( data_old == undefined ) return;\n\t\tif( typeof value_new !== 'string' ) throw new Error('Value must be set in option data');\n\n\n\t\tconst option\t\t= self.getOption(value_old);\n\t\tconst item\t\t\t= self.getItem(value_old);\n\n\n\t\tdata.$order = data.$order || data_old.$order;\n\t\tdelete self.options[value_old];\n\n\t\t// invalidate render cache\n\t\t// don't remove existing node yet, we'll remove it after replacing it\n\t\tself.uncacheValue(value_new);\n\n\t\tself.options[value_new] = data;\n\n\t\t// update the option if it's in the dropdown\n\t\tif( option ){\n\t\t\tif( self.dropdown_content.contains(option) ){\n\n\t\t\t\tconst option_new\t= self._render('option', data);\n\t\t\t\treplaceNode(option, option_new);\n\n\t\t\t\tif( self.activeOption === option ){\n\t\t\t\t\tself.setActiveOption(option_new);\n\t\t\t\t}\n\t\t\t}\n\t\t\toption.remove();\n\t\t}\n\n\t\t// update the item if we have one\n\t\tif( item ){\n\t\t\tindex_item = self.items.indexOf(value_old);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\n\t\t\titem_new\t= self._render('item', data);\n\n\t\t\tif( item.classList.contains('active') ) addClasses(item_new,'active');\n\n\t\t\treplaceNode( item, item_new);\n\t\t}\n\n\t\t// invalidate last query because we might have updated the sortField\n\t\tself.lastQuery = null;\n\t}\n\n\t/**\n\t * Removes a single option.\n\t *\n\t */\n\tremoveOption(value:string, silent?:boolean):void {\n\t\tconst self = this;\n\t\tvalue = get_hash(value);\n\n\t\tself.uncacheValue(value);\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t}\n\n\t/**\n\t * Clears all options.\n\t */\n\tclearOptions(filter?:TomClearFilter ) {\n\n\t\tconst boundFilter = (filter || this.clearFilter).bind(this);\n\n\t\tthis.loadedSearches\t\t= {};\n\t\tthis.userOptions\t\t= {};\n\t\tthis.clearCache();\n\n\t\tconst selected:TomOptions\t= {};\n\t\titerate(this.options,(option:TomOption,key:string)=>{\n\t\t\tif( boundFilter(option,key as string) ){\n\t\t\t\tselected[key] = option;\n\t\t\t}\n\t\t});\n\n\t\tthis.options = this.sifter.items = selected;\n\t\tthis.lastQuery = null;\n\t\tthis.trigger('option_clear');\n\t}\n\n\t/**\n\t * Used by clearOptions() to decide whether or not an option should be removed\n\t * Return true to keep an option, false to remove\n\t *\n\t */\n\tclearFilter(option:TomOption,value:string){\n\t\tif( this.items.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the dom element of the option\n\t * matching the given value.\n\t *\n\t */\n\tgetOption(value:undefined|null|boolean|string|number, create:boolean=false):null|HTMLElement {\n\n\t\tconst hashed = hash_key(value);\n\t\tif( hashed === null ) return null;\n\n\t\tconst option = this.options[hashed];\n\t\tif( option != undefined ){\n\n\t\t\tif( option.$div ){\n\t\t\t\treturn option.$div;\n\t\t\t}\n\n\t\t\tif( create ){\n\t\t\t\treturn this._render('option', option);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the dom element of the next or previous dom element of the same type\n\t * Note: adjacent options may not be adjacent DOM elements (optgroups)\n\t *\n\t */\n\tgetAdjacent( option:null|HTMLElement, direction:number, type:string = 'option' ) : HTMLElement|null{\n\t\tvar self = this, all;\n\n\t\tif( !option ){\n\t\t\treturn null;\n\t\t}\n\n\t\tif( type == 'item' ){\n\t\t\tall\t\t\t= self.controlChildren();\n\t\t}else{\n\t\t\tall\t\t\t= self.dropdown_content.querySelectorAll('[data-selectable]');\n\t\t}\n\n\t\tfor( let i = 0; i < all.length; i++ ){\n\t\t\tif( all[i] != option ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( direction > 0 ){\n\t\t\t\treturn all[i+1] as HTMLElement;\n\t\t\t}\n\n\t\t\treturn all[i-1] as HTMLElement;\n\t\t}\n\t\treturn null;\n\t}\n\n\n\t/**\n\t * Returns the dom element of the item\n\t * matching the given value.\n\t *\n\t */\n\tgetItem(item:string|TomItem|null):null|TomItem {\n\n\t\tif( typeof item == 'object' ){\n\t\t\treturn item;\n\t\t}\n\n\t\tvar value = hash_key(item);\n\t\treturn value !== null\n\t\t\t? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * \"Selects\" multiple items at once. Adds them to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItems( values:string|string[], silent?:boolean ):void{\n\t\tvar self = this;\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\titems = items.filter(x => self.items.indexOf(x) === -1);\n\t\tconst last_item = items[items.length - 1];\n\t\titems.forEach(item => {\n\t\t\tself.isPending = (item !== last_item);\n\t\t\tself.addItem(item, silent);\n\t\t});\n\t}\n\n\t/**\n\t * \"Selects\" an item. Adds it to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItem( value:string, silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change','dropdown_close'];\n\n\t\tdebounce_events(this, events, () => {\n\t\t\tvar item, wasFull;\n\t\t\tconst self = this;\n\t\t \tconst inputMode = self.settings.mode;\n\t\t\tconst hashed = hash_key(value);\n\n\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\n\t\t\t\tif( inputMode === 'single' ){\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( inputMode === 'single' || !self.settings.duplicates ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hashed === null || !self.options.hasOwnProperty(hashed)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n\t\t\titem = self._render('item', self.options[hashed]);\n\n\t\t\tif( self.control.contains(item) ){ // duplicates\n\t\t\t\titem = item.cloneNode(true) as HTMLElement;\n\t\t\t}\n\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, hashed);\n\t\t\tself.insertAtCaret(item);\n\n\t\t\tif (self.isSetup) {\n\n\t\t\t\t// update menu / remove the option (if this is not one item being added as part of series)\n\t\t\t\tif( !self.isPending && self.settings.hideSelected ){\n\t\t\t\t\tlet option = self.getOption(hashed);\n\t\t\t\t\tlet next = self.getAdjacent(option, 1);\n\t\t\t\t\tif( next ){\n\t\t\t\t\t\tself.setActiveOption(next);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// refreshOptions after setActiveOption(),\n\t\t\t\t// otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n\t\t\t\tif( !self.isPending && !self.settings.closeAfterSelect ){\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t}\n\n\t\t\t\t// hide the menu if the maximum number of items have been selected or no options are left\n\t\t\t\tif( self.settings.closeAfterSelect != false && self.isFull() ){\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.trigger('item_add', hashed, item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.inputState();\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t});\n\t}\n\n\t/**\n\t * Removes the selected item matching\n\t * the provided value.\n\t *\n\t */\n\tremoveItem( item:string|TomItem|null=null, silent?:boolean ){\n\t\tconst self\t\t= this;\n\t\titem\t\t\t= self.getItem(item);\n\n\t\tif( !item ) return;\n\n\t\tvar i,idx;\n\t\tconst value\t= item.dataset.value;\n\t\ti = nodeIndex(item);\n\n\t\titem.remove();\n\t\tif( item.classList.contains('active') ){\n\t\t\tidx = self.activeItems.indexOf(item);\n\t\t\tself.activeItems.splice(idx, 1);\n\t\t\tremoveClasses(item,'active');\n\t\t}\n\n\t\tself.items.splice(i, 1);\n\t\tself.lastQuery = null;\n\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\tself.removeOption(value, silent);\n\t\t}\n\n\t\tif (i < self.caretPos) {\n\t\t\tself.setCaret(self.caretPos - 1);\n\t\t}\n\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.positionDropdown();\n\t\tself.trigger('item_remove', value, item);\n\n\t}\n\n\t/**\n\t * Invokes the `create` method provided in the\n\t * TomSelect options that should provide the data\n\t * for the new item, given the user input.\n\t *\n\t * Once this completes, it will be added\n\t * to the item list.\n\t *\n\t */\n\tcreateItem( input:null|string=null, callback:TomCreateCallback = ()=>{} ):boolean{\n\n\t\t// triggerDropdown parameter @deprecated 2.1.1\n\t\tif( arguments.length === 3 ){\n\t\t\tcallback = arguments[2];\n\t\t}\n\t\tif( typeof callback != 'function' ){\n\t\t\tcallback = () => {};\n\t\t}\n\n\t\tvar self  = this;\n\t\tvar caret = self.caretPos;\n\t\tvar output;\n\t\tinput = input || self.inputValue();\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar created = false;\n\t\tvar create = (data?:boolean|TomOption) => {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif( typeof value !== 'string' ){\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\tself.setTextboxValue();\n\t\t\tself.addOption(data,true);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tcallback(data);\n\t\t\tcreated = true;\n\t\t};\n\n\t\tif( typeof self.settings.create === 'function' ){\n\t\t\toutput = self.settings.create.call(this, input, create);\n\t\t}else{\n\t\t\toutput = {\n\t\t\t\t[self.settings.labelField]: input,\n\t\t\t\t[self.settings.valueField]: input,\n\t\t\t};\n\t\t}\n\n\t\tif( !created ){\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Re-renders the selected item lists.\n\t */\n\trefreshItems() {\n\t\tvar self = this;\n\t\tself.lastQuery = null;\n\n\t\tif (self.isSetup) {\n\t\t\tself.addItems(self.items);\n\t\t}\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Updates all state-dependent attributes\n\t * and CSS classes.\n\t */\n\trefreshState() {\n\t\tconst self     = this;\n\n\t\tself.refreshValidityState();\n\n\t\tconst isFull\t= self.isFull();\n\t\tconst isLocked\t= self.isLocked;\n\n\t\tself.wrapper.classList.toggle('rtl',self.rtl);\n\n\n\t\tconst wrap_classList = self.wrapper.classList;\n\n\t\twrap_classList.toggle('focus', self.isFocused)\n\t\twrap_classList.toggle('disabled', self.isDisabled)\n\t\twrap_classList.toggle('readonly', self.isReadOnly)\n\t\twrap_classList.toggle('required', self.isRequired)\n\t\twrap_classList.toggle('invalid', !self.isValid)\n\t\twrap_classList.toggle('locked', isLocked)\n\t\twrap_classList.toggle('full', isFull)\n\t\twrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden)\n\t\twrap_classList.toggle('dropdown-active', self.isOpen)\n\t\twrap_classList.toggle('has-options', isEmptyObject(self.options) )\n\t\twrap_classList.toggle('has-items', self.items.length > 0);\n\n\t}\n\n\n\t/**\n\t * Update the `required` attribute of both input and control input.\n\t *\n\t * The `required` property needs to be activated on the control input\n\t * for the error to be displayed at the right place. `required` also\n\t * needs to be temporarily deactivated on the input since the input is\n\t * hidden and can't show errors.\n\t */\n\trefreshValidityState() {\n\t\tvar self = this;\n\n\t\tif( !self.input.validity ){\n\t\t\treturn;\n\t\t}\n\n\t\tself.isValid = self.input.validity.valid;\n\t\tself.isInvalid = !self.isValid;\n\t}\n\n\t/**\n\t * Determines whether or not more items can be added\n\t * to the control without exceeding the user-defined maximum.\n\t *\n\t * @returns {boolean}\n\t */\n\tisFull() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t}\n\n\t/**\n\t * Refreshes the original <select> or <input>\n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tconst self = this;\n\t\tvar option, label;\n\n\t\tconst empty_option = self.input.querySelector('option[value=\"\"]') as HTMLOptionElement;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\tconst selected:HTMLOptionElement[]\t\t= [];\n\t\t\tconst has_selected:number\t\t\t\t= self.input.querySelectorAll('option:checked').length;\n\n\t\t\tfunction AddSelected(option_el:HTMLOptionElement|null, value:string, label:string):HTMLOptionElement{\n\n\t\t\t\tif( !option_el ){\n\t\t\t\t\toption_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>') as HTMLOptionElement;\n\t\t\t\t}\n\n\t\t\t\t// don't move empty option from top of list\n\t\t\t\t// fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\n\t\t\t\tif( option_el != empty_option ){\n\t\t\t\t\tself.input.append(option_el);\n\t\t\t\t}\n\n\t\t\t\tselected.push(option_el);\n\n\t\t\t\t// marking empty option as selected can break validation\n\t\t\t\t// fixes https://github.com/orchidjs/tom-select/issues/303\n\t\t\t\tif( option_el != empty_option || has_selected > 0 ){\n\t\t\t\t\toption_el.selected = true;\n\t\t\t\t}\n\n\t\t\t\treturn option_el;\n\t\t\t}\n\n\t\t\t// unselect all selected options\n\t\t\tself.input.querySelectorAll('option:checked').forEach((option_el:Element) => {\n\t\t\t\t(<HTMLOptionElement>option_el).selected = false;\n\t\t\t});\n\n\n\t\t\t// nothing selected?\n\t\t\tif( self.items.length == 0 && self.settings.mode == 'single' ){\n\n\t\t\t\tAddSelected(empty_option, \"\", \"\");\n\n\t\t\t// order selected <option> tags for values in self.items\n\t\t\t}else{\n\n\t\t\t\tself.items.forEach((value)=>{\n\t\t\t\t\toption\t\t\t= self.options[value]!;\n\t\t\t\t\tlabel\t\t\t= option[self.settings.labelField] || '';\n\n\t\t\t\t\tif( selected.includes(option.$option) ){\n\t\t\t\t\t\tconst reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`) as HTMLOptionElement;\n\t\t\t\t\t\tAddSelected(reuse_opt, value, label);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toption.$option\t= AddSelected(option.$option, value, label);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tself.input.value = self.getValue() as string;\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.getValue() );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows the autocomplete dropdown containing\n\t * the available options.\n\t */\n\topen() {\n\t\tvar self = this;\n\n\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n\t\tself.isOpen = true;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'true'});\n\t\tself.refreshState();\n\t\tapplyCSS(self.dropdown,{visibility: 'hidden', display: 'block'});\n\t\tself.positionDropdown();\n\t\tapplyCSS(self.dropdown,{visibility: 'visible', display: 'block'});\n\t\tself.focus();\n\t\tself.trigger('dropdown_open', self.dropdown);\n\t}\n\n\t/**\n\t * Closes the autocomplete dropdown menu.\n\t */\n\tclose(setTextboxValue=true) {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif( setTextboxValue ){\n\n\t\t\t// before blur() to prevent form onchange event\n\t\t\tself.setTextboxValue();\n\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\t\tself.inputState();\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tif( self.settings.hideSelected ){\n\t\t\tself.clearActiveOption();\n\t\t}\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.dropdown);\n\t}\n\n\t/**\n\t * Calculates and applies the appropriate\n\t * position of the dropdown if dropdownParent = 'body'.\n\t * Otherwise, position is determined by css\n\t */\n\tpositionDropdown(){\n\n\t\tif( this.settings.dropdownParent !== 'body' ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar context\t\t\t= this.control;\n\t\tvar rect\t\t\t= context.getBoundingClientRect();\n\t\tvar top\t\t\t\t= context.offsetHeight + rect.top  + window.scrollY;\n\t\tvar left\t\t\t= rect.left + window.scrollX;\n\n\n\t\tapplyCSS(this.dropdown,{\n\t\t\twidth : rect.width + 'px',\n\t\t\ttop   : top + 'px',\n\t\t\tleft  : left + 'px'\n\t\t});\n\n\t}\n\n\t/**\n\t * Resets / clears all selected items\n\t * from the control.\n\t *\n\t */\n\tclear(silent?:boolean) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\n\t\tvar items = self.controlChildren();\n\t\titerate(items,(item:TomItem)=>{\n\t\t\tself.removeItem(item,true);\n\t\t});\n\n\t\tself.inputState();\n\t\tif( !silent ) self.updateOriginalInput();\n\t\tself.trigger('clear');\n\t}\n\n\t/**\n\t * A helper method for inserting an element\n\t * at the current caret position.\n\t *\n\t */\n\tinsertAtCaret(el:HTMLElement) {\n\t\tconst self\t\t= this;\n\t\tconst caret\t\t= self.caretPos;\n\t\tconst target\t= self.control;\n\n\t\ttarget.insertBefore(el, target.children[caret] || null);\n\t\tself.setCaret(caret + 1);\n\t}\n\n\t/**\n\t * Removes the current selected item(s).\n\t *\n\t */\n\tdeleteSelection(e:KeyboardEvent):boolean {\n\t\tvar direction, selection, caret, tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getSelection(self.control_input);\n\n\n\t\t// determine items that will be removed\n\t\tconst rm_items:TomItem[]\t= [];\n\n\t\tif (self.activeItems.length) {\n\n\t\t\ttail = getTail(self.activeItems, direction);\n\t\t\tcaret = nodeIndex(tail);\n\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\titerate(self.activeItems, (item:TomItem) => rm_items.push(item) );\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tconst items = self.controlChildren();\n\t\t\tlet rm_item;\n\t\t\tif( direction < 0 && selection.start === 0 && selection.length === 0 ){\n\t\t\t\trm_item = items[self.caretPos - 1];\n\n\t\t\t}else if( direction > 0 && selection.start === self.inputValue().length ){\n\t\t\t\trm_item = items[self.caretPos];\n\t\t\t}\n\n\t\t\tif( rm_item !== undefined ){\n\t\t\t\trm_items.push( rm_item );\n\t\t\t}\n\t\t}\n\n\t\tif( !self.shouldDelete(rm_items,e) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tpreventDefault(e,true);\n\n\t\t// perform removal\n\t\tif (typeof caret !== 'undefined') {\n\t\t\tself.setCaret(caret);\n\t\t}\n\n\t\twhile( rm_items.length ){\n\t\t\tself.removeItem(rm_items.pop());\n\t\t}\n\n\t\tself.inputState();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return true if the items should be deleted\n\t */\n\tshouldDelete(items:TomItem[],evt:MouseEvent|KeyboardEvent){\n\n\t\tconst values = items.map(item => item.dataset.value);\n\n\t\t// allow the callback to abort\n\t\tif( !values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete(values,evt) === false) ){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Selects the previous / next item (depending on the `direction` argument).\n\t *\n\t * > 0 - right\n\t * < 0 - left\n\t *\n\t */\n\tadvanceSelection(direction:number, e?:MouseEvent|KeyboardEvent) {\n\t\tvar last_active, adjacent, self = this;\n\n\t\tif (self.rtl) direction *= -1;\n\t\tif( self.inputValue().length ) return;\n\n\n\t\t// add or remove to active items\n\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) || isKeyDown('shiftKey',e) ){\n\n\t\t\tlast_active\t\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\n\t\t\t\tif( !last_active.classList.contains('active') ){\n\t\t\t\t\tadjacent\t\t\t= last_active;\n\t\t\t\t}else{\n\t\t\t\t\tadjacent\t\t\t= self.getAdjacent(last_active,direction,'item');\n\t\t\t\t}\n\n\t\t\t// if no active item, get items adjacent to the control input\n\t\t\t}else if( direction > 0 ){\n\t\t\t\tadjacent\t\t\t= self.control_input.nextElementSibling;\n\t\t\t}else{\n\t\t\t\tadjacent\t\t\t= self.control_input.previousElementSibling;\n\t\t\t}\n\n\n\t\t\tif( adjacent ){\n\t\t\t\tif( adjacent.classList.contains('active') ){\n\t\t\t\t\tself.removeActiveItem(last_active);\n\t\t\t\t}\n\t\t\t\tself.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n\t\t\t}\n\n\t\t// move caret to the left or right\n\t\t}else{\n\t\t\tself.moveCaret(direction);\n\t\t}\n\t}\n\n\tmoveCaret(direction:number){}\n\n\t/**\n\t * Get the last active item\n\t *\n\t */\n\tgetLastActive(direction?:number){\n\n\t\tlet last_active = this.control.querySelector('.last-active');\n\t\tif( last_active ){\n\t\t\treturn last_active;\n\t\t}\n\n\n\t\tvar result = this.control.querySelectorAll('.active');\n\t\tif( result ){\n\t\t\treturn getTail(result,direction);\n\t\t}\n\t}\n\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tsetCaret(new_pos:number) {\n\t\tthis.caretPos = this.items.length;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():TomItem[]{\n\t\treturn Array.from( this.control.querySelectorAll('[data-ts-item]') ) as TomItem[];\n\t}\n\n\t/**\n\t * Disables user input on the control. Used while\n\t * items are being asynchronously created.\n\t */\n\tlock() {\n\t\tthis.setLocked(true);\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.setLocked(false);\n\t}\n\n\t/**\n\t * Disable or enable user input on the control\n\t */\n\tsetLocked( lock:boolean = this.isReadOnly || this.isDisabled ){\n\t\tthis.isLocked = lock;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Disables user input on the control completely.\n\t * While disabled, it cannot receive focus.\n\t */\n\tdisable() {\n\t\tthis.setDisabled(true);\n\t\tthis.close();\n\t}\n\n\t/**\n\t * Enables the control so that it can respond\n\t * to focus and user input.\n\t */\n\tenable() {\n\t\tthis.setDisabled(false);\n\t}\n\n\tsetDisabled(disabled:boolean){\n\t\tthis.focus_node.tabIndex\t\t= disabled ? -1 : this.tabIndex;\n\t\tthis.isDisabled\t\t\t\t\t= disabled;\n\t\tthis.input.disabled\t\t\t\t= disabled;\n\t\tthis.control_input.disabled\t\t= disabled;\n\t\tthis.setLocked();\n\t}\n\n\tsetReadOnly(isReadOnly:boolean){\n\t\tthis.isReadOnly\t\t\t\t\t= isReadOnly;\n\t\tthis.input.readOnly\t\t\t\t= isReadOnly;\n\t\tthis.control_input.readOnly\t\t= isReadOnly;\n\t\tthis.setLocked();\n\t}\n\n\t/**\n\t * Completely destroys the control and\n\t * unbinds all event listeners so that it can\n\t * be garbage collected.\n\t */\n\tdestroy() {\n\t\tvar self = this;\n\t\tvar revertSettings = self.revertSettings;\n\n\t\tself.trigger('destroy');\n\t\tself.off();\n\t\tself.wrapper.remove();\n\t\tself.dropdown.remove();\n\n\t\tself.input.innerHTML = revertSettings.innerHTML;\n\t\tself.input.tabIndex = revertSettings.tabIndex;\n\n\t\tremoveClasses(self.input,'tomselected','ts-hidden-accessible');\n\n\t\tself._destroy();\n\n\t\tdelete self.input.tomselect;\n\t}\n\n\t/**\n\t * A helper method for rendering \"item\" and\n\t * \"option\" templates, given the data.\n\t *\n\t */\n\trender( templateName:TomTemplateNames, data?:any ):null|HTMLElement{\n\t\tvar id, html;\n\t\tconst self = this;\n\n\t\tif( typeof this.settings.render[templateName] !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\t// render markup\n\t\thtml = self.settings.render[templateName].call(this, data, escape_html);\n\n\t\tif( !html ){\n\t\t\treturn null;\n\t\t}\n\n\t\thtml = getDom( html );\n\n\t\t// add mandatory attributes\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\n\t\t\tif( data[self.settings.disabledField] ){\n\t\t\t\tsetAttr(html,{'aria-disabled':'true'});\n\t\t\t}else{\n\t\t\t\tsetAttr(html,{'data-selectable': ''});\n\t\t\t}\n\n\t\t}else if (templateName === 'optgroup') {\n\t\t\tid = data.group[self.settings.optgroupValueField];\n\t\t\tsetAttr(html,{'data-group': id});\n\t\t\tif(data.group[self.settings.disabledField]) {\n\t\t\t\tsetAttr(html,{'data-disabled': ''});\n\t\t\t}\n\t\t}\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tconst value\t= get_hash(data[self.settings.valueField]);\n\t\t\tsetAttr(html,{'data-value': value });\n\n\n\t\t\t// make sure we have some classes if a template is overwritten\n\t\t\tif( templateName === 'item' ){\n\t\t\t\taddClasses(html,self.settings.itemClass);\n\t\t\t\tsetAttr(html,{'data-ts-item':''});\n\t\t\t}else{\n\t\t\t\taddClasses(html,self.settings.optionClass);\n\t\t\t\tsetAttr(html,{\n\t\t\t\t\trole:'option',\n\t\t\t\t\tid:data.$id\n\t\t\t\t});\n\n\t\t\t\t// update cache\n\t\t\t\tdata.$div = html;\n\t\t\t\tself.options[value] = data;\n\t\t\t}\n\n\n\t\t}\n\n\t\treturn html;\n\n\t}\n\n\n\t/**\n\t * Type guarded rendering\n\t *\n\t */\n\t_render( templateName:TomTemplateNames, data?:any ):HTMLElement{\n\t\tconst html = this.render(templateName, data);\n\n\t\tif( html == null ){\n\t\t\tthrow 'HTMLElement expected';\n\t\t}\n\t\treturn html;\n\t}\n\n\n\t/**\n\t * Clears the render cache for a template. If\n\t * no template is given, clears all render\n\t * caches.\n\t *\n\t */\n\tclearCache():void{\n\n\t\titerate(this.options, (option:TomOption)=>{\n\t\t\tif( option.$div ){\n\t\t\t\toption.$div.remove();\n\t\t\t\tdelete option.$div;\n\t\t\t}\n\t\t});\n\n\t}\n\n\t/**\n\t * Removes a value from item and option caches\n\t *\n\t */\n\tuncacheValue(value:string){\n\n\t\tconst option_el\t\t\t= this.getOption(value);\n\t\tif( option_el ) option_el.remove();\n\n\t}\n\n\t/**\n\t * Determines whether or not to display the\n\t * create item prompt, given a user input.\n\t *\n\t */\n\tcanCreate( input:string ):boolean {\n\t\treturn this.settings.create && (input.length > 0) && (this.settings.createFilter as TomCreateFilter ).call(this, input);\n\t}\n\n\n\t/**\n\t * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n\t *\n\t * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n\t *\n\t * });\n\t */\n\thook( when:string, method:string, new_fn:any ){\n\t\tvar self = this;\n\t\tvar orig_method = self[method];\n\n\n\t\tself[method] = function(){\n\t\t\tvar result, result_new;\n\n\t\t\tif( when === 'after' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\tresult_new = new_fn.apply(self, arguments );\n\n\t\t\tif( when === 'instead' ){\n\t\t\t\treturn result_new;\n\t\t\t}\n\n\t\t\tif( when === 'before' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t}\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "/**\n * Plugin: \"change_listener\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { addEvent } from '../../utils.ts';\n\nexport default function(this:TomSelect) {\n\taddEvent(this.input,'change',()=>{\n\t\tthis.sync();\n\t});\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"checkbox_options\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { TomTemplate } from '../../types/index.ts';\nimport { preventDefault, hash_key } from '../../utils.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { CBOptions } from './types.ts';\n\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tvar self = this;\n\tvar orig_onOptionSelect = self.onOptionSelect;\n\n\tself.settings.hideSelected = false;\n\n\tconst cbOptions : CBOptions = Object.assign({\n\t\t// so that the user may add different ones as well\n\t\tclassName             : \"tomselect-checkbox\",\n\n\t\t// the following default to the historic plugin's values\n\t\tcheckedClassNames     : undefined,\n\t\tuncheckedClassNames   : undefined,\n\t}, userOptions);\n\n\n\tvar UpdateChecked = function(checkbox:HTMLInputElement, toCheck : boolean) {\n\t\tif( toCheck ){\n\t\t\tcheckbox.checked = true;\n\t\t\tif (cbOptions.uncheckedClassNames) {\n\t\t\t\tcheckbox.classList.remove(...cbOptions.uncheckedClassNames);\n\t\t\t}\n\t\t\tif (cbOptions.checkedClassNames) {\n\t\t\t\tcheckbox.classList.add(...cbOptions.checkedClassNames);\n\t\t\t}\n\t\t}else{\n\t\t\tcheckbox.checked = false;\n\t\t\tif (cbOptions.checkedClassNames) {\n\t\t\t\tcheckbox.classList.remove(...cbOptions.checkedClassNames);\n\t\t\t}\n\t\t\tif (cbOptions.uncheckedClassNames) {\n\t\t\t\tcheckbox.classList.add(...cbOptions.uncheckedClassNames);\n\t\t\t}\n\t\t}\n\t}\n\n\t// update the checkbox for an option\n\tvar UpdateCheckbox = function(option:HTMLElement){\n\t\tsetTimeout(()=>{\n\t\t\tvar checkbox = option.querySelector('input.' + cbOptions.className);\n\t\t\tif( checkbox instanceof HTMLInputElement ){\n\t\t\t\tUpdateChecked(checkbox, option.classList.contains('selected'));\n\t\t\t}\n\t\t},1);\n\t};\n\n\t// add checkbox to option template\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_option = self.settings.render.option;\n\n\t\tself.settings.render.option = ((data, escape_html) => {\n\t\t\tvar rendered = getDom(orig_render_option.call(self, data, escape_html));\n\t\t\tvar checkbox = document.createElement('input');\n\t\t\tif (cbOptions.className) {\n\t\t\t\tcheckbox.classList.add(cbOptions.className);\n\t\t\t}\n\t\t\tcheckbox.addEventListener('click',function(evt){\n\t\t\t\tpreventDefault(evt);\n\t\t\t});\n\n\t\t\tcheckbox.type = 'checkbox';\n\t\t\tconst hashed = hash_key(data[self.settings.valueField]);\n\n\t\t\tUpdateChecked(checkbox, !!(hashed && self.items.indexOf(hashed) > -1) );\n\n\t\t\trendered.prepend(checkbox);\n\t\t\treturn rendered;\n\t\t}) satisfies TomTemplate;\n\t});\n\n\t// uncheck when item removed\n\tself.on('item_remove',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\toption.classList.remove('selected'); // selected class won't be removed yet\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\t// check when item added\n\tself.on('item_add',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\n\t// remove items when selected option is clicked\n\tself.hook('instead','onOptionSelect',( evt:KeyboardEvent, option:HTMLElement )=>{\n\n\t\tif( option.classList.contains('selected') ){\n\t\t\toption.classList.remove('selected')\n\t\t\tself.removeItem(option.dataset.value);\n\t\t\tself.refreshOptions();\n\t\t\tpreventDefault(evt,true);\n\t\t\treturn;\n        }\n\n\t\torig_onOptionSelect.call(self, evt, option);\n\n\t\tUpdateCheckbox(option);\n\t});\n\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { CBOptions } from './types.ts';\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\tclassName: 'clear-button',\n\t\ttitle: 'Clear All',\n\t\thtml: (data:CBOptions) => {\n\t\t\treturn `<div class=\"${data.className}\" title=\"${data.title}\">&#10799;</div>`;\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar button = getDom(options.html(options));\n\t\tbutton.addEventListener('click',(evt)=>{\n\n\t\t\tif( self.isLocked ) return;\n\n\t\t\tself.clear();\n\n\t\t\tif( self.settings.mode === 'single' && self.settings.allowEmptyOption ){\n\t\t\t\tself.addItem('');\n\t\t\t}\n\n\t\t\tevt.preventDefault();\n\t\t\tevt.stopPropagation();\n\t\t});\n\t\tself.control.appendChild(button);\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"drag_drop\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { TomOption, TomItem } from '../../types/index.ts';\nimport { escape_html, preventDefault, addEvent } from '../../utils.ts';\nimport { getDom, setAttr } from '../../vanilla.ts';\n\n\nconst insertAfter = (referenceNode:Element, newNode:Element) => {\n\treferenceNode.parentNode?.insertBefore(newNode, referenceNode.nextSibling);\n}\n\nconst insertBefore = (referenceNode:Element, newNode:Element) => {\n\treferenceNode.parentNode?.insertBefore(newNode, referenceNode);\n}\n\nconst isBefore = (referenceNode:Element|undefined|null, newNode:Element|undefined|null) =>{\n\t\n\tdo{\n\t\tnewNode = newNode?.previousElementSibling;\n\n\t\tif( referenceNode == newNode ){\n\t\t\treturn true;\n\t\t}\n\n\t}while( newNode && newNode.previousElementSibling );\n\n\treturn false;\n}\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tif (self.settings.mode !== 'multi') return;\n\n\tvar orig_lock\t\t= self.lock;\n\tvar orig_unlock\t\t= self.unlock;\n\tlet sortable = true;\n\t\tlet drag_item:TomItem|undefined;\n\n\n\t/**\n\t * Add draggable attribute to item\n\t */\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\t\t\tconst item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\t\t\tsetAttr(item,{'draggable':'true'});\n\n\n\t\t\t// prevent doc_mousedown (see tom-select.ts)\n\t\t\tconst mousedown = (evt:Event) => {\n\t\t\t\tif( !sortable ) preventDefault(evt);\n\t\t\t\tevt.stopPropagation();\n\t\t\t}\n\n\t\t\tconst dragStart = (evt:Event) => {\n\t\t\t\tdrag_item = item;\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\titem.classList.add('ts-dragging');\n\t\t\t\t}, 0);\n\t\t\t\t\n\t\t\t}\n\n\t\t\tconst dragOver = (evt:Event) =>{\n\t\t\t\tevt.preventDefault();\n\t\t\t\titem.classList.add('ts-drag-over');\n\t\t\t\tmoveitem(item,drag_item);\n\t\t\t}\n\n\t\t\tconst dragLeave = () => {\n\t\t\t\titem.classList.remove('ts-drag-over');\n\t\t\t}\n\n\t\t\tconst moveitem = (targetitem:TomItem, dragitem:TomItem|undefined) => {\n\t\t\t\tif( dragitem === undefined ) return;\n\t\t\t\t\n\t\t\t\tif( isBefore(dragitem,item) ){\n\t\t\t\t\tinsertAfter(targetitem,dragitem);\n\t\t\t\t}else{\n\t\t\t\t\tinsertBefore(targetitem,dragitem);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst dragend = () => {\n\t\t\t\tdocument.querySelectorAll('.ts-drag-over').forEach(el=> el.classList.remove('ts-drag-over'));\n\t\t\t\tdrag_item?.classList.remove('ts-dragging');\n\t\t\t\tdrag_item = undefined;\n\n\t\t\t\tvar values:string[] = [];\n\t\t\t\tself.control.querySelectorAll(`[data-value]`).forEach((el:Element)=> {\n\t\t\t\t\tif( (<HTMLOptionElement>el).dataset.value ){\n\t\t\t\t\t\tlet value = (<HTMLOptionElement>el).dataset.value;\n\t\t\t\t\t\tif( value ){\n\t\t\t\t\t\t\tvalues.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tself.setValue(values);\n\t\t\t}\t\n\n\n\t\t\taddEvent(item,'mousedown', mousedown);\n\t\t\taddEvent(item,'dragstart', dragStart);\n\t\t\taddEvent(item,'dragenter', dragOver)\n\t\t\taddEvent(item,'dragover', dragOver);\n\t\t\taddEvent(item,'dragleave', dragLeave);\n\t\t\taddEvent(item,'dragend', dragend);\n\t\t\t\t\n\t\t\treturn item;\n\t\t}\t\n\t});\n\n\n\n\tself.hook('instead','lock',()=>{\n\t\tsortable = false;\n\t\treturn orig_lock.call(self);\n\t});\n\n\tself.hook('instead','unlock',()=>{\n\t\tsortable = true;\n\t\treturn orig_unlock.call(self);\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { preventDefault } from '../../utils.ts';\nimport { DHOptions } from './types.ts';\n\nexport default function(this:TomSelect, userOptions:DHOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttitle         : 'Untitled',\n\t\theaderClass   : 'dropdown-header',\n\t\ttitleRowClass : 'dropdown-header-title',\n\t\tlabelClass    : 'dropdown-header-label',\n\t\tcloseClass    : 'dropdown-header-close',\n\n\t\thtml: (data:DHOptions) => {\n\t\t\treturn (\n\t\t\t\t'<div class=\"' + data.headerClass + '\">' +\n\t\t\t\t\t'<div class=\"' + data.titleRowClass + '\">' +\n\t\t\t\t\t\t'<span class=\"' + data.labelClass + '\">' + data.title + '</span>' +\n\t\t\t\t\t\t'<a class=\"' + data.closeClass + '\">&times;</a>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t'</div>'\n\t\t\t);\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar header = getDom(options.html(options));\n\n\t\tvar close_link = header.querySelector('.'+options.closeClass);\n\t\tif( close_link ){\n\t\t\tclose_link.addEventListener('click',(evt)=>{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\tself.close();\n\t\t\t});\n\t\t}\n\n\t\tself.dropdown.insertBefore(header, self.dropdown.firstChild);\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { nodeIndex, removeClasses } from '../../vanilla.ts';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tself.hook('instead','setCaret',(new_pos:number) => {\n\n\t\tif( self.settings.mode === 'single' || !self.control.contains(self.control_input) ) {\n\t\t\tnew_pos = self.items.length;\n\t\t} else {\n\t\t\tnew_pos = Math.max(0, Math.min(self.items.length, new_pos));\n\n\t\t\tif( new_pos != self.caretPos && !self.isPending ){\n\n\t\t\t\tself.controlChildren().forEach((child,j) => {\n\t\t\t\t\tif( j < new_pos ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( child );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = new_pos;\n\t});\n\n\tself.hook('instead','moveCaret',(direction:number) => {\n\n\t\tif( !self.isFocused ) return;\n\n\t\t// move caret before or after selected items\n\t\tconst last_active\t\t= self.getLastActive(direction);\n\t\tif( last_active ){\n\t\t\tconst idx = nodeIndex(last_active);\n\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\tself.setActiveItem();\n\t\t\tremoveClasses(last_active as HTMLElement,'last-active');\n\n\t\t// move caret left or right of current position\n\t\t}else{\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t}\n\n\t});\n\n};\n", "export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC      \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport * as constants from '../../constants.ts';\nimport { getDom, addClasses } from '../../vanilla.ts';\nimport { addEvent, preventDefault } from '../../utils.ts';\n\n\nexport default function(this:TomSelect) {\n\tconst self = this;\n\n\tself.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n\tself.hook('before','setup',()=>{\n\t\tself.focus_node\t\t= self.control;\n\n\t\taddClasses( self.control_input, 'dropdown-input');\n\n\t \tconst div = getDom('<div class=\"dropdown-input-wrap\">');\n\t\tdiv.append(self.control_input);\n\t\tself.dropdown.insertBefore(div, self.dropdown.firstChild);\n\n\t\t// set a placeholder in the select control\n\t\tconst placeholder = getDom('<input class=\"items-placeholder\" tabindex=\"-1\" />') as HTMLInputElement;\n\t\tplaceholder.placeholder = self.settings.placeholder ||'';\n\t\tself.control.append(placeholder);\n\n\t});\n\n\n\tself.on('initialize',()=>{\n\n\t\t// set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n\t\tself.control_input.addEventListener('keydown',(evt:KeyboardEvent) =>{\n\t\t//addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n\t\t\tswitch( evt.keyCode ){\n\t\t\t\tcase constants.KEY_ESC:\n\t\t\t\t\tif (self.isOpen) {\n\t\t\t\t\t\tpreventDefault(evt,true);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\t\t\t\tcase constants.KEY_TAB:\n\t\t\t\t\tself.focus_node.tabIndex = -1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn self.onKeyDown.call(self,evt);\n\t\t});\n\n\t\tself.on('blur',()=>{\n\t\t\tself.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n\t\t});\n\n\n\t\t// give the control_input focus when the dropdown is open\n\t\tself.on('dropdown_open',() =>{\n\t\t\tself.control_input.focus();\n\t\t});\n\n\t\t// prevent onBlur from closing when focus is on the control_input\n\t\tconst orig_onBlur = self.onBlur;\n\t\tself.hook('instead','onBlur',(evt?:FocusEvent)=>{\n\t\t\tif( evt && evt.relatedTarget == self.control_input ) return;\n\t\t\treturn orig_onBlur.call(self);\n\t\t});\n\n\t\taddEvent(self.control_input,'blur', () => self.onBlur() );\n\n\t\t// return focus to control to allow further keyboard input\n\t\tself.hook('before','close',() =>{\n\n\t\t\tif( !self.isOpen ) return;\n\t\t\tself.focus_node.focus({preventScroll: true});\n\t\t});\n\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { addEvent } from '../../utils.ts';\n\nexport default function(this:TomSelect) {\n\tvar self\t\t\t\t\t= this;\n\n\tself.on('initialize',()=>{\n\n\n\t\tvar test_input\t\t\t\t= document.createElement('span');\n\t\tvar control\t\t\t\t\t= self.control_input;\n\t\ttest_input.style.cssText\t= 'position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ';\n\n\t\tself.wrapper.appendChild(test_input);\n\n\n\t\tvar transfer_styles\t\t\t= [ 'letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform' ];\n\n\t\tfor( const style_name of transfer_styles ){\n\t\t\t// @ts-ignore TS7015 https://stackoverflow.com/a/50506154/697576\n\t\t\ttest_input.style[style_name] = control.style[style_name];\n\t\t}\n\n\n\t\t/**\n\t\t * Set the control width\n\t\t *\n\t\t */\n\t\tvar resize = ()=>{\n\t\t\ttest_input.textContent\t= control.value;\n\t\t\tcontrol.style.width\t\t= test_input.clientWidth+'px';\n\t\t};\n\n\t\tresize();\n\t\tself.on('update item_add item_remove',resize);\n\t\taddEvent(control,'input', resize );\n\t\taddEvent(control,'keyup', resize );\n\t\taddEvent(control,'blur', resize );\n\t\taddEvent(control,'update', resize );\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_deleteSelection = self.deleteSelection;\n\n\tthis.hook('instead','deleteSelection',(evt:KeyboardEvent) => {\n\n\t\tif( self.activeItems.length ){\n\t\t\treturn orig_deleteSelection.call(self, evt);\n\t\t}\n\n\t\treturn false;\n\t});\n\n};\n", "/**\n * Plugin: \"no_active_items\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\n\nexport default function(this:TomSelect) {\n\tthis.hook('instead','setActiveItem',() => {});\n\tthis.hook('instead','selectAll',() => {});\n};\n", "export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC      \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"optgroup_columns\" (Tom Select.js)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport * as constants from '../../constants.ts';\nimport { parentMatch, nodeIndex } from '../../vanilla.ts';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tvar orig_keydown = self.onKeyDown;\n\n\tself.hook('instead','onKeyDown',(evt:KeyboardEvent)=>{\n\t\tvar index, option, options, optgroup;\n\n\t\tif( !self.isOpen || !(evt.keyCode === constants.KEY_LEFT || evt.keyCode === constants.KEY_RIGHT)) {\n\t\t\treturn orig_keydown.call(self,evt);\n\t\t}\n\n\t\tself.ignoreHover\t= true;\n\t\toptgroup\t\t\t= parentMatch(self.activeOption,'[data-group]');\n\t\tindex\t\t\t\t= nodeIndex(self.activeOption,'[data-selectable]');\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( evt.keyCode === constants.KEY_LEFT ){\n\t\t\toptgroup = optgroup.previousSibling;\n\t\t} else {\n\t\t\toptgroup = optgroup.nextSibling;\n\t\t}\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\toptions\t\t\t\t= (<HTMLOptGroupElement>optgroup).querySelectorAll('[data-selectable]');\n\t\toption\t\t\t\t= options[ Math.min(options.length - 1, index) ] as HTMLElement;\n\n\t\tif( option ){\n\t\t\tself.setActiveOption(option);\n\t\t}\n\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { escape_html, preventDefault, addEvent } from '../../utils.ts';\nimport { TomOption, TomItem } from '../../types/index.ts';\nimport { RBOptions } from './types.ts';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel     : '&times;',\n\t\t\ttitle     : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend    : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\n\t\t\tvar close_button = getDom(html);\n\t\t\titem.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\tif( self.isLocked ) return;\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif( self.isLocked ) return;\n\t\t\t\tif( !self.shouldDelete([item],evt as MouseEvent) ) return;\n\n\t\t\t\tself.removeItem(item);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t\tself.inputState();\n\t\t\t});\n\n\t\t\treturn item;\n\t\t};\n\n\t});\n\n\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nimport type TomSelect from '../../tom-select.ts';\nimport { TomOption } from '../../types/index.ts';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( !self.isFocused ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { TomOption } from '../../types/index.ts';\nimport { addClasses } from '../../vanilla.ts';\n\nexport default function(this:TomSelect) {\n\tconst self\t\t\t\t\t\t\t= this;\n\tconst orig_canLoad\t\t\t\t\t= self.canLoad;\n\tconst orig_clearActiveOption\t\t= self.clearActiveOption;\n\tconst orig_loadCallback\t\t\t\t= self.loadCallback;\n\n\tvar pagination:{[key:string]:any}\t= {};\n\tvar dropdown_content:HTMLElement;\n\tvar loading_more\t\t\t\t\t= false;\n\tvar load_more_opt:HTMLElement;\n\tvar default_values: string[]\t\t= [];\n\n\tif( !self.settings.shouldLoadMore ){\n\n\t\t// return true if additional results should be loaded\n\t\tself.settings.shouldLoadMore = ():boolean=>{\n\n\t\t\tconst scroll_percent = dropdown_content.clientHeight / (dropdown_content.scrollHeight - dropdown_content.scrollTop);\n\t\t\tif( scroll_percent > 0.9 ){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif( self.activeOption ){\n\t\t\t\tvar selectable\t= self.selectable();\n\t\t\t\tvar index\t\t= Array.from(selectable).indexOf(self.activeOption);\n\t\t\t\tif( index >= (selectable.length-2) ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\n\tif( !self.settings.firstUrl ){\n\t\tthrow 'virtual_scroll plugin requires a firstUrl() method';\n\t}\n\n\n\t// in order for virtual scrolling to work,\n\t// options need to be ordered the same way they're returned from the remote data source\n\tself.settings.sortField\t\t\t= [{field:'$order'},{field:'$score'}];\n\n\n\t// can we load more results for given query?\n\tconst canLoadMore = (query:string):boolean => {\n\n\t\tif( typeof self.settings.maxOptions === 'number' && dropdown_content.children.length >= self.settings.maxOptions ){\n\t\t\treturn false;\n\t\t}\n\n\t\tif( (query in pagination) && pagination[query] ){\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tconst clearFilter = (option:TomOption, value:string):boolean => {\n\t\tif( self.items.indexOf(value) >= 0 || default_values.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\n\t// set the next url that will be\n\tself.setNextUrl = (value:string,next_url:any):void => {\n\t\tpagination[value] = next_url;\n\t};\n\n\t// getUrl() to be used in settings.load()\n\tself.getUrl = (query:string):any =>{\n\n\t\tif( query in pagination ){\n\t\t\tconst next_url = pagination[query];\n\t\t\tpagination[query] = false;\n\t\t\treturn next_url;\n\t\t}\n\n\t\t// if the user goes back to a previous query\n\t\t// we need to load the first page again\n\t\tself.clearPagination();\n\n\t\treturn self.settings.firstUrl.call(self,query);\n\t};\n\n\t// clear pagination\n\tself.clearPagination = ():void =>{\n\t\tpagination = {};\n\t};\n\n\t// don't clear the active option (and cause unwanted dropdown scroll)\n\t// while loading more results\n\tself.hook('instead','clearActiveOption',()=>{\n\n\t\tif( loading_more ){\n\t\t\treturn;\n\t\t}\n\n\t\treturn orig_clearActiveOption.call(self);\n\t});\n\n\t// override the canLoad method\n\tself.hook('instead','canLoad',(query:string)=>{\n\n\t\t// first time the query has been seen\n\t\tif( !(query in pagination) ){\n\t\t\treturn orig_canLoad.call(self,query);\n\t\t}\n\n\t\treturn canLoadMore(query);\n\t});\n\n\n\t// wrap the load\n\tself.hook('instead','loadCallback',( options:TomOption[], optgroups:TomOption[])=>{\n\n\t\tif( !loading_more ){\n\t\t\tself.clearOptions(clearFilter);\n\t\t}else if( load_more_opt ){\n\t\t\tconst first_option = options[0];\n\t\t\tif( first_option !== undefined ){\n\t\t\t\tload_more_opt.dataset.value\t\t= first_option[self.settings.valueField];\n\t\t\t}\n\t\t}\n\n\t\torig_loadCallback.call( self, options, optgroups);\n\n\t\tloading_more = false;\n\t});\n\n\n\t// add templates to dropdown\n\t//\tloading_more if we have another url in the queue\n\t//\tno_more_results if we don't have another url in the queue\n\tself.hook('after','refreshOptions',()=>{\n\n\t\tconst query\t\t= self.lastValue;\n\t\tvar option;\n\n\t\tif( canLoadMore(query) ){\n\n\t\t\toption = self.render('loading_more',{query:query});\n\t\t\tif( option ){\n\t\t\t\toption.setAttribute('data-selectable',''); // so that navigating dropdown with [down] keypresses can navigate to this node\n\t\t\t\tload_more_opt = option;\n\t\t\t}\n\n\t\t}else if( (query in pagination) && !dropdown_content.querySelector('.no-results') ){\n\t\t\toption = self.render('no_more_results',{query:query});\n\t\t}\n\n\t\tif( option ){\n\t\t\taddClasses(option,self.settings.optionClass);\n\t\t\tdropdown_content.append( option );\n\t\t}\n\n\t});\n\n\n\t// add scroll listener and default templates\n\tself.on('initialize',()=>{\n\t\tdefault_values = Object.keys(self.options);\n\t\tdropdown_content = self.dropdown_content;\n\n\t\t// default templates\n\t\tself.settings.render = Object.assign({}, {\n\t\t\tloading_more:() => {\n\t\t\t\treturn `<div class=\"loading-more-results\">Loading more results ... </div>`;\n\t\t\t},\n\t\t\tno_more_results:() =>{\n\t\t\t\treturn `<div class=\"no-more-results\">No more results</div>`;\n\t\t\t}\n\t\t},self.settings.render);\n\n\n\t\t// watch dropdown content scroll position\n\t\tdropdown_content.addEventListener('scroll',()=>{\n\n\t\t\tif( !self.settings.shouldLoadMore.call(self) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// !important: this will get checked again in load() but we still need to check here otherwise loading_more will be set to true\n\t\t\tif( !canLoadMore(self.lastValue) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// don't call load() too much\n\t\t\tif( loading_more ) return;\n\n\n\t\t\tloading_more = true;\n\t\t\tself.load.call(self,self.lastValue);\n\t\t});\n\t});\n\n};\n", "import TomSelect from './tom-select.ts';\n\nimport change_listener from './plugins/change_listener/plugin.ts';\nimport checkbox_options from './plugins/checkbox_options/plugin.ts';\nimport clear_button from './plugins/clear_button/plugin.ts';\nimport drag_drop from './plugins/drag_drop/plugin.ts';\nimport dropdown_header from './plugins/dropdown_header/plugin.ts';\nimport caret_position from './plugins/caret_position/plugin.ts';\nimport dropdown_input from './plugins/dropdown_input/plugin.ts';\nimport input_autogrow from './plugins/input_autogrow/plugin.ts';\nimport no_backspace_delete from './plugins/no_backspace_delete/plugin.ts';\nimport no_active_items from './plugins/no_active_items/plugin.ts';\nimport optgroup_columns from './plugins/optgroup_columns/plugin.ts';\nimport remove_button from './plugins/remove_button/plugin.ts';\nimport restore_on_backspace from './plugins/restore_on_backspace/plugin.ts';\nimport virtual_scroll from './plugins/virtual_scroll/plugin.ts';\n\nTomSelect.define('change_listener', change_listener);\nTomSelect.define('checkbox_options', checkbox_options);\nTomSelect.define('clear_button', clear_button);\nTomSelect.define('drag_drop', drag_drop);\nTomSelect.define('dropdown_header', dropdown_header);\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('input_autogrow', input_autogrow);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('no_active_items', no_active_items);\nTomSelect.define('optgroup_columns', optgroup_columns);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\nTomSelect.define('virtual_scroll', virtual_scroll);\n\nexport default TomSelect;\n", "// Options:\n//\n// Use data-pricing-active=\"yearly\" to select yearly by default\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"toggle\", \"frequency\", \"plans\"]\n  static values = { frequency: String }\n  static classes = [\"activeFrequency\", \"inactiveFrequency\", \"activePlans\", \"inactivePlans\", \"hiddenToggle\"]\n\n  connect() {\n    this.removeEmptyFrequencies()\n    this.defaultFrequency()\n  }\n\n  // Switches visible plans\n  switch(event) {\n    this.frequencyValue = event.target.dataset.frequency\n  }\n\n  // Removes frequencies that have no plans in them\n  removeEmptyFrequencies() {\n    this.frequencyTargets.forEach(target => {\n      let frequency = target.dataset.frequency\n      let index = this.plansTargets.findIndex((element) => element.dataset.frequency == frequency && element.childElementCount > 0)\n      if (index == -1) target.remove()\n    })\n    this.hiddenToggleClasses.forEach(className => {\n      this.toggleTarget.classList.toggle(className, this.frequencyTargets.length < 2)\n    })\n  }\n\n  defaultFrequency() {\n    if (!this.hasFrequencyValue) this.frequencyValue = this.frequencyTargets[0].dataset.frequency\n  }\n\n  frequencyValueChanged() {\n    this.frequencyTargets.forEach(target => {\n      if (target.dataset.frequency == this.frequencyValue) {\n        this.showFrequency(target)\n      } else {\n        this.hideFrequency(target)\n      }\n    })\n\n    this.plansTargets.forEach(target => {\n      if (target.dataset.frequency == this.frequencyValue) {\n        this.showPlans(target)\n      } else {\n        this.hidePlans(target)\n      }\n    })\n  }\n\n  showFrequency(element) {\n    element.classList.add(...this.activeFrequencyClasses)\n    element.classList.remove(...this.inactiveFrequencyClasses)\n  }\n\n  hideFrequency(element) {\n    element.classList.remove(...this.activeFrequencyClasses)\n    element.classList.add(...this.inactiveFrequencyClasses)\n  }\n\n  showPlans(element) {\n    element.classList.add(...this.activePlansClasses)\n    element.classList.remove(...this.inactivePlansClasses)\n  }\n\n  hidePlans(element) {\n    element.classList.remove(...this.activePlansClasses)\n    element.classList.add(...this.inactivePlansClasses)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { DirectUpload } from \"@rails/activestorage\"\n\nconst CIRCUMFERENCE = 2 * Math.PI * 24 // ~150.796\n\nexport default class extends Controller {\n  static targets = [\"card\", \"content\", \"progress\", \"progressRing\", \"progressText\", \"fileInput\", \"error\"]\n  static values = {\n    orderItemId: Number,\n    locationIdentifier: String,\n    locked: Boolean,\n    url: String\n  }\n\n  connect() {\n    if (this.lockedValue) return\n\n    this.element.addEventListener(\"dragenter\", this.onDragEnter)\n    this.element.addEventListener(\"dragover\", this.onDragOver)\n    this.element.addEventListener(\"dragleave\", this.onDragLeave)\n    this.element.addEventListener(\"drop\", this.onDrop)\n  }\n\n  disconnect() {\n    this.element.removeEventListener(\"dragenter\", this.onDragEnter)\n    this.element.removeEventListener(\"dragover\", this.onDragOver)\n    this.element.removeEventListener(\"dragleave\", this.onDragLeave)\n    this.element.removeEventListener(\"drop\", this.onDrop)\n  }\n\n  // -- Drag events ----------------------------------------------------------\n\n  onDragEnter = (e) => {\n    e.preventDefault()\n    this.dragCounter = (this.dragCounter || 0) + 1\n    this.highlight()\n  }\n\n  onDragOver = (e) => {\n    e.preventDefault()\n  }\n\n  onDragLeave = (e) => {\n    e.preventDefault()\n    this.dragCounter = (this.dragCounter || 1) - 1\n    if (this.dragCounter <= 0) {\n      this.dragCounter = 0\n      this.unhighlight()\n    }\n  }\n\n  onDrop = (e) => {\n    e.preventDefault()\n    this.dragCounter = 0\n    this.unhighlight()\n\n    const file = e.dataTransfer.files[0]\n    if (file) this.handleFile(file)\n  }\n\n  // -- Click-to-upload ------------------------------------------------------\n\n  openFilePicker() {\n    if (this.lockedValue) return\n    this.fileInputTarget.click()\n  }\n\n  handleFileSelect(e) {\n    const file = e.target.files[0]\n    if (file) this.handleFile(file)\n    // Reset so the same file can be re-selected\n    e.target.value = \"\"\n  }\n\n  // Shared by drop + file-picker: PNG-only client gate, then upload or surface\n  // the error. The server re-validates by magic bytes regardless.\n  handleFile(file) {\n    if (this.isValidFile(file)) {\n      this.uploadFile(file)\n    } else {\n      this.showError(this.invalidFileMessage())\n    }\n  }\n\n  // -- Upload ---------------------------------------------------------------\n\n  uploadFile(file) {\n    this.hideError()\n    this.showProgress()\n\n    const upload = new DirectUpload(file, \"/rails/active_storage/direct_uploads\", this)\n\n    upload.create((error, blob) => {\n      if (error) {\n        this.hideProgress()\n        return\n      }\n      this.attachBlob(blob.signed_id)\n    })\n  }\n\n  // DirectUpload delegate: progress callback\n  directUploadWillStoreFileWithXHR(request) {\n    request.upload.addEventListener(\"progress\", (event) => {\n      if (event.lengthComputable) {\n        const pct = Math.round((event.loaded / event.total) * 100)\n        this.updateProgress(pct)\n      }\n    })\n  }\n\n  async attachBlob(signedId) {\n    const csrfToken = document.querySelector('[name=\"csrf-token\"]').content\n\n    try {\n      const response = await fetch(this.urlValue, {\n        method: \"POST\",\n        headers: {\n          \"X-CSRF-Token\": csrfToken,\n          \"Accept\": \"text/vnd.turbo-stream.html\",\n          \"Content-Type\": \"application/json\"\n        },\n        body: JSON.stringify({\n          signed_id: signedId,\n          location_identifier: this.locationIdentifierValue\n        })\n      })\n\n      const contentType = response.headers.get(\"Content-Type\") || \"\"\n      if (contentType.includes(\"turbo-stream\")) {\n        // Success AND a rejected upload both return a turbo stream that\n        // re-renders this card - resetting the progress ring, and on rejection\n        // showing the server's PNG-only message baked into the new card.\n        const html = await response.text()\n        Turbo.renderStreamMessage(html)\n      } else {\n        this.hideProgress()\n        this.showError(\"Upload failed. Please try again.\")\n      }\n    } catch {\n      this.hideProgress()\n      this.showError(\"Upload failed. Please try again.\")\n    }\n  }\n\n  // -- Remove print file ----------------------------------------------------\n\n  async removePrintFile(event) {\n    const url = event.currentTarget.dataset.removeUrl\n    if (!url || !confirm(\"Remove this print file?\")) return\n\n    const csrfToken = document.querySelector('[name=\"csrf-token\"]').content\n\n    try {\n      const response = await fetch(url, {\n        method: \"DELETE\",\n        headers: {\n          \"X-CSRF-Token\": csrfToken,\n          \"Accept\": \"text/vnd.turbo-stream.html\"\n        }\n      })\n\n      if (response.ok) {\n        const html = await response.text()\n        Turbo.renderStreamMessage(html)\n      }\n    } catch (error) {\n      console.error(\"[print-file-drop] remove failed:\", error)\n    }\n  }\n\n  // -- Visual helpers -------------------------------------------------------\n\n  highlight() {\n    if (!this.hasCardTarget) return\n    this.cardTarget.style.borderColor = \"var(--pz-purple)\"\n    this.cardTarget.style.backgroundColor = \"rgba(59,42,143,0.06)\"\n    this.cardTarget.classList.remove(\"border-dashed\")\n  }\n\n  unhighlight() {\n    if (!this.hasCardTarget) return\n    this.cardTarget.style.borderColor = \"\"\n    this.cardTarget.style.backgroundColor = \"\"\n  }\n\n  showProgress() {\n    if (this.hasContentTarget) this.contentTarget.classList.add(\"opacity-20\")\n    if (this.hasProgressTarget) this.progressTarget.classList.remove(\"hidden\")\n    this.updateProgress(0)\n  }\n\n  hideProgress() {\n    if (this.hasContentTarget) this.contentTarget.classList.remove(\"opacity-20\")\n    if (this.hasProgressTarget) this.progressTarget.classList.add(\"hidden\")\n  }\n\n  updateProgress(pct) {\n    if (this.hasProgressRingTarget) {\n      const offset = CIRCUMFERENCE - (pct / 100) * CIRCUMFERENCE\n      this.progressRingTarget.style.strokeDashoffset = offset\n    }\n    if (this.hasProgressTextTarget) {\n      this.progressTextTarget.textContent = `${pct}%`\n    }\n  }\n\n  // -- Validation -----------------------------------------------------------\n\n  // Print files are PNG-only (#1246). The server re-validates by magic bytes;\n  // this is the fast client-side filter so an obvious JPG never even uploads.\n  isValidFile(file) {\n    return file.name.toLowerCase().endsWith(\".png\")\n  }\n\n  invalidFileMessage() {\n    return \"Print files must be PNG. Please export your art as a PNG and try again.\"\n  }\n\n  showError(message) {\n    if (!this.hasErrorTarget) return\n    this.errorTarget.textContent = message\n    this.errorTarget.classList.remove(\"hidden\")\n  }\n\n  hideError() {\n    if (!this.hasErrorTarget) return\n    this.errorTarget.textContent = \"\"\n    this.errorTarget.classList.add(\"hidden\")\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { DirectUpload } from \"@rails/activestorage\"\n\n// Print file placement editor. The stage is a scaled viewport of the print\n// zone: layer state is serialized as fractions of the zone (x/y = center,\n// scale = width fraction) so the server can replay it at full resolution.\n// Konva's module init is deferred until the editor opens (dynamic import in\n// setupStage); note its bytes still ship in the main bundle because esbuild\n// isn't configured for code-splitting.\nexport default class extends Controller {\n  static targets = [\"stage\", \"fileInput\", \"layerList\", \"layerRowTemplate\", \"saveButton\", \"saveStatus\"]\n  static values = {\n    templateUrl: String,\n    zone: Object,          // { x, y, width, height } percents of the template image\n    output: Object,        // { width_px, height_px, dpi }\n    existingLayers: Array, // [{ attachment_id, url, x, y, scale, rotation, z }]\n    saveUrl: String,\n    locationIdentifier: String,\n    templateId: Number\n  }\n\n  static SNAP_PX = 6\n  static MAX_LAYERS = 10\n\n  connect() {\n    this.layers = []\n    this.nextLayerId = 1\n    this.nextZ = 0\n    this.setupStage()\n  }\n\n  disconnect() {\n    this.stage?.destroy()\n  }\n\n  async setupStage() {\n    this.Konva = (await import(\"konva\")).default\n\n    const containerWidth = this.stageTarget.clientWidth || 720\n    const image = new Image()\n    image.onload = () => {\n      const scale = containerWidth / image.naturalWidth\n      const stageH = Math.round(image.naturalHeight * scale)\n      this.stage = new this.Konva.Stage({ container: this.stageTarget, width: containerWidth, height: stageH })\n\n      this.backgroundLayer = new this.Konva.Layer({ listening: false })\n      this.artLayer = new this.Konva.Layer()\n      this.overlayLayer = new this.Konva.Layer({ listening: false })\n      this.stage.add(this.backgroundLayer, this.artLayer, this.overlayLayer)\n\n      this.backgroundLayer.add(new this.Konva.Image({ image, width: containerWidth, height: stageH }))\n\n      const z = this.zoneValue\n      this.zoneRect = {\n        x: (z.x / 100) * containerWidth,\n        y: (z.y / 100) * stageH,\n        width: (z.width / 100) * containerWidth,\n        height: (z.height / 100) * stageH\n      }\n      this.drawZoneChrome()\n      this.setupTransformer()\n\n      // z is the stable stacking order for a layer. Sort before rehydrating\n      // so the initial visual stack is correct regardless of the order each\n      // image's async onload (decode) callback happens to fire in.\n      const maxExistingZ = this.existingLayersValue.reduce(\n        (max, l) => Math.max(max, typeof l.z === \"number\" ? l.z : -1),\n        -1\n      )\n      this.nextZ = maxExistingZ + 1\n      ;[...this.existingLayersValue]\n        .sort((a, b) => (a.z || 0) - (b.z || 0))\n        .forEach((l) => this.addLayerFromUrl(l.url, l))\n\n      this.backgroundLayer.draw()\n    }\n    image.src = this.templateUrlValue\n  }\n\n  drawZoneChrome() {\n    const { x, y, width, height } = this.zoneRect\n    const W = this.stage.width(); const H = this.stage.height()\n    const dim = { fill: \"rgba(255,255,255,0.65)\", listening: false }\n    // Four rects around the zone dim everything outside it (clipped in output).\n    this.overlayLayer.add(\n      new this.Konva.Rect({ x: 0, y: 0, width: W, height: y, ...dim }),\n      new this.Konva.Rect({ x: 0, y: y + height, width: W, height: H - y - height, ...dim }),\n      new this.Konva.Rect({ x: 0, y, width: x, height, ...dim }),\n      new this.Konva.Rect({ x: x + width, y, width: W - x - width, height, ...dim }),\n      new this.Konva.Rect({ x, y, width, height, stroke: \"#3B2A8F\", dash: [6, 4], strokeWidth: 1.5, listening: false })\n    )\n    this.snapV = new this.Konva.Line({ points: [x + width / 2, y, x + width / 2, y + height], stroke: \"#FF7A18\", strokeWidth: 1, visible: false })\n    this.snapH = new this.Konva.Line({ points: [x, y + height / 2, x + width, y + height / 2], stroke: \"#FF7A18\", strokeWidth: 1, visible: false })\n    this.overlayLayer.add(this.snapV, this.snapH)\n  }\n\n  setupTransformer() {\n    this.transformer = new this.Konva.Transformer({\n      rotateEnabled: true,\n      enabledAnchors: [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"],\n      keepRatio: true,\n      flipEnabled: false\n    })\n    this.artLayer.add(this.transformer)\n    this.stage.on(\"click tap\", (e) => {\n      if (e.target === this.stage || e.target.getLayer() === this.backgroundLayer) this.select(null)\n    })\n  }\n\n  // -- Adding layers ---------------------------------------------------------\n\n  openFilePicker() { this.fileInputTarget.click() }\n\n  handleFileSelect(event) {\n    const file = event.target.files[0]\n    event.target.value = \"\"\n    if (!file || !file.name.toLowerCase().endsWith(\".png\")) { alert(\"PNG files only\"); return }\n    if (this.layers.length >= this.constructor.MAX_LAYERS) { alert(\"Layer limit reached\"); return }\n\n    const objectUrl = URL.createObjectURL(file)\n    const entry = this.addLayerFromUrl(objectUrl, null, file.name)\n    // Upload in the background; save is disabled until every layer has an id.\n    entry.uploading = true\n    this.refreshSaveState()\n    const upload = new DirectUpload(file, \"/rails/active_storage/direct_uploads\")\n    upload.create((error, blob) => {\n      entry.uploading = false\n      if (error) { this.removeLayerEntry(entry); alert(\"Upload failed\") } else { entry.signedId = blob.signed_id }\n      this.refreshSaveState()\n    })\n  }\n\n  addLayerFromUrl(url, existing = null, filename = null) {\n    const entry = {\n      id: this.nextLayerId++,\n      attachmentId: existing?.attachment_id || null,\n      signedId: null,\n      uploading: false,\n      filename: filename || existing?.filename || \"layer\",\n      node: null,\n      naturalWidth: 0,\n      // Stable stacking order - a rehydrated layer keeps its stored z, a new\n      // upload gets the next value above every known z. Never derived from\n      // array position or onload (image-decode) order - both are async and\n      // race across layers, which is exactly the bug this fixes.\n      z: existing && typeof existing.z === \"number\" ? existing.z : this.nextZ++\n    }\n    const image = new Image()\n    image.onload = () => {\n      entry.naturalWidth = image.naturalWidth\n      const zr = this.zoneRect\n      const displayWidth = (existing ? existing.scale : 0.8) * zr.width\n      const k = displayWidth / image.naturalWidth\n      const node = new this.Konva.Image({\n        image,\n        offsetX: image.naturalWidth / 2,\n        offsetY: image.naturalHeight / 2,\n        scaleX: k, scaleY: k,\n        rotation: existing ? existing.rotation : 0,\n        x: zr.x + (existing ? existing.x : 0.5) * zr.width,\n        y: zr.y + (existing ? existing.y : 0.5) * zr.height,\n        draggable: true\n      })\n      node.on(\"dragmove\", () => this.applySnapping(node))\n      node.on(\"dragend transformend\", () => { this.hideSnapGuides(); this.refreshLayerList() })\n      node.on(\"click tap\", () => this.select(entry))\n      entry.node = node\n      this.artLayer.add(node)\n      // Push the entry BEFORE reordering so this just-decoded layer is included\n      // in its own z-sort pass - otherwise a faster-decoding higher-z layer can\n      // invert the stack on a multi-layer reopen (the exact OV3 failure).\n      this.layers.push(entry)\n      this.reorderArtLayer()\n      this.select(entry)\n      this.refreshLayerList()\n      this.refreshSaveState()\n    }\n    image.src = url\n    return entry\n  }\n\n  // Reasserts Konva's stacking order (zIndex within artLayer) from each\n  // entry's stable z value. Called after every add so the visual stack\n  // always matches z, regardless of which layer's image finished decoding\n  // first (onload order is async and not guaranteed to match z order).\n  reorderArtLayer() {\n    ;[...this.layers]\n      .filter((entry) => entry.node)\n      .sort((a, b) => a.z - b.z)\n      .forEach((entry, index) => entry.node.zIndex(index))\n    this.transformer.moveToTop()\n    this.artLayer.batchDraw()\n  }\n\n  // -- Selection / snapping / layer rail --------------------------------------\n\n  select(entry) {\n    this.selected = entry\n    this.transformer.nodes(entry?.node ? [entry.node] : [])\n    this.artLayer.batchDraw()\n    this.refreshLayerList()\n  }\n\n  applySnapping(node) {\n    const zr = this.zoneRect\n    const cx = zr.x + zr.width / 2\n    const cy = zr.y + zr.height / 2\n    const snap = this.constructor.SNAP_PX\n    this.snapV.visible(Math.abs(node.x() - cx) < snap)\n    this.snapH.visible(Math.abs(node.y() - cy) < snap)\n    if (this.snapV.visible()) node.x(cx)\n    if (this.snapH.visible()) node.y(cy)\n    this.overlayLayer.batchDraw()\n  }\n\n  hideSnapGuides() {\n    this.snapV.visible(false)\n    this.snapH.visible(false)\n    this.overlayLayer.batchDraw()\n  }\n\n  refreshLayerList() {\n    this.layerListTarget.innerHTML = \"\"\n    // Topmost (highest z) first in the rail. Sort by the stable z before\n    // reversing - raw this.layers is push/onload order, which can disagree\n    // with the actual stacking after a multi-layer rehydration race.\n    ;[...this.layers].sort((a, b) => a.z - b.z).reverse().forEach((entry) => {\n      const row = this.layerRowTemplateTarget.content.cloneNode(true)\n      row.querySelector(\"[data-role=name]\").textContent = entry.filename\n      row.querySelector(\"[data-role=dpi]\").textContent = this.dpiBadge(entry).text\n      row.querySelector(\"[data-role=dpi]\").className += ` ${this.dpiBadge(entry).klass}`\n      const rowEl = row.querySelector(\"[data-role=row]\")\n      if (entry === this.selected) rowEl.classList.add(\"ring-2\", \"ring-[var(--pz-purple)]\")\n      rowEl.addEventListener(\"click\", () => this.select(entry))\n      row.querySelector(\"[data-role=remove]\").addEventListener(\"click\", (e) => {\n        e.stopPropagation()\n        this.removeLayerEntry(entry)\n      })\n      this.layerListTarget.appendChild(row)\n    })\n  }\n\n  removeLayerEntry(entry) {\n    entry.node?.destroy()\n    this.layers = this.layers.filter((l) => l !== entry)\n    if (this.selected === entry) this.select(null)\n    this.artLayer.batchDraw()\n    this.refreshLayerList()\n    this.refreshSaveState()\n  }\n\n  // Effective DPI = source px width / printed inches at current scale.\n  dpiBadge(entry) {\n    if (!entry.node || !entry.naturalWidth) return { text: \"\", klass: \"\" }\n    const scaleFrac = (entry.naturalWidth * entry.node.scaleX()) / this.zoneRect.width\n    const printedInches = (scaleFrac * this.outputValue.width_px) / this.outputValue.dpi\n    const dpi = Math.round(entry.naturalWidth / printedInches)\n    // Semantic status chips per the UI style guide (status-chip-{success|warning|danger})\n    // rather than raw Tailwind color utilities.\n    if (dpi >= 300) return { text: `${dpi} DPI`, klass: \"status-chip status-chip-success\" }\n    if (dpi >= 150) return { text: `${dpi} DPI`, klass: \"status-chip status-chip-warning\" }\n    return { text: `~${dpi} DPI - low`, klass: \"status-chip status-chip-danger\" }\n  }\n\n  refreshSaveState() {\n    const blocked = this.layers.length === 0 || this.layers.some((l) => l.uploading || (!l.signedId && !l.attachmentId))\n    this.saveButtonTarget.disabled = blocked\n  }\n\n  // -- Save -------------------------------------------------------------------\n\n  async save() {\n    const zr = this.zoneRect\n    const layers = this.layers.map((entry) => ({\n      signed_id: entry.signedId || undefined,\n      attachment_id: entry.attachmentId || undefined,\n      x: (entry.node.x() - zr.x) / zr.width,\n      y: (entry.node.y() - zr.y) / zr.height,\n      scale: (entry.naturalWidth * entry.node.scaleX()) / zr.width,\n      rotation: entry.node.rotation(),\n      z: entry.z\n    }))\n\n    this.saveButtonTarget.disabled = true\n    this.saveStatusTarget.textContent = \"Saving\u2026\"\n    try {\n      const csrfToken = document.querySelector('[name=\"csrf-token\"]').content\n      const response = await fetch(this.saveUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"X-CSRF-Token\": csrfToken,\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"text/vnd.turbo-stream.html\"\n        },\n        body: JSON.stringify({\n          location_identifier: this.locationIdentifierValue,\n          template_id: this.templateIdValue,\n          layers\n        })\n      })\n      if (response.ok) {\n        Turbo.renderStreamMessage(await response.text())\n        this.closeModal()\n      } else {\n        this.saveStatusTarget.textContent = \"Save failed - try again\"\n        this.refreshSaveState()\n      }\n    } catch {\n      this.saveStatusTarget.textContent = \"Save failed - try again\"\n      this.refreshSaveState()\n    }\n  }\n\n  closeModal() {\n    const frame = document.getElementById(\"remote_modal\")\n    if (frame) frame.innerHTML = \"\"\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Polls the editor render status endpoint while a card is in \"Generating...\"\n// state. 204 = still rendering; 200 = terminal Turbo Stream that replaces the\n// card (which also disconnects this controller).\nexport default class extends Controller {\n  static values = { url: String, interval: { type: Number, default: 2500 } }\n\n  connect() {\n    this.failures = 0\n    this.timer = setInterval(() => this.poll(), this.intervalValue)\n  }\n\n  disconnect() {\n    if (this.timer) clearInterval(this.timer)\n  }\n\n  async poll() {\n    // Serialize polls: setInterval fires on a fixed cadence regardless of\n    // whether the previous request resolved. Skip if one is still in flight so\n    // a slow status check can't pile up overlapping requests.\n    if (this.inFlight) return\n    this.inFlight = true\n    try {\n      const response = await fetch(this.urlValue, { headers: { \"Accept\": \"text/vnd.turbo-stream.html\" } })\n      // Any successful response clears the failure streak - transient network\n      // blips during a long render must not accumulate to a permanent stop.\n      if (response.status === 204) { this.failures = 0; return }\n      if (response.ok) {\n        this.failures = 0\n        clearInterval(this.timer)\n        Turbo.renderStreamMessage(await response.text())\n      } else if (++this.failures >= 5) {\n        clearInterval(this.timer)\n      }\n    } catch {\n      if (++this.failures >= 5) clearInterval(this.timer)\n    } finally {\n      this.inFlight = false\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  connect() {\n    this.setupDragAndDrop()\n  }\n  \n  setupDragAndDrop() {\n    const locations = this.element.querySelectorAll('.print-location')\n    \n    locations.forEach(location => {\n      const uploadArea = location.querySelector('.file-upload-area')\n      \n      uploadArea.addEventListener('dragover', (e) => {\n        e.preventDefault()\n        uploadArea.classList.add('drag-over')\n      })\n      \n      uploadArea.addEventListener('dragleave', () => {\n        uploadArea.classList.remove('drag-over')\n      })\n      \n      uploadArea.addEventListener('drop', (e) => {\n        e.preventDefault()\n        uploadArea.classList.remove('drag-over')\n        \n        const fileInput = uploadArea.querySelector('input[type=\"file\"]')\n        if (e.dataTransfer.files.length > 0) {\n          fileInput.files = e.dataTransfer.files\n          this.handleFileSelect({ target: fileInput })\n        }\n      })\n    })\n  }\n  \n  handleFileSelect(event) {\n    const fileInput = event.target\n    const location = fileInput.dataset.location\n    const file = fileInput.files[0]\n    \n    if (!file) return\n    \n    // Validate PNG format\n    if (file.type !== 'image/png') {\n      alert('Please upload a PNG file')\n      fileInput.value = ''\n      return\n    }\n    \n    // Show preview\n    const reader = new FileReader()\n    reader.onload = (e) => {\n      this.showPreview(location, e.target.result)\n    }\n    reader.readAsDataURL(file)\n  }\n  \n  showPreview(location, dataUrl) {\n    const locationDiv = this.element.querySelector(`[data-location=\"${location}\"]`)\n    const existingPreview = locationDiv.querySelector('.file-preview')\n    \n    if (existingPreview) {\n      existingPreview.remove()\n    }\n    \n    const preview = document.createElement('div')\n    preview.className = 'file-preview mt-2'\n    preview.innerHTML = `\n      <img src=\"${dataUrl}\" class=\"w-32 h-32 object-contain border rounded\" />\n      <p class=\"text-sm text-gray-600 mt-1\">New file selected</p>\n    `\n    \n    locationDiv.querySelector('.file-upload-area').appendChild(preview)\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"template\", \"container\", \"location\"]\n  \n  connect() {\n    // Find the highest existing index to avoid conflicts\n    let maxIndex = 0\n    this.locationTargets.forEach(location => {\n      const inputs = location.querySelectorAll('input[name*=\"[print_locations_attributes]\"]')\n      inputs.forEach(input => {\n        const match = input.name.match(/\\[(\\d+)\\]/)\n        if (match) {\n          const index = parseInt(match[1])\n          if (index > maxIndex) maxIndex = index\n        }\n      })\n    })\n    this.index = maxIndex + 1\n    console.log('[PrintLocations] Starting index:', this.index)\n  }\n  \n  add(event) {\n    event.preventDefault()\n    \n    console.log('[PrintLocations] Adding new location with index:', this.index)\n    \n    // Clone the template\n    const template = this.templateTarget.content.cloneNode(true)\n    \n    // Update all field names and IDs with unique index\n    const fields = template.querySelectorAll('input, select')\n    fields.forEach(field => {\n      if (field.name) {\n        const newName = field.name.replace(/\\[\\d+\\]/, `[${this.index}]`)\n        field.name = newName\n        console.log('[PrintLocations] Updated field name:', newName)\n      }\n      if (field.id) {\n        field.id = field.id.replace(/_\\d+_/, `_${this.index}_`)\n      }\n      // Clear values for new fields except hidden fields\n      if (field.type !== 'hidden') {\n        field.value = ''\n      }\n    })\n    \n    // Update labels\n    const labels = template.querySelectorAll('label')\n    labels.forEach(label => {\n      if (label.htmlFor) {\n        label.htmlFor = label.htmlFor.replace(/_\\d+_/, `_${this.index}_`)\n      }\n    })\n    \n    // Add the new location to the container\n    this.containerTarget.appendChild(template)\n    \n    this.index++\n  }\n  \n  remove(event) {\n    event.preventDefault()\n    \n    const location = event.target.closest('[data-print-locations-target=\"location\"]')\n    \n    // If this is an existing location (has an ID), mark it for destruction\n    const destroyField = location.querySelector('input[name*=\"_destroy\"]')\n    if (destroyField) {\n      destroyField.value = '1'\n      location.style.display = 'none'\n    } else {\n      // New location, just remove it\n      location.remove()\n    }\n  }\n  \n  validateIdentifier(event) {\n    const input = event.target\n    // Convert to lowercase and replace spaces with underscores\n    input.value = input.value.toLowerCase().replace(/\\s+/g, '_').replace(/[^a-z0-9_]/g, '')\n  }\n  \n  syncPrimaryLocation(event) {\n    // Find the first visible location\n    const firstLocation = this.locationTargets.find(loc => loc.style.display !== 'none')\n    if (!firstLocation) return\n    \n    // Get the primary location values\n    const widthField = firstLocation.querySelector('input[name*=\"[width]\"]')\n    const heightField = firstLocation.querySelector('input[name*=\"[height]\"]')\n    const dpiField = firstLocation.querySelector('input[name*=\"[dpi]\"]')\n    \n    // Update the main print spec fields\n    const mainWidthField = document.getElementById('catalog_item_print_width')\n    const mainHeightField = document.getElementById('catalog_item_print_height')\n    const mainDpiField = document.getElementById('catalog_item_print_dpi')\n    \n    if (mainWidthField && widthField) mainWidthField.value = widthField.value\n    if (mainHeightField && heightField) mainHeightField.value = heightField.value\n    if (mainDpiField && dpiField) mainDpiField.value = dpiField.value\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\nimport { escapeHtml } from \"./helpers/escape\"\n\n// Print Station scanning flow:\n//\n//   1. Operator scans item QR  -> POST /production/print/scan\n//        - response: scanned_item partial (HTML) for the item\n//        - state -> awaitingPrinter (currentItemId + currentPrintLocation held)\n//\n//   2. Operator scans printer barcode \"PRINTER:DTG-1 Epson\"\n//        - POST /production/print/route_to_printer\n//        - server transitions to PRINTING (auto-bridging PRETREAT if needed)\n//          and calls print-automation API to move the file\n//        - state -> idle, log entry written, card cleared\n//\n// On any error the card stays and the operator can retry.\nexport default class extends Controller {\n  static targets = [\"input\", \"status\", \"log\", \"itemCard\", \"counter\"]\n  static values = { scanUrl: String, routeUrl: String, reprintUrl: String }\n\n  connect() {\n    this.scanCount = 0\n    this.currentItemId = null\n    this.currentPrintLocation = null\n    this.inputTarget.focus()\n  }\n\n  async scan(event) {\n    event.preventDefault()\n    const qrData = this.inputTarget.value.trim()\n    if (!qrData) return\n    this.inputTarget.value = \"\"\n\n    // Printer barcode while an item is focused -> route the file.\n    if (qrData.startsWith(\"PRINTER:\") && this.currentItemId) {\n      const printerName = qrData.replace(\"PRINTER:\", \"\").trim()\n      await this.routeToPrinter(printerName)\n      this.inputTarget.focus()\n      return\n    }\n\n    // Printer barcode but no item focused -> tell the operator.\n    if (qrData.startsWith(\"PRINTER:\")) {\n      this.showStatus(\"Scan an item first, then the printer barcode.\", \"error\")\n      this.playSound(false)\n      this.inputTarget.focus()\n      return\n    }\n\n    // Otherwise treat as an item QR scan.\n    await this.scanItem(qrData)\n    this.inputTarget.focus()\n  }\n\n  async scanItem(qrData) {\n    this.showStatus(\"Scanning...\", \"info\")\n\n    try {\n      const response = await fetch(this.scanUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"text/html\",\n          \"X-CSRF-Token\": this.csrfToken\n        },\n        body: JSON.stringify({ qr_data: qrData })\n      })\n\n      if (response.ok) {\n        const html = await response.text()\n        this.showItemCard(html)\n        const wrapper = this.itemCardTarget.querySelector(\"[data-order-item-id]\")\n        if (wrapper) {\n          this.currentItemId = parseInt(wrapper.dataset.orderItemId, 10)\n          this.currentPrintLocation = wrapper.dataset.printLocation || null\n          const orderNumber = wrapper.dataset.orderNumber\n          const sku = wrapper.dataset.sku\n          this.showStatus(`Scanned: ${orderNumber} - ${sku} \u2014 now scan printer barcode`, \"info\")\n        }\n      } else {\n        const data = await response.json()\n        this.showStatus(data.error, \"error\")\n        this.addLogEntry({ sku: qrData, error: data.error }, false)\n        this.playSound(false)\n      }\n    } catch (error) {\n      this.showStatus(`Network error: ${error.message}`, \"error\")\n      this.playSound(false)\n    }\n  }\n\n  async routeToPrinter(printerName) {\n    this.showStatus(`Routing to ${printerName}...`, \"info\")\n\n    try {\n      const response = await fetch(this.routeUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this.csrfToken\n        },\n        body: JSON.stringify({\n          order_item_id: this.currentItemId,\n          printer_name: printerName,\n          print_location: this.currentPrintLocation\n        })\n      })\n\n      const data = await response.json()\n\n      if (data.success) {\n        this.scanCount++\n        this.updateCounter()\n        const bridged = data.bridged_pretreat ? \" (pretreat auto-bridged)\" : \"\"\n        this.showStatus(`\u2713 Routed to ${printerName}${bridged}`, \"success\")\n        this.addLogEntry({\n          id: this.currentItemId,\n          action: `\u2192 ${printerName}`,\n          status: data.status\n        }, true)\n        this.playSound(true)\n        this.clearCard()\n      } else {\n        this.showStatus(data.error || \"Routing failed\", \"error\")\n        this.addLogEntry({ id: this.currentItemId, action: `\u2192 ${printerName}`, error: data.error }, false)\n        this.playSound(false)\n        // Leave the card visible so the operator can retry.\n      }\n    } catch (error) {\n      this.showStatus(`Network error: ${error.message}`, \"error\")\n      this.playSound(false)\n    }\n  }\n\n  // \"Print defect\" (#1122): scrap this misprint + reprint it. Fires against the\n  // currently-scanned item; the fresh blank is pulled at the physical re-pick.\n  async reprintDefect(event) {\n    event.preventDefault()\n    // Bind the target item to a local: this is a scan-gun screen, so the operator\n    // can scan a new item (reassigning this.currentItemId) while the reprint POST\n    // is in flight. Use itemId for the request body, the log entry, and the card\n    // teardown so we act on THIS item, not whatever is scanned mid-flight.\n    const itemId = this.currentItemId\n    if (!itemId) return\n\n    const button = event.currentTarget\n    if (button.dataset.confirm && !window.confirm(button.dataset.confirm)) return\n\n    button.disabled = true\n    this.showStatus(\"Reprinting...\", \"info\")\n\n    try {\n      const response = await fetch(this.reprintUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this.csrfToken\n        },\n        body: JSON.stringify({ order_item_id: itemId, origin_station: \"print\" })\n      })\n\n      const data = await response.json()\n\n      if (data.success) {\n        this.showStatus(`\u2713 ${data.message || \"Reprint queued\"}`, \"success\")\n        this.addLogEntry({ id: itemId, action: \"\u26A0 reprint\", status: data.state }, true)\n        this.playSound(true)\n        // Only tear down the card if it's still the one we acted on \u2014 a mid-flight\n        // scan may have already replaced it with a different item's card.\n        if (this.currentItemId === itemId) this.clearCard()\n      } else {\n        this.showStatus(data.message || \"Reprint failed\", \"error\")\n        this.playSound(false)\n        if (this.currentItemId === itemId) button.disabled = false\n      }\n    } catch (error) {\n      this.showStatus(`Network error: ${error.message}`, \"error\")\n      this.playSound(false)\n      if (this.currentItemId === itemId) button.disabled = false\n    } finally {\n      // Keep the scan gun live: the button click moved focus off the input, and\n      // clearCard() removes the button entirely on success. Every other path on\n      // this screen refocuses the input after completing; this one must too.\n      this.inputTarget.focus()\n    }\n  }\n\n  showStatus(message, type) {\n    const colors = {\n      success: \"bg-pz-success/16 border-pz-success/35 text-green-800\",\n      error: \"bg-pz-danger/16 border-pz-danger/35 text-red-800\",\n      info: \"bg-pz-info/16 border-pz-info/35 text-pz-ink/70\"\n    }\n    this.statusTarget.innerHTML = `\n      <div class=\"px-4 py-3 rounded-2xl border ${colors[type] || colors.info}\">\n        <span class=\"font-semibold text-sm\">${escapeHtml(message)}</span>\n      </div>\n    `\n  }\n\n  showItemCard(html) {\n    if (!this.hasItemCardTarget) return\n    this.itemCardTarget.innerHTML = html\n    this.itemCardTarget.classList.remove(\"hidden\")\n  }\n\n  clearCard() {\n    if (this.hasItemCardTarget) {\n      this.itemCardTarget.innerHTML = \"\"\n      this.itemCardTarget.classList.add(\"hidden\")\n    }\n    this.currentItemId = null\n    this.currentPrintLocation = null\n  }\n\n  addLogEntry(item, success) {\n    if (!this.hasLogTarget) return\n\n    const entry = document.createElement(\"div\")\n    const time = new Date().toLocaleTimeString()\n\n    if (success) {\n      entry.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-success/10 text-green-800\"\n      entry.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">${escapeHtml(item.action || \"OK\")}</span>\n        <span class=\"text-pz-ink/60\">Item #${escapeHtml(item.id)}${item.status ? ` - ${escapeHtml(item.status)}` : \"\"}</span>`\n    } else {\n      entry.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-danger/10 text-red-800\"\n      entry.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">${escapeHtml(item.action || \"Error\")}:</span>\n        <span>${escapeHtml(item.error || item.status || \"Unknown\")}</span>`\n    }\n\n    this.logTarget.prepend(entry)\n    while (this.logTarget.children.length > 20) {\n      this.logTarget.removeChild(this.logTarget.lastChild)\n    }\n  }\n\n  updateCounter() {\n    if (!this.hasCounterTarget) return\n    this.counterTarget.textContent = this.scanCount\n  }\n\n  playSound(success) {\n    try {\n      const ctx = new (window.AudioContext || window.webkitAudioContext)()\n      const osc = ctx.createOscillator()\n      const gain = ctx.createGain()\n      osc.connect(gain)\n      gain.connect(ctx.destination)\n      gain.gain.value = 0.1\n      if (success) {\n        osc.frequency.value = 880\n        osc.type = \"sine\"\n      } else {\n        osc.frequency.value = 220\n        osc.type = \"square\"\n      }\n      osc.start()\n      osc.stop(ctx.currentTime + (success ? 0.1 : 0.3))\n      osc.onended = () => ctx.close() // release the context so it can't leak per scan (#989)\n    } catch (e) { /* Audio not supported */ }\n  }\n\n  get csrfToken() {\n    return document.querySelector('meta[name=\"csrf-token\"]').content\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static values = { \n    productId: Number,\n    updateUrl: String \n  }\n\n  connect() {\n    // Find the catalog item select and listen for changes\n    this.catalogItemSelect = document.querySelector('select[name=\"product[catalog_item_id]\"]')\n    \n    if (this.catalogItemSelect) {\n      this.catalogItemSelect.addEventListener('change', this.handleCatalogItemChange.bind(this))\n      \n      // If there's already a selected value, load the sidebar content\n      if (this.catalogItemSelect.value) {\n        this.loadSidebarContent(this.catalogItemSelect.value)\n      }\n    }\n  }\n\n  disconnect() {\n    if (this.catalogItemSelect) {\n      this.catalogItemSelect.removeEventListener('change', this.handleCatalogItemChange.bind(this))\n    }\n  }\n\n  handleCatalogItemChange(event) {\n    const catalogItemId = event.target.value\n    \n    if (catalogItemId) {\n      this.loadSidebarContent(catalogItemId)\n    } else {\n      // Show the \"no catalog item selected\" message\n      this.showEmptyState()\n    }\n  }\n\n  async loadSidebarContent(catalogItemId) {\n    try {\n      // Show loading state\n      this.showLoadingState()\n      \n      // Get CSRF token\n      const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content')\n      \n      // Fetch the sidebar content\n      const response = await fetch(`/products/sidebar_content?catalog_item_id=${catalogItemId}&product_id=${this.productIdValue || ''}`, {\n        headers: {\n          'Accept': 'text/html',\n          'X-Requested-With': 'XMLHttpRequest',\n          'X-CSRF-Token': csrfToken\n        }\n      })\n      \n      if (response.ok) {\n        const html = await response.text()\n        this.element.innerHTML = html\n      } else {\n        console.error('Failed to load sidebar content:', response.status, response.statusText)\n        const errorText = await response.text()\n        console.error('Error details:', errorText)\n        this.showErrorState()\n      }\n    } catch (error) {\n      console.error('Error loading sidebar content:', error)\n      console.error('Catalog Item ID:', catalogItemId)\n      this.showErrorState()\n    }\n  }\n\n  showLoadingState() {\n    this.element.innerHTML = `\n      <div class=\"space-y-6\">\n        <div class=\"bg-white shadow-sm ring-1 ring-gray-900/5 rounded-xl overflow-hidden\">\n          <div class=\"px-4 py-5 sm:p-6\">\n            <div class=\"animate-pulse\">\n              <div class=\"h-4 bg-gray-200 rounded w-3/4 mb-4\"></div>\n              <div class=\"space-y-3\">\n                <div class=\"h-3 bg-gray-200 rounded\"></div>\n                <div class=\"h-3 bg-gray-200 rounded w-5/6\"></div>\n                <div class=\"h-3 bg-gray-200 rounded w-4/6\"></div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    `\n  }\n\n  showEmptyState() {\n    this.element.innerHTML = `\n      <div class=\"bg-blue-50 border border-blue-200 rounded-xl p-6\">\n        <div class=\"flex\">\n          <div class=\"flex-shrink-0\">\n            <svg class=\"h-5 w-5 text-blue-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n              <path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\" clip-rule=\"evenodd\" />\n            </svg>\n          </div>\n          <div class=\"ml-3 flex-1\">\n            <h3 class=\"text-sm font-medium text-blue-800\">Select a Catalog Item</h3>\n            <div class=\"mt-2 text-sm text-blue-700\">\n              <p>Choose a catalog item from the dropdown to see:</p>\n              <ul class=\"list-disc list-inside mt-1 space-y-1\">\n                <li>Product specifications</li>\n                <li>Print file requirements</li>\n                <li>Available variants</li>\n                <li>Pricing information</li>\n              </ul>\n            </div>\n          </div>\n        </div>\n      </div>\n    `\n  }\n\n  showErrorState() {\n    this.element.innerHTML = `\n      <div class=\"bg-red-50 border border-red-200 rounded-xl p-6\">\n        <div class=\"flex\">\n          <div class=\"flex-shrink-0\">\n            <svg class=\"h-5 w-5 text-red-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n              <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clip-rule=\"evenodd\" />\n            </svg>\n          </div>\n          <div class=\"ml-3\">\n            <h3 class=\"text-sm font-medium text-red-800\">Error Loading Content</h3>\n            <div class=\"mt-2 text-sm text-red-700\">\n              <p>Unable to load catalog item information. Please try again.</p>\n            </div>\n          </div>\n        </div>\n      </div>\n    `\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nconst FOCUSABLE_SELECTOR = [\n  \"a[href]:not([tabindex='-1'])\",\n  \"button:not([disabled]):not([tabindex='-1'])\",\n  \"input:not([disabled]):not([tabindex='-1'])\",\n  \"select:not([disabled]):not([tabindex='-1'])\",\n  \"textarea:not([disabled]):not([tabindex='-1'])\",\n  \"[tabindex]:not([tabindex='-1'])\"\n].join(\",\")\n\nexport default class extends Controller {\n  static targets = [\n    \"overlay\", \"drawer\", \"dialog\", \"searchInput\", \"results\", \"status\", \"selectedInput\",\n    \"emptyState\", \"selectedState\", \"selectedTitle\", \"selectedSku\",\n    \"selectedMeta\", \"selectedPhoto\", \"selectedPhotoPlaceholder\",\n    \"chooseAction\", \"changeAction\", \"removeAction\"\n  ]\n\n  static values = { endpointUrl: String }\n\n  connect() {\n    this.requestController = null\n    this.debounceTimer = null\n    this.openingButton = null\n    this.boundKeydown = this.keydown.bind(this)\n  }\n\n  disconnect() {\n    window.clearTimeout(this.debounceTimer)\n    this.cancelRequest()\n    document.removeEventListener(\"keydown\", this.boundKeydown)\n  }\n\n  open(event) {\n    this.openingButton = event.currentTarget\n    this.overlayTarget.classList.add(\"open\")\n    this.drawerTarget.classList.add(\"open\")\n    this.drawerTarget.removeAttribute(\"inert\")\n    this.drawerTarget.setAttribute(\"aria-hidden\", \"false\")\n    document.addEventListener(\"keydown\", this.boundKeydown)\n    this.searchInputTarget.focus()\n    this.load(this.searchInputTarget.value.trim())\n  }\n\n  close() {\n    this.dismiss(this.openingButton)\n  }\n\n  dismiss(focusTarget) {\n    focusTarget?.focus()\n    this.overlayTarget.classList.remove(\"open\")\n    this.drawerTarget.classList.remove(\"open\")\n    this.drawerTarget.setAttribute(\"inert\", \"\")\n    this.drawerTarget.setAttribute(\"aria-hidden\", \"true\")\n    document.removeEventListener(\"keydown\", this.boundKeydown)\n    this.cancelRequest()\n    this.openingButton = null\n  }\n\n  keydown(event) {\n    if (event.key === \"Escape\") {\n      this.close()\n      return\n    }\n    if (event.key === \"Tab\") this.trapFocus(event)\n  }\n\n  trapFocus(event) {\n    const controls = this.focusableControls()\n    const firstControl = controls[0]\n    const lastControl = controls[controls.length - 1]\n\n    if (!this.dialogTarget.contains(document.activeElement)) {\n      event.preventDefault()\n      const returnControl = event.shiftKey ? lastControl : firstControl\n      returnControl?.focus()\n    } else if (event.shiftKey && document.activeElement === firstControl) {\n      event.preventDefault()\n      lastControl.focus()\n    } else if (!event.shiftKey && document.activeElement === lastControl) {\n      event.preventDefault()\n      firstControl.focus()\n    }\n  }\n\n  focusableControls() {\n    return Array.from(this.dialogTarget.querySelectorAll(FOCUSABLE_SELECTOR))\n      .filter((control) => control.offsetParent !== null)\n  }\n\n  search() {\n    window.clearTimeout(this.debounceTimer)\n    this.cancelRequest()\n    const query = this.searchInputTarget.value.trim()\n    if (query.length === 1) {\n      this.clearResults()\n      this.statusTarget.textContent = \"Type at least 2 characters to search.\"\n      return\n    }\n    this.debounceTimer = window.setTimeout(() => this.load(query), 200)\n  }\n\n  preventSubmit(event) {\n    event.preventDefault()\n  }\n\n  async load(query) {\n    this.cancelRequest()\n    this.requestController = new AbortController()\n    const requestController = this.requestController\n    const url = new URL(this.endpointUrlValue, window.location.origin)\n    if (query) url.searchParams.set(\"q\", query)\n    this.statusTarget.textContent = query ? \"Searching products...\" : \"Loading recent products...\"\n    this.clearResults()\n\n    try {\n      const response = await fetch(url, {\n        headers: { Accept: \"application/json\" },\n        signal: requestController.signal\n      })\n      if (!response.ok) throw new Error(`Product search failed with ${response.status}`)\n      const payload = await response.json()\n      if (requestController !== this.requestController) return\n      this.renderProducts(payload.products)\n      this.statusTarget.textContent = this.resultStatus(payload, query)\n    } catch (error) {\n      if (requestController !== this.requestController) return\n      if (error.name === \"AbortError\") return\n      this.renderRetry(query)\n      this.statusTarget.textContent = \"Products could not be loaded. Try again.\"\n    }\n  }\n\n  resultStatus(payload, query) {\n    if (payload.products.length === 0) return query ? \"No matching products.\" : \"No compatible products yet.\"\n    if (payload.truncated) return `Showing the first ${payload.limit} products. Refine your search.`\n    return `${payload.products.length} ${payload.products.length === 1 ? \"product\" : \"products\"}.`\n  }\n\n  renderProducts(products) {\n    products.forEach((product) => this.resultsTarget.append(this.productButton(product)))\n  }\n\n  productButton(product) {\n    const button = document.createElement(\"button\")\n    button.type = \"button\"\n    button.dataset.productId = product.id\n    button.className = \"flex w-full items-center gap-3 rounded-lg p-3 text-left hover:bg-[rgba(20,17,42,.05)]\"\n    button.addEventListener(\"click\", () => this.select(product))\n\n    const media = document.createElement(\"div\")\n    media.className = \"flex h-14 w-14 shrink-0 items-center justify-center overflow-hidden rounded\"\n    if (product.photo_url) {\n      const image = document.createElement(\"img\")\n      image.loading = \"lazy\"\n      image.decoding = \"async\"\n      image.src = product.photo_url\n      image.alt = \"\"\n      image.className = \"h-full w-full object-cover\"\n      media.append(image)\n    } else {\n      media.textContent = \"Photo\"\n    }\n\n    const copy = document.createElement(\"div\")\n    copy.className = \"min-w-0 flex-1\"\n    copy.append(\n      this.textNode(\"p\", product.title || \"Untitled product\", \"truncate text-sm font-semibold\"),\n      this.textNode(\"p\", product.sku || \"No SKU\", \"truncate text-xs\"),\n      this.textNode(\"p\", this.productMeta(product), \"truncate text-xs\")\n    )\n    button.append(media, copy)\n    return button\n  }\n\n  textNode(tagName, text, className) {\n    const node = document.createElement(tagName)\n    node.className = className\n    node.textContent = text\n    return node\n  }\n\n  productMeta(product) {\n    const variants = product.variant_count === 1 ? \"variant\" : \"variants\"\n    return `${product.catalog_item_title} - ${product.variant_count} ${variants}`\n  }\n\n  renderRetry(query) {\n    this.clearResults()\n    const button = document.createElement(\"button\")\n    button.type = \"button\"\n    button.className = \"btn-brand-secondary btn-brand-sm m-3\"\n    button.textContent = \"Try again\"\n    button.addEventListener(\"click\", () => {\n      this.searchInputTarget.focus()\n      this.load(query)\n    })\n    this.resultsTarget.append(button)\n  }\n\n  select(product) {\n    this.selectedInputTarget.value = product.id\n    this.selectedTitleTarget.textContent = product.title || \"Untitled product\"\n    this.selectedSkuTarget.textContent = product.sku || \"No SKU\"\n    this.selectedMetaTarget.textContent = this.productMeta(product)\n    this.setSelectedPhoto(product.photo_url)\n    this.emptyStateTarget.classList.add(\"hidden\")\n    this.selectedStateTarget.classList.remove(\"hidden\")\n    this.dismiss(this.changeActionTarget)\n  }\n\n  remove() {\n    this.selectedInputTarget.value = \"\"\n    this.selectedTitleTarget.textContent = \"\"\n    this.selectedSkuTarget.textContent = \"\"\n    this.selectedMetaTarget.textContent = \"\"\n    this.setSelectedPhoto(null)\n    this.selectedStateTarget.classList.add(\"hidden\")\n    this.emptyStateTarget.classList.remove(\"hidden\")\n    this.chooseActionTarget.focus()\n  }\n\n  setSelectedPhoto(url) {\n    if (url) {\n      this.selectedPhotoTarget.src = url\n      this.selectedPhotoTarget.classList.remove(\"hidden\")\n      this.selectedPhotoPlaceholderTarget.classList.add(\"hidden\")\n    } else {\n      this.selectedPhotoTarget.removeAttribute(\"src\")\n      this.selectedPhotoTarget.classList.add(\"hidden\")\n      this.selectedPhotoPlaceholderTarget.classList.remove(\"hidden\")\n    }\n  }\n\n  clearResults() {\n    this.resultsTarget.replaceChildren()\n  }\n\n  cancelRequest() {\n    this.requestController?.abort()\n    this.requestController = null\n  }\n}\n", "import {Controller} from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n    static targets = [\n        \"tab\",\n        \"panel\",\n        \"selectionCounter\",\n        \"variantCheckbox\",\n        \"selectAllByType\",\n        \"bulkActions\",\n        \"sectionCheckbox\",\n        \"baseSku\",\n        // New targets for swatch-based selector\n        \"colorSwatch\",\n        \"sizeBadge\",\n        \"selectionSummary\",\n        \"colorSwatchGrid\",\n        \"sizeBadgeContainer\",\n        \"selectedColorIdsField\",\n        \"excludedSizeIdsField\",\n        \"variantCountEstimate\",\n        \"variantError\"\n    ]\n\n    static values = {\n        mode: { type: String, default: \"list\" } // \"list\" or \"swatches\"\n    }\n\n    connect() {\n        this.baseSkuInput = document.getElementById('base-sku-input')\n        this.singleBaseSkuInput = document.getElementById('single-base-sku-input')\n\n        // Initialize based on mode\n        if (this.modeValue === \"swatches\") {\n            this.initializeSwatchMode()\n        } else {\n            this.setupExistingVariantsSelectAll()\n            this.setupNewVariantsSelectAll()\n            this.updateSelectionCounts()\n            this.updateSectionSelectionCounts()\n            this.setupSkuFieldSynchronization()\n            // Setup mutation observer to handle dynamically added SKU fields\n            this.setupMutationObserver()\n        }\n    }\n\n    // ===== SWATCH MODE INITIALIZATION =====\n\n    initializeSwatchMode() {\n        // Update selection summary on load\n        this.updateSwatchSelectionSummary()\n    }\n\n    // ===== SWATCH-BASED VARIANT SELECTION =====\n\n    toggleColorSelection(event) {\n        const button = event.currentTarget\n        const colorId = button.dataset.colorId\n        const isLocked = button.dataset.locked === \"true\"\n\n        // Prevent toggling locked colors (have orders)\n        if (isLocked) {\n            // Could show a toast here: \"Cannot remove - has orders\"\n            return\n        }\n\n        const isCurrentlySelected = button.dataset.selected === \"true\"\n        const newSelectedState = !isCurrentlySelected\n\n        // Update data attribute\n        button.dataset.selected = newSelectedState.toString()\n\n        // Update visual state\n        if (newSelectedState) {\n            button.classList.add(\"ring-2\", \"ring-primary\", \"ring-offset-2\", \"border-primary\")\n            button.classList.remove(\"border-gray-300\")\n        } else {\n            button.classList.remove(\"ring-2\", \"ring-primary\", \"ring-offset-2\", \"border-primary\")\n            button.classList.add(\"border-gray-300\")\n            // Remove focus so focus:ring-* classes don't re-apply the ring\n            button.blur()\n        }\n\n        // Update hidden form field\n        this.updateSelectedColorIds()\n        this.updateSwatchSelectionSummary()\n        this.refreshVariantError()\n    }\n\n    toggleSizeSelection(event) {\n        const button = event.currentTarget\n        const isCurrentlySelected = button.dataset.selected === \"true\"\n        const newSelectedState = !isCurrentlySelected\n\n        // Update data attribute\n        button.dataset.selected = newSelectedState.toString()\n\n        // Update visual state\n        if (newSelectedState) {\n            button.classList.add(\"bg-primary\", \"text-primary-content\", \"border-primary\")\n            button.classList.remove(\"bg-base-200\", \"text-base-content\", \"border-gray-300\")\n        } else {\n            button.classList.remove(\"bg-primary\", \"text-primary-content\", \"border-primary\")\n            button.classList.add(\"bg-base-200\", \"text-base-content\", \"border-gray-300\")\n        }\n\n        // Update hidden form field\n        this.updateExcludedSizeIds()\n        this.updateSwatchSelectionSummary()\n        this.refreshVariantError()\n    }\n\n    // Select every size badge in one click (sellers usually want all sizes).\n    selectAllSizes() {\n        this.sizeBadgeTargets.forEach(badge => this.setSizeBadgeSelected(badge, true))\n        this.updateExcludedSizeIds()\n        this.updateSwatchSelectionSummary()\n        this.refreshVariantError()\n    }\n\n    // Clear every size badge.\n    clearSizes() {\n        this.sizeBadgeTargets.forEach(badge => this.setSizeBadgeSelected(badge, false))\n        this.updateExcludedSizeIds()\n        this.updateSwatchSelectionSummary()\n        this.refreshVariantError()\n    }\n\n    // Apply the selected/unselected visual + data state to a single size badge.\n    setSizeBadgeSelected(badge, selected) {\n        badge.dataset.selected = selected.toString()\n        if (selected) {\n            badge.classList.add(\"bg-primary\", \"text-primary-content\", \"border-primary\")\n            badge.classList.remove(\"bg-base-200\", \"text-base-content\", \"border-gray-300\")\n        } else {\n            badge.classList.remove(\"bg-primary\", \"text-primary-content\", \"border-primary\")\n            badge.classList.add(\"bg-base-200\", \"text-base-content\", \"border-gray-300\")\n        }\n    }\n\n    // Block submit when a color+size product has no color or no size selected,\n    // and surface the inline error. Server-side validation is the backstop.\n    validateBeforeSubmit(event) {\n        // Only enforce when the swatch selector is on the page (apparel).\n        if (!this.hasSelectedColorIdsFieldTarget) return\n\n        const colorCount = this.colorSwatchTargets.filter(el => el.dataset.selected === \"true\").length\n        const sizeCount = this.sizeBadgeTargets.filter(el => el.dataset.selected === \"true\").length\n\n        if (colorCount > 0 && sizeCount > 0) {\n            this.hideVariantError()\n            return\n        }\n\n        event.preventDefault()\n        event.stopPropagation()\n        this.showVariantError(colorCount, sizeCount)\n    }\n\n    showVariantError(colorCount, sizeCount) {\n        if (this.hasVariantErrorTarget) {\n            this.variantErrorTarget.classList.remove(\"hidden\")\n            this.variantErrorTarget.scrollIntoView({ behavior: \"smooth\", block: \"center\" })\n        }\n        if (this.hasColorSwatchGridTarget) {\n            this.colorSwatchGridTarget.classList.toggle(\"ring-2\", colorCount === 0)\n            this.colorSwatchGridTarget.classList.toggle(\"ring-error\", colorCount === 0)\n        }\n        if (this.hasSizeBadgeContainerTarget) {\n            this.sizeBadgeContainerTarget.classList.toggle(\"ring-2\", sizeCount === 0)\n            this.sizeBadgeContainerTarget.classList.toggle(\"ring-error\", sizeCount === 0)\n        }\n    }\n\n    hideVariantError() {\n        if (this.hasVariantErrorTarget) this.variantErrorTarget.classList.add(\"hidden\")\n        if (this.hasColorSwatchGridTarget) this.colorSwatchGridTarget.classList.remove(\"ring-2\", \"ring-error\")\n        if (this.hasSizeBadgeContainerTarget) this.sizeBadgeContainerTarget.classList.remove(\"ring-2\", \"ring-error\")\n    }\n\n    // Re-run the error check once the user has acted (clear it as soon as valid).\n    refreshVariantError() {\n        if (!this.hasVariantErrorTarget || this.variantErrorTarget.classList.contains(\"hidden\")) return\n\n        const colorCount = this.colorSwatchTargets.filter(el => el.dataset.selected === \"true\").length\n        const sizeCount = this.sizeBadgeTargets.filter(el => el.dataset.selected === \"true\").length\n        if (colorCount > 0 && sizeCount > 0) {\n            this.hideVariantError()\n        } else {\n            this.showVariantError(colorCount, sizeCount)\n        }\n    }\n\n    updateSelectedColorIds() {\n        if (!this.hasSelectedColorIdsFieldTarget) return\n\n        const selectedIds = this.colorSwatchTargets\n            .filter(el => el.dataset.selected === \"true\")\n            .map(el => parseInt(el.dataset.colorId, 10))\n\n        this.selectedColorIdsFieldTarget.value = JSON.stringify(selectedIds)\n    }\n\n    updateExcludedSizeIds() {\n        if (!this.hasExcludedSizeIdsFieldTarget) return\n\n        // Excluded = sizes that are NOT selected\n        const excludedIds = this.sizeBadgeTargets\n            .filter(el => el.dataset.selected === \"false\")\n            .map(el => parseInt(el.dataset.sizeId, 10))\n\n        this.excludedSizeIdsFieldTarget.value = JSON.stringify(excludedIds)\n    }\n\n    updateSwatchSelectionSummary() {\n        if (!this.hasSelectionSummaryTarget) return\n\n        const colorCount = this.colorSwatchTargets.filter(el => el.dataset.selected === \"true\").length\n        const sizeCount = this.sizeBadgeTargets.filter(el => el.dataset.selected === \"true\").length\n\n        this.selectionSummaryTarget.textContent = `${colorCount} colors \u00D7 ${sizeCount} sizes selected`\n\n        // Update variant count estimate if target exists\n        if (this.hasVariantCountEstimateTarget) {\n            if (colorCount > 0 && sizeCount > 0) {\n                const estimatedVariants = colorCount * sizeCount\n                this.variantCountEstimateTarget.textContent =\n                    `Approximately ${estimatedVariants} variants (exact count depends on catalog availability)`\n            } else {\n                this.variantCountEstimateTarget.textContent =\n                    \"Select colors and sizes to see variant count\"\n            }\n        }\n    }\n\n    // ===== VARIANTS LOADING FUNCTIONALITY =====\n\n    loadVariants(event) {\n        const catalogItemId = event.target.value\n        if (!catalogItemId) {\n            this.hideAllContainers()\n            return\n        }\n\n        // Determine if we're in compact mode\n        const isCompact = this.element.classList.contains('space-y-4')\n\n        this.fetchAndApplyVariants(catalogItemId, isCompact)\n    }\n\n    // Re-loads the variant selector pre-checked from a chosen ProductProfile\n    // (#1257 U8's \"Start from a profile\" picker), or back to the normal\n    // selector when \"Choose variants manually...\" is picked. Reuses the SAME\n    // round trip loadVariants uses (ProductsController#variants), just with\n    // product_profile_id added - the server, not this controller, decides\n    // what to render (see _variant_selector_content.html.erb). Once applied,\n    // also copies the chosen profile's name into the Title field via\n    // prefillTitleFromSelectedProfile - the only user-reachable path that\n    // picks a profile without a full page reload, so without this the title\n    // pre-fill (task brief) never actually fires in the live UI.\n    //\n    // @param event [Event] the profile <select>'s change event; the target\n    //   carries the catalog item id (data-catalog-item-id) and compact-mode\n    //   flag (data-is-compact) the server rendered this picker with\n    // @return [void]\n    pickProfile(event) {\n        const select = event.target\n        const catalogItemId = select.dataset.catalogItemId\n        if (!catalogItemId) return\n\n        const isCompact = select.dataset.isCompact === \"true\"\n        const profileId = select.value\n        const extraParams = profileId ? { product_profile_id: profileId } : {}\n\n        this.fetchAndApplyVariants(catalogItemId, isCompact, extraParams, () => {\n            if (profileId) this.prefillTitleFromSelectedProfile()\n        })\n    }\n\n    // Copies the \"Start from a profile\" picker's currently-selected option\n    // text (the profile's name - the exact string options_for_select already\n    // rendered, so no extra data plumbing is needed) into the Title field -\n    // but ONLY when that field is still blank. This is what keeps the\n    // existing title precedence (order_item&.item_name.presence ||\n    // product.title, see _unified_form.html.erb / issue #817) intact without\n    // ProductsController#variants needing to know about order_item context\n    // at all: if an order-item-derived default (or anything the seller\n    // typed) already populated the field before a catalog item was even\n    // picked, it's non-blank here and this is a no-op.\n    //\n    // @return [void]\n    prefillTitleFromSelectedProfile() {\n        const titleField = document.getElementById('product_title')\n        if (!titleField || titleField.value.trim() !== '') return\n\n        const picker = document.getElementById('start-from-profile-picker')\n        const select = picker && picker.querySelector('select')\n        const selectedOption = select && select.options[select.selectedIndex]\n        if (!selectedOption || !selectedOption.value) return\n\n        titleField.value = selectedOption.text\n        titleField.dispatchEvent(new Event('input', { bubbles: true }))\n        titleField.dispatchEvent(new Event('change', { bubbles: true }))\n    }\n\n    // Shared GET + turbo-stream-apply used by both loadVariants (catalog-item\n    // <select> change) and pickProfile (profile <select> change, #1257 U8) -\n    // both hit the same ProductsController#variants endpoint and swap in\n    // whatever it renders for #variants-container.\n    //\n    // @param catalogItemId [String|Number]\n    // @param isCompact [Boolean]\n    // @param extraParams [Object<String,String>] additional query params\n    //   (e.g. product_profile_id)\n    // @param onSuccess [Function|null] called after a successful render\n    //   (e.g. pickProfile's title pre-fill), not on a failed fetch\n    // @return [void]\n    fetchAndApplyVariants(catalogItemId, isCompact, extraParams = {}, onSuccess = null) {\n        const params = new URLSearchParams({ catalog_item_id: catalogItemId, is_compact: isCompact, ...extraParams })\n\n        // Use Turbo to fetch and update the UI\n        fetch(`/products/variants?${params.toString()}`, {\n            method: 'GET',\n            headers: {\n                'Accept': 'text/vnd.turbo-stream.html',\n                'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n            }\n        })\n            .then(response => {\n                if (!response.ok) throw new Error('Network response was not ok')\n                return response.text()\n            })\n            .then(html => {\n                // Turbo will handle the DOM updates via turbo-stream elements\n                Turbo.renderStreamMessage(html)\n\n                // Ensure the container is visible after update\n                const variantsContainer = document.getElementById('variants-container')\n                if (variantsContainer && variantsContainer.querySelector('.border')) {\n                    variantsContainer.style.display = ''\n                }\n\n                if (onSuccess) onSuccess()\n            })\n            .catch(error => {\n                console.error(\"Error loading variants:\", error)\n                this.hideAllContainers()\n            })\n    }\n\n    hideAllContainers() {\n        this.hideVariantsContainer()\n    }\n\n    showVariantsContainer() {\n        const variantsContainer = document.getElementById('variants-container')\n        if (variantsContainer) {\n            variantsContainer.style.display = ''\n        }\n    }\n\n    hideVariantsContainer() {\n        const variantsContainer = document.getElementById('variants-container')\n        if (variantsContainer) {\n            variantsContainer.style.display = 'none'\n        }\n\n        // Clear any selected variants\n        const checkboxes = document.querySelectorAll('input[name=\"selected_variants[]\"]')\n        checkboxes.forEach(checkbox => checkbox.checked = false)\n    }\n\n    // ===== VARIANT SELECTOR FUNCTIONALITY =====\n\n    // Tab switching functionality\n    switchTab(event) {\n        const tabButton = event.currentTarget\n        const targetPanelId = tabButton.dataset.productVariantTabTarget\n\n        // Update active states for tabs\n        this.tabTargets.forEach(tab => {\n            tab.classList.remove(\"tab-active\", \"border-b-2\", \"border-gray-900\")\n            tab.classList.add(\"text-gray-500\")\n        })\n        tabButton.classList.add(\"tab-active\", \"border-b-2\", \"border-gray-900\")\n        tabButton.classList.remove(\"text-gray-500\")\n\n        // Show/hide panels\n        this.panelTargets.forEach(panel => {\n            if (panel.id === targetPanelId) {\n                panel.classList.remove(\"hidden\")\n            } else {\n                panel.classList.add(\"hidden\")\n            }\n        })\n    }\n\n    // Toggle collapsible section\n    toggleSection(event) {\n        const button = event.currentTarget\n        const sectionId = button.dataset.productVariantSectionId\n        const section = document.getElementById(sectionId)\n        const chevron = button.querySelector('[data-chevron]')\n\n        if (section.classList.contains('hidden')) {\n            section.classList.remove('hidden')\n            chevron.style.transform = 'rotate(180deg)'\n        } else {\n            section.classList.add('hidden')\n            chevron.style.transform = 'rotate(0deg)'\n        }\n    }\n\n    // Toggle all variants within a section\n    toggleSectionVariants(event) {\n        const sectionCheckbox = event.currentTarget\n        const sectionId = sectionCheckbox.dataset.sectionId\n        const section = document.getElementById(sectionId)\n        const isChecked = sectionCheckbox.checked\n\n        if (section) {\n            // Find all variant checkboxes within this section\n            const sectionVariantCheckboxes = section.querySelectorAll('input[data-product-variant-target=\"variantCheckbox\"]')\n\n            sectionVariantCheckboxes.forEach(checkbox => {\n                if (checkbox.checked !== isChecked) {\n                    checkbox.checked = isChecked\n                    checkbox.dispatchEvent(new Event('change', {bubbles: true}))\n                }\n            })\n        }\n\n        this.updateSelectionCounts()\n        this.updateSelectAllStates()\n        this.updateBulkActions()\n        this.updateSectionSelectionCounts()\n    }\n\n    // Handle individual variant checkbox change (combines variant selection and SKU management)\n    toggleVariant(event) {\n        const checkbox = event.currentTarget\n        const variantId = checkbox.dataset.variantId\n        const catalogVariantId = checkbox.dataset.catalogVariantId\n        const variantIndex = checkbox.dataset.variantIndex\n        const isChecked = checkbox.checked\n\n        // Handle variant row and SKU section visibility\n        const variantRow = checkbox.closest('.variant-row')\n        const skuSection = variantRow.querySelector('.variant-sku-section')\n\n        // Handle the _destroy field for existing variants\n        if (variantIndex !== undefined) {\n            const destroyField = variantRow.querySelector('.destroy-field')\n            if (destroyField) {\n                // When unchecked, set _destroy to true; when checked, set to false\n                destroyField.value = !isChecked\n            }\n        }\n\n        if (isChecked) {\n            // Show SKU management section\n            if (skuSection) {\n                skuSection.style.display = 'block'\n\n                // Generate SKU if field is empty\n                const skuField = skuSection.querySelector('[data-sku-field]')\n                if (skuField && !skuField.value.trim()) {\n                    this.generateDefaultSku(catalogVariantId, skuField)\n                }\n            }\n        } else {\n            // Hide SKU management section but keep SKU field populated\n            if (skuSection) {\n                skuSection.style.display = 'none'\n            }\n        }\n\n        // Sync all checkboxes for this variant across all tabs\n        const allVariantCheckboxes = this.element.querySelectorAll(`input[data-variant-id=\"${variantId}\"]`)\n        allVariantCheckboxes.forEach(cb => {\n            if (cb !== checkbox) {\n                cb.checked = isChecked\n                const cbVariantRow = cb.closest('.variant-row')\n                if (cbVariantRow) {\n                    const cbSkuSection = cbVariantRow.querySelector('.variant-sku-section')\n                    if (cbSkuSection) {\n                if (isChecked) {\n                  cbSkuSection.style.visibility = 'visible'\n                  cbSkuSection.style.height = 'auto'\n                  cbSkuSection.style.overflow = 'visible'\n                } else {\n                  cbSkuSection.style.visibility = 'hidden'\n                  cbSkuSection.style.height = '0'\n                  cbSkuSection.style.overflow = 'hidden'\n                }\n                    }\n\n                    // Handle _destroy field for existing variants\n                    const cbDestroyField = cbVariantRow.querySelector('.destroy-field')\n                    if (cbDestroyField) {\n                        cbDestroyField.value = !isChecked\n                    }\n\n                    // Update the selected hidden field for new variants\n                    const selectedField = cbVariantRow.querySelector(`input[data-variant-selected=\"${variantId}\"]`)\n                    if (selectedField) {\n                        selectedField.value = isChecked ? '1' : '0'\n                    }\n                }\n            }\n        })\n\n        // Handle hidden input for form submission\n        // Only create selected_variants[] for new products (not when editing existing products)\n        const form = this.element.closest('form')\n        const isEditForm = form && (form.action.includes('/products/') || form.action.includes('edit'))\n\n        if (isChecked && !isEditForm) {\n            this.createSelectedVariantInput(variantId)\n        } else if (!isChecked) {\n            this.removeSelectedVariantInput(variantId)\n        }\n\n        // Update select all state based on checkbox type\n        if (checkbox.classList.contains('existing-variant-checkbox')) {\n            this.updateExistingVariantsSelectAllState()\n        } else if (checkbox.classList.contains('variant-checkbox')) {\n            this.updateNewVariantsSelectAllState()\n        }\n\n        this.updateSelectionCounts()\n        this.updateSelectAllStates()\n        this.updateBulkActions()\n        this.updateSectionSelectionCounts()\n    }\n\n    // Create hidden input for selected variant\n    createSelectedVariantInput(variantId) {\n        // Check if input already exists\n        const existingInput = this.element.querySelector(`input[type=\"hidden\"][name=\"selected_variants[]\"][value=\"${variantId}\"]`)\n        if (existingInput) return\n\n        // Create hidden input\n        const input = document.createElement('input')\n        input.type = 'hidden'\n        input.name = 'selected_variants[]'\n        input.value = variantId\n        input.dataset.selectedVariantId = variantId\n\n        // Add to form\n        this.element.appendChild(input)\n    }\n\n    // Remove hidden input for deselected variant\n    removeSelectedVariantInput(variantId) {\n        const input = this.element.querySelector(`input[type=\"hidden\"][name=\"selected_variants[]\"][value=\"${variantId}\"]`)\n        if (input) {\n            input.remove()\n        }\n    }\n\n    // Select all variants within a type\n    selectAllByType(event) {\n        const selectAllCheckbox = event.currentTarget\n        const variantTypeId = selectAllCheckbox.dataset.variantTypeId\n        const isChecked = selectAllCheckbox.checked\n\n        // Find all checkboxes for this variant type\n        const typeCheckboxes = this.element.querySelectorAll(`input[data-variant-type-id=\"${variantTypeId}\"]`)\n\n        typeCheckboxes.forEach(checkbox => {\n            if (checkbox !== selectAllCheckbox) {\n                checkbox.checked = isChecked\n                checkbox.dispatchEvent(new Event('change', {bubbles: true}))\n            }\n        })\n\n        this.updateSelectionCounts()\n        this.updateBulkActions()\n        this.updateSectionSelectionCounts()\n    }\n\n    // ===== SKU GENERATOR FUNCTIONALITY =====\n\n    generatePodpSku(event) {\n        const button = event.target\n        const catalogVariantId = button.dataset.catalogVariantId\n\n        // Try to find variant row first (multi-variant case)\n        let variantRow = button.closest('.variant-row')\n        let skuField\n\n        if (variantRow) {\n            // Multi-variant form structure\n            skuField = variantRow.querySelector('[data-sku-field]')\n        } else {\n            // Single variant form structure - look for SKU field in parent container\n            const container = button.closest('div')\n            skuField = container?.querySelector('[data-sku-field]')\n        }\n\n        if (!skuField) {\n            console.error('Could not find SKU field')\n            return\n        }\n\n        const baseSkuValue = this.baseSkuInput?.value?.trim()\n        const prefix = baseSkuValue ? `${baseSkuValue}-` : 'PODP-'\n        // Calculate remaining length to fill 32 char Etsy limit (minimum 6 for uniqueness)\n        const remainingLength = Math.max(32 - prefix.length, 6)\n        const randomSuffix = this.generateRandomString(remainingLength)\n        const newSkuValue = `${prefix}${randomSuffix}`\n\n        // Update the current SKU field\n        skuField.value = newSkuValue\n\n        // Find all other SKU fields for the same variant ID and update them\n        const variantId = catalogVariantId\n        const allSkuFields = this.element.querySelectorAll(`input[data-sku-field][data-variant-id=\"${variantId}\"]`)\n        allSkuFields.forEach(field => {\n            if (field !== skuField) {\n                field.value = newSkuValue\n                field.dispatchEvent(new Event('input', {bubbles: true}))\n                field.dispatchEvent(new Event('change', {bubbles: true}))\n            }\n        })\n\n        // Trigger change and input events to ensure form data is updated\n        skuField.dispatchEvent(new Event('input', {bubbles: true}))\n        skuField.dispatchEvent(new Event('change', {bubbles: true}))\n\n        // Add visual feedback\n        this.flashField(skuField)\n    }\n\n    generateVariantSku(event) {\n        const button = event.target\n        const catalogVariantSku = button.dataset.catalogVariantSku\n        const catalogVariantId = button.dataset.catalogVariantId\n\n        // Try to find variant row first (multi-variant case)\n        let variantRow = button.closest('.variant-row')\n        let skuField\n\n        if (variantRow) {\n            // Multi-variant form structure\n            skuField = variantRow.querySelector('[data-sku-field]')\n        } else {\n            // Single variant form structure - look for SKU field in parent container\n            const container = button.closest('div')\n            skuField = container?.querySelector('[data-sku-field]')\n        }\n\n        if (!skuField) {\n            console.error('Could not find SKU field')\n            return\n        }\n\n        const baseSkuValue = this.baseSkuInput?.value?.trim()\n        let newSkuValue\n\n        if (baseSkuValue) {\n            newSkuValue = `${baseSkuValue}-${catalogVariantSku}`\n        } else {\n            newSkuValue = catalogVariantSku\n        }\n\n        // Update the current SKU field\n        skuField.value = newSkuValue\n\n        // Find all other SKU fields for the same variant ID and update them\n        const variantId = catalogVariantId\n        const allSkuFields = this.element.querySelectorAll(`input[data-sku-field][data-variant-id=\"${variantId}\"]`)\n        allSkuFields.forEach(field => {\n            if (field !== skuField) {\n                field.value = newSkuValue\n                field.dispatchEvent(new Event('input', {bubbles: true}))\n                field.dispatchEvent(new Event('change', {bubbles: true}))\n            }\n        })\n\n        // Trigger change and input events to ensure form data is updated\n        skuField.dispatchEvent(new Event('input', {bubbles: true}))\n        skuField.dispatchEvent(new Event('change', {bubbles: true}))\n\n        // Add visual feedback\n        this.flashField(skuField)\n    }\n\n    generateDefaultSku(catalogVariantId, skuField) {\n        // Always generate PODP-style random SKU with dynamic length to maximize uniqueness\n        const baseSkuValue = this.baseSkuInput?.value?.trim()\n        const prefix = baseSkuValue ? `${baseSkuValue}-` : 'PODP-'\n        \n        // Calculate how many random characters we can add to reach 32 char limit\n        // Use minimum of 6 chars for uniqueness even if prefix is very long\n        const remainingLength = Math.max(32 - prefix.length, 6)\n        const randomSuffix = this.generateRandomString(remainingLength)\n        const newSkuValue = `${prefix}${randomSuffix}`\n\n        // Update the current SKU field\n        skuField.value = newSkuValue\n\n        // Find all other SKU fields for the same variant ID and update them\n        const variantId = catalogVariantId\n        const allSkuFields = this.element.querySelectorAll(`input[data-sku-field][data-variant-id=\"${variantId}\"]`)\n        allSkuFields.forEach(field => {\n            if (field !== skuField) {\n                // Only update if the target field is empty or we have a non-empty value to set\n                if (!field.value.trim() || newSkuValue.trim()) {\n                    field.value = newSkuValue\n                    field.dispatchEvent(new Event('input', {bubbles: true}))\n                    field.dispatchEvent(new Event('change', {bubbles: true}))\n                }\n            }\n        })\n\n        // Trigger change and input events to ensure form data is updated\n        skuField.dispatchEvent(new Event('input', {bubbles: true}))\n        skuField.dispatchEvent(new Event('change', {bubbles: true}))\n    }\n\n    generateRandomString(length) {\n        const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'\n        let result = ''\n        for (let i = 0; i < length; i++) {\n            result += chars.charAt(Math.floor(Math.random() * chars.length))\n        }\n        return result\n    }\n\n    generateAllPodpSkus(event) {\n        event.preventDefault()\n\n        const button = event.target\n        const confirmMessage = button.dataset.turboConfirm || button.dataset.confirm\n        if (confirmMessage && !confirm(confirmMessage)) return\n\n        // Determine scope root: if a row-level button was clicked, limit to its section/panel\n        let scopeRoot = this.element\n        const row = button.closest('.variant-row')\n        if (row && button.dataset.scope !== 'global') {\n            // Prefer the closest section block if present, else the panel, else the entire controller element\n            scopeRoot = row.closest('[id^=\"section-\"]') || row.closest('[data-product-variant-target=\"panel\"]') || this.element\n        }\n\n        // Generate PODP-style SKUs for all selected variants within scope\n        const checkedVariants = scopeRoot.querySelectorAll('input[data-product-variant-target=\"variantCheckbox\"]:checked, .variant-checkbox:checked')\n        const baseSkuValue = this.baseSkuInput?.value?.trim()\n        const prefix = baseSkuValue ? `${baseSkuValue}-` : 'PODP-'\n        // Calculate remaining length to fill 32 char Etsy limit (minimum 6 for uniqueness)\n        const remainingLength = Math.max(32 - prefix.length, 6)\n\n        checkedVariants.forEach(checkbox => {\n            const variantRow = checkbox.closest('.variant-row')\n            const skuField = variantRow.querySelector('[data-sku-field]')\n            if (skuField) {\n                const randomSuffix = this.generateRandomString(remainingLength)\n                const newSkuValue = `${prefix}${randomSuffix}`\n                skuField.value = newSkuValue\n                skuField.setAttribute('value', newSkuValue)\n\n                // Trigger change and input events to ensure form data is updated\n                skuField.dispatchEvent(new Event('input', {bubbles: true}))\n                skuField.dispatchEvent(new Event('change', {bubbles: true}))\n\n                this.flashField(skuField)\n            }\n        })\n    }\n\n    generateAllVariantSkus(event) {\n        event.preventDefault()\n\n        // Check if confirmation is needed\n        const button = event.target\n        const confirmMessage = button.dataset.turboConfirm || button.dataset.confirm\n\n        if (confirmMessage) {\n            if (!confirm(confirmMessage)) {\n                return // User cancelled\n            }\n        }\n\n        // Generate variant SKUs for all selected variants (both existing and new)\n        const checkedVariants = this.element.querySelectorAll('input[data-product-variant-target=\"variantCheckbox\"]:checked')\n        const baseSkuValue = this.baseSkuInput?.value?.trim()\n\n        checkedVariants.forEach(checkbox => {\n            const variantRow = checkbox.closest('.variant-row')\n            const skuField = variantRow.querySelector('[data-sku-field]')\n            const generateVariantBtn = variantRow.querySelector('.generate-variant-btn')\n\n            if (skuField && generateVariantBtn) {\n                const catalogVariantSku = generateVariantBtn.dataset.catalogVariantSku\n\n                if (baseSkuValue) {\n                    skuField.value = `${baseSkuValue}-${catalogVariantSku}`\n                    skuField.setAttribute('value', `${baseSkuValue}-${catalogVariantSku}`)\n                } else {\n                    skuField.value = catalogVariantSku\n                    skuField.setAttribute('value', catalogVariantSku)\n                }\n\n                // Trigger change and input events to ensure form data is updated\n                skuField.dispatchEvent(new Event('input', {bubbles: true}))\n                skuField.dispatchEvent(new Event('change', {bubbles: true}))\n\n                this.flashField(skuField)\n            }\n        })\n    }\n\n    generateSinglePodpSku(event) {\n        event.preventDefault()\n        // Redirect to the standard generatePodpSku method\n        this.generatePodpSku(event)\n    }\n\n    generateSingleVariantSku(event) {\n        event.preventDefault()\n        // Redirect to the standard generateVariantSku method\n        this.generateVariantSku(event)\n    }\n\n    flashField(field) {\n        // Add a brief visual highlight to show the field was updated\n        field.classList.add('bg-green-100', 'border-green-400')\n        setTimeout(() => {\n            field.classList.remove('bg-green-100', 'border-green-400')\n        }, 1000)\n    }\n\n    // ===== SHARED FUNCTIONALITY =====\n\n    // Update selection counts for each variant type\n    updateSelectionCounts() {\n        // Get unique selected variant IDs\n        const selectedVariantIds = new Set()\n        this.variantCheckboxTargets.forEach(cb => {\n            if (cb.checked) {\n                selectedVariantIds.add(cb.dataset.variantId)\n            }\n        })\n\n        // Get total unique variants (count each variant ID only once)\n        const uniqueVariantIds = new Set()\n        this.variantCheckboxTargets.forEach(cb => {\n            uniqueVariantIds.add(cb.dataset.variantId)\n        })\n\n        const totalSelected = selectedVariantIds.size\n        const totalVariants = uniqueVariantIds.size\n\n        this.selectionCounterTargets.forEach(counter => {\n            counter.textContent = `${totalSelected} of ${totalVariants} variants selected`\n        })\n\n        // Update per-type counters\n        const variantTypes = this.element.querySelectorAll('[data-variant-type-counter]')\n        variantTypes.forEach(counter => {\n            const typeId = counter.dataset.variantTypeId\n            const typeCheckboxes = this.element.querySelectorAll(`input[data-variant-type-id=\"${typeId}\"]:not([data-select-all])`)\n\n            // Count unique checked variants for this type\n            const checkedVariantIds = new Set()\n            Array.from(typeCheckboxes).forEach(cb => {\n                if (cb.checked) {\n                    checkedVariantIds.add(cb.dataset.variantId)\n                }\n            })\n\n            // Count total unique variants for this type\n            const totalVariantIds = new Set()\n            Array.from(typeCheckboxes).forEach(cb => {\n                totalVariantIds.add(cb.dataset.variantId)\n            })\n\n            counter.textContent = `${checkedVariantIds.size}/${totalVariantIds.size} selected`\n        })\n    }\n\n    // Update select all checkbox states\n    updateSelectAllStates() {\n        this.selectAllByTypeTargets.forEach(selectAll => {\n            const variantTypeId = selectAll.dataset.variantTypeId\n            const typeCheckboxes = this.element.querySelectorAll(`input[data-variant-type-id=\"${variantTypeId}\"]:not([data-select-all])`)\n            const checkedCount = Array.from(typeCheckboxes).filter(cb => cb.checked).length\n            const totalCount = typeCheckboxes.length\n\n            if (checkedCount === 0) {\n                selectAll.checked = false\n                selectAll.indeterminate = false\n            } else if (checkedCount === totalCount) {\n                selectAll.checked = true\n                selectAll.indeterminate = false\n            } else {\n                selectAll.checked = false\n                selectAll.indeterminate = true\n            }\n        })\n    }\n\n    // Show/hide bulk actions based on selection\n    updateBulkActions() {\n        const hasSelection = this.variantCheckboxTargets.some(cb => cb.checked)\n\n        this.bulkActionsTargets.forEach(bulkActions => {\n            bulkActions.style.display = hasSelection ? 'flex' : 'none'\n        })\n    }\n\n    // Update selection counts for collapsible sections\n    updateSectionSelectionCounts() {\n        // Find all section checkboxes\n        this.sectionCheckboxTargets.forEach(sectionCheckbox => {\n            const sectionId = sectionCheckbox.dataset.sectionId\n            const section = document.getElementById(sectionId)\n\n            if (section) {\n                // Get all variant checkboxes in this section\n                const sectionVariantCheckboxes = section.querySelectorAll('input[data-product-variant-target=\"variantCheckbox\"]')\n                const selectedCount = Array.from(sectionVariantCheckboxes).filter(cb => cb.checked).length\n                const totalCount = sectionVariantCheckboxes.length\n\n                // Update section checkbox state\n                if (selectedCount === 0) {\n                    sectionCheckbox.checked = false\n                    sectionCheckbox.indeterminate = false\n                } else if (selectedCount === totalCount) {\n                    sectionCheckbox.checked = true\n                    sectionCheckbox.indeterminate = false\n                } else {\n                    sectionCheckbox.checked = false\n                    sectionCheckbox.indeterminate = true\n                }\n\n                // Update the count display - find it in the parent header\n                const header = sectionCheckbox.closest('.section-header')\n                const countDisplay = header ? header.querySelector('[data-section-count]') : null\n\n                if (countDisplay) {\n                    if (selectedCount > 0) {\n                        countDisplay.textContent = `${selectedCount} of ${totalCount} selected`\n                        countDisplay.classList.add('font-medium')\n                        countDisplay.classList.remove('text-gray-500')\n                        countDisplay.classList.add('text-blue-600')\n                    } else {\n                        countDisplay.textContent = `${totalCount} variant${totalCount === 1 ? '' : 's'}`\n                        countDisplay.classList.remove('font-medium')\n                        countDisplay.classList.add('text-gray-500')\n                        countDisplay.classList.remove('text-blue-600')\n                    }\n                }\n            }\n        })\n    }\n\n    setupExistingVariantsSelectAll() {\n        const selectAllCheckbox = document.getElementById('select-all-existing-variants')\n        const existingVariantCheckboxes = document.querySelectorAll('.existing-variant-checkbox')\n        const bulkGenerators = document.getElementById('bulk-sku-generators-existing')\n\n        if (!selectAllCheckbox || existingVariantCheckboxes.length === 0) return\n\n        // Handle Select All checkbox change\n        selectAllCheckbox.addEventListener('change', (event) => {\n            const isChecked = event.target.checked\n            existingVariantCheckboxes.forEach(checkbox => {\n                checkbox.checked = isChecked\n                // Trigger the change event to show/hide SKU fields and update _destroy fields\n                checkbox.dispatchEvent(new Event('change', {bubbles: true}))\n            })\n\n            // Show/hide bulk SKU generators\n            if (bulkGenerators) {\n                bulkGenerators.style.display = isChecked ? 'flex' : 'none'\n            }\n        })\n\n        // Handle individual variant checkbox changes\n        existingVariantCheckboxes.forEach(checkbox => {\n            checkbox.addEventListener('change', () => {\n                this.updateExistingVariantsSelectAllState()\n            })\n        })\n    }\n\n    updateExistingVariantsSelectAllState() {\n        const selectAllCheckbox = document.getElementById('select-all-existing-variants')\n        const existingVariantCheckboxes = document.querySelectorAll('.existing-variant-checkbox')\n        const bulkGenerators = document.getElementById('bulk-sku-generators-existing')\n\n        if (!selectAllCheckbox || existingVariantCheckboxes.length === 0) return\n\n        const checkedCount = Array.from(existingVariantCheckboxes).filter(cb => cb.checked).length\n        const totalCount = existingVariantCheckboxes.length\n\n        if (checkedCount === 0) {\n            selectAllCheckbox.checked = false\n            selectAllCheckbox.indeterminate = false\n            // Hide bulk generators when no variants selected\n            if (bulkGenerators) {\n                bulkGenerators.style.display = 'none'\n            }\n        } else if (checkedCount === totalCount) {\n            selectAllCheckbox.checked = true\n            selectAllCheckbox.indeterminate = false\n            // Show bulk generators when all variants selected\n            if (bulkGenerators) {\n                bulkGenerators.style.display = 'flex'\n            }\n        } else {\n            selectAllCheckbox.checked = false\n            selectAllCheckbox.indeterminate = true\n            // Show bulk generators when some variants selected (partial selection)\n            if (bulkGenerators) {\n                bulkGenerators.style.display = 'flex'\n            }\n        }\n    }\n\n    setupNewVariantsSelectAll() {\n        const selectAllCheckbox = document.getElementById('select-all-variants')\n        const variantCheckboxes = document.querySelectorAll('.variant-checkbox:not(.existing-variant-checkbox)')\n        const bulkGenerators = document.getElementById('bulk-sku-generators')\n\n        if (!selectAllCheckbox || variantCheckboxes.length === 0) return\n\n        // Handle Select All checkbox change\n        selectAllCheckbox.addEventListener('change', (event) => {\n            const isChecked = event.target.checked\n            variantCheckboxes.forEach(checkbox => {\n                checkbox.checked = isChecked\n                // Trigger the change event to show/hide SKU fields\n                checkbox.dispatchEvent(new Event('change', {bubbles: true}))\n            })\n\n            // Show/hide bulk SKU generators\n            if (bulkGenerators) {\n                bulkGenerators.style.display = isChecked ? 'flex' : 'none'\n            }\n        })\n\n        // Handle individual variant checkbox changes\n        variantCheckboxes.forEach(checkbox => {\n            checkbox.addEventListener('change', () => {\n                this.updateNewVariantsSelectAllState()\n            })\n        })\n    }\n\n    updateNewVariantsSelectAllState() {\n        const selectAllCheckbox = document.getElementById('select-all-variants')\n        const variantCheckboxes = document.querySelectorAll('.variant-checkbox:not(.existing-variant-checkbox)')\n        const bulkGenerators = document.getElementById('bulk-sku-generators')\n\n        if (!selectAllCheckbox || variantCheckboxes.length === 0) return\n\n        const checkedCount = Array.from(variantCheckboxes).filter(cb => cb.checked).length\n        const totalCount = variantCheckboxes.length\n\n        if (checkedCount === 0) {\n            selectAllCheckbox.checked = false\n            selectAllCheckbox.indeterminate = false\n            // Hide bulk generators when no variants selected\n            if (bulkGenerators) {\n                bulkGenerators.style.display = 'none'\n            }\n        } else if (checkedCount === totalCount) {\n            selectAllCheckbox.checked = true\n            selectAllCheckbox.indeterminate = false\n            // Show bulk generators when all variants selected\n            if (bulkGenerators) {\n                bulkGenerators.style.display = 'flex'\n            }\n        } else {\n            selectAllCheckbox.checked = false\n            selectAllCheckbox.indeterminate = true\n            // Show bulk generators when some variants selected (partial selection)\n            if (bulkGenerators) {\n                bulkGenerators.style.display = 'flex'\n            }\n        }\n    }\n\n    // Setup synchronization for manual SKU field editing\n    setupSkuFieldSynchronization() {\n        // Add event listeners to all SKU fields for manual editing synchronization\n        const skuFields = this.element.querySelectorAll('input[data-sku-field]')\n        \n        skuFields.forEach(field => {\n            this.setupSkuFieldEvents(field)\n        })\n    }\n\n    // Setup events for a single SKU field\n    setupSkuFieldEvents(field) {\n        // Remove existing listeners to avoid duplicates\n        if (field._skuEventsSetup) return\n\n        const boundInputHandler = this.handleSkuFieldInput.bind(this)\n        const boundChangeHandler = this.handleSkuFieldChange.bind(this)\n\n        field.addEventListener('input', boundInputHandler)\n        field.addEventListener('change', boundChangeHandler)\n        field.addEventListener('keyup', boundInputHandler) // Also handle keyup for better responsiveness\n        field.addEventListener('paste', (event) => {\n            // Handle paste events with a small delay to get the pasted value\n            setTimeout(() => boundInputHandler(event), 10)\n        })\n\n        // Mark field as having events setup\n        field._skuEventsSetup = true\n        field._boundHandlers = { input: boundInputHandler, change: boundChangeHandler }\n    }\n\n    // Setup mutation observer to watch for dynamically added SKU fields\n    setupMutationObserver() {\n        if (this.mutationObserver) {\n            this.mutationObserver.disconnect()\n        }\n\n        this.mutationObserver = new MutationObserver((mutations) => {\n            mutations.forEach((mutation) => {\n                mutation.addedNodes.forEach((node) => {\n                    if (node.nodeType === Node.ELEMENT_NODE) {\n                        // Check if the added node contains SKU fields\n                        const skuFields = node.querySelectorAll ? node.querySelectorAll('input[data-sku-field]') : []\n                        skuFields.forEach(field => this.setupSkuFieldEvents(field))\n\n                        // Also check if the node itself is a SKU field\n                        if (node.matches && node.matches('input[data-sku-field]')) {\n                            this.setupSkuFieldEvents(node)\n                        }\n                    }\n                })\n            })\n        })\n\n        // Start observing\n        this.mutationObserver.observe(this.element, {\n            childList: true,\n            subtree: true\n        })\n    }\n\n    // Handle manual SKU field input (real-time sync)\n    handleSkuFieldInput(event) {\n        const field = event.target\n        const variantId = field.dataset.variantId\n        \n        if (!variantId) return\n        \n        // Sync value to all other SKU fields for the same variant\n        this.syncSkuValueToOtherFields(field, variantId, field.value)\n\n        // Debounce the save indication\n        clearTimeout(this.skuSyncTimeout)\n        this.skuSyncTimeout = setTimeout(() => {\n            this.indicateSkuSaved(field)\n        }, 300)\n    }\n\n    // Handle manual SKU field change (final sync)\n    handleSkuFieldChange(event) {\n        const field = event.target\n        const variantId = field.dataset.variantId\n\n        if (!variantId) return\n\n        // Ensure final sync when field loses focus\n        this.syncSkuValueToOtherFields(field, variantId, field.value)\n        this.indicateSkuSaved(field)\n    }\n\n    // Sync SKU value to all other fields for the same variant\n    syncSkuValueToOtherFields(sourceField, variantId, newValue) {\n        const allSkuFields = this.element.querySelectorAll(`input[data-sku-field][data-variant-id=\"${variantId}\"]`)\n\n        allSkuFields.forEach(field => {\n            if (field !== sourceField && field.value !== newValue) {\n                field.value = newValue\n\n                // For Rails form fields, also set the attribute to ensure form submission\n                field.setAttribute('value', newValue)\n\n                // Trigger a custom event to notify that the field was updated\n                field.dispatchEvent(new CustomEvent('sku-synchronized', { \n                    bubbles: true, \n                    detail: { originalField: sourceField, newValue: newValue }\n                }))\n            }\n        })\n    }\n\n    // Provide visual feedback that SKU has been saved/synchronized\n    indicateSkuSaved(field) {\n        // Clear any existing timeout\n        if (field.saveIndicatorTimeout) {\n            clearTimeout(field.saveIndicatorTimeout)\n        }\n\n        // Add visual indicator\n        field.classList.add('bg-blue-50', 'border-blue-300')\n\n        // Remove indicator after a short delay\n        field.saveIndicatorTimeout = setTimeout(() => {\n            field.classList.remove('bg-blue-50', 'border-blue-300')\n        }, 800)\n    }\n\n    disconnect() {\n        // Clean up mutation observer\n        if (this.mutationObserver) {\n            this.mutationObserver.disconnect()\n        }\n\n        // Clear any pending timeouts\n        if (this.skuSyncTimeout) {\n            clearTimeout(this.skuSyncTimeout)\n        }\n    }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = {\n    refreshInterval: { type: Number, default: 90000 }\n  }\n\n  connect() {\n    this.startAutoRefresh()\n  }\n\n  disconnect() {\n    this.stopAutoRefresh()\n  }\n\n  startAutoRefresh() {\n    this.refreshTimer = setInterval(() => {\n      this.refreshPage()\n    }, this.refreshIntervalValue)\n  }\n\n  stopAutoRefresh() {\n    if (this.refreshTimer) {\n      clearInterval(this.refreshTimer)\n    }\n  }\n\n  refreshPage() {\n    window.location.reload()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { escapeHtml } from \"./helpers/escape\"\n\nexport default class extends Controller {\n  static targets = [\"input\", \"status\", \"log\", \"itemCard\", \"counter\"]\n  static values = { url: String }\n\n  connect() {\n    this.scanCount = 0\n    this.inputTarget.focus()\n  }\n\n  async scan(event) {\n    event.preventDefault()\n    const qrData = this.inputTarget.value.trim()\n    if (!qrData) return\n\n    this.inputTarget.value = \"\"\n    this.showStatus(\"Scanning...\", \"info\")\n\n    try {\n      const response = await fetch(this.urlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": document.querySelector('meta[name=\"csrf-token\"]').content\n        },\n        body: JSON.stringify({ qr_data: qrData })\n      })\n\n      const data = await response.json()\n\n      if (data.success && data.item && data.item.already_picked) {\n        // De-gated re-scan (#987): this item was already confirmed. It's not an\n        // error and not a fresh pick \u2014 the backend already no-ops the decrement\n        // (#983). Surface it distinctly so the picker knows it's done and move\n        // on, instead of an identical green \"Confirmed\" that hides the repeat.\n        // No counter bump \u2014 nothing new was confirmed.\n        this.showStatus(`Already confirmed: ${data.item.order_number} - ${data.item.sku}`, \"warning\")\n        this.addLogEntry(data.item, \"warning\")\n        this.updateItemCard(data)\n        this.playSound(\"warning\")\n      } else if (data.success) {\n        this.scanCount++\n        this.showStatus(`Confirmed: ${data.item.order_number} - ${data.item.sku}`, \"success\")\n        this.addLogEntry(data.item, true)\n        this.updateItemCard(data)\n        this.updateCounter()\n        this.playSound(true)\n      } else {\n        this.showStatus(data.error, \"error\")\n        this.addLogEntry({ sku: qrData, error: data.error }, false)\n        this.playSound(false)\n      }\n    } catch (error) {\n      this.showStatus(`Network error: ${error.message}`, \"error\")\n      this.playSound(false)\n    }\n\n    this.inputTarget.focus()\n  }\n\n  showStatus(message, type) {\n    const colors = {\n      success: \"bg-pz-success/16 border-pz-success/35 text-green-800\",\n      warning: \"bg-pz-warning/16 border-pz-warning/45 text-amber-800\",\n      error: \"bg-pz-danger/16 border-pz-danger/35 text-red-800\",\n      info: \"bg-pz-info/16 border-pz-info/35 text-pz-ink/70\"\n    }\n    this.statusTarget.innerHTML = `\n      <div class=\"px-4 py-3 rounded-2xl border ${colors[type] || colors.info}\">\n        <span class=\"font-semibold text-sm\">${escapeHtml(message)}</span>\n      </div>\n    `\n  }\n\n  addLogEntry(item, state) {\n    if (!this.hasLogTarget) return\n\n    const entry = document.createElement(\"div\")\n    const time = new Date().toLocaleTimeString()\n\n    if (state === \"warning\") {\n      entry.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-warning/12 text-amber-800\"\n      entry.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">${escapeHtml(item.order_number)}</span>\n        <span class=\"text-pz-ink/60\">${escapeHtml(item.sku)}</span>\n        <span class=\"ml-auto text-xs font-semibold uppercase tracking-wide\">already done</span>`\n    } else if (state) {\n      entry.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-success/10 text-green-800\"\n      entry.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">${escapeHtml(item.order_number)}</span>\n        <span class=\"text-pz-ink/60\">${escapeHtml(item.sku)}</span>`\n    } else {\n      entry.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-danger/10 text-red-800\"\n      entry.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">Error:</span>\n        <span>${escapeHtml(item.error || \"Unknown\")}</span>`\n    }\n\n    this.logTarget.prepend(entry)\n\n    // Keep last 20 entries\n    while (this.logTarget.children.length > 20) {\n      this.logTarget.removeChild(this.logTarget.lastChild)\n    }\n  }\n\n  updateItemCard(data) {\n    if (!this.hasItemCardTarget || !data.item) return\n\n    // #724: PRIORITY HANDLING \u2014 the replacement blank this item was waiting on has\n    // been received; the picker should pull this item first.\n    const priorityBanner = data.item.priority_handling\n      ? `<div class=\"mb-3 flex items-center gap-2 rounded-xl border border-pz-danger/35 bg-pz-danger/12 px-3 py-2 text-sm font-semibold text-pz-danger\">&#9889; PRIORITY HANDLING${data.item.delayed_days ? ` &middot; order delayed ${data.item.delayed_days} days` : \"\"} \u2014 pull this item first</div>`\n      : \"\"\n\n    this.itemCardTarget.innerHTML = priorityBanner + `\n      <div class=\"flex items-center gap-4\">\n        <div class=\"flex-shrink-0 w-12 h-12 rounded-2xl bg-pz-success/16 border border-pz-success/35 flex items-center justify-center\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" class=\"w-6 h-6 text-pz-success\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 12.75 6 6 9-13.5\" />\n          </svg>\n        </div>\n        <div class=\"flex-1 min-w-0\">\n          <p class=\"font-heading font-semibold text-pz-ink\">${escapeHtml(data.item.order_number)}</p>\n          <p class=\"text-sm text-pz-ink/60 font-mono\">${escapeHtml(data.item.sku)}</p>\n        </div>\n        ${data.item.color ? `<span class=\"text-sm text-pz-ink/60\">${escapeHtml(data.item.color)} / ${escapeHtml(data.item.size || \"\")}</span>` : \"\"}\n      </div>\n    `\n    this.itemCardTarget.classList.remove(\"hidden\")\n  }\n\n  updateCounter() {\n    if (!this.hasCounterTarget) return\n    this.counterTarget.textContent = this.scanCount\n  }\n\n  playSound(state) {\n    try {\n      const ctx = new (window.AudioContext || window.webkitAudioContext)()\n      const osc = ctx.createOscillator()\n      const gain = ctx.createGain()\n      osc.connect(gain)\n      gain.connect(ctx.destination)\n      gain.gain.value = 0.1\n\n      let duration = 0.1\n      if (state === \"warning\") {\n        // Distinct \"already done\" tone \u2014 clearly not the success ding and not\n        // the harsh error buzz, so a re-scan is audible without alarming.\n        osc.frequency.value = 600\n        osc.type = \"triangle\"\n        duration = 0.2\n      } else if (state) {\n        osc.frequency.value = 880\n        osc.type = \"sine\"\n        duration = 0.1\n      } else {\n        osc.frequency.value = 220\n        osc.type = \"square\"\n        duration = 0.3\n      }\n\n      osc.start()\n      osc.stop(ctx.currentTime + duration)\n      // Release the AudioContext when the tone ends. Without this a new context\n      // leaks on every scan and a long picking shift hits the browser's\n      // concurrent-context cap, silently killing the (now load-bearing) de-gate\n      // re-scan tone \u2014 the catch below swallows the failure (#989).\n      osc.onended = () => ctx.close()\n    } catch (e) {\n      // Audio not supported, silently ignore\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static values = { reload: { type: Boolean, default: true } }\n\n  connect() {\n    this.timeout = setTimeout(() => {\n      Turbo.visit(window.location.href, { action: \"replace\" })\n    }, 4000)\n  }\n\n  disconnect() {\n    if (this.timeout) clearTimeout(this.timeout)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { Turbo } from \"@hotwired/turbo-rails\"\n\n// Keeps the Listing Builder canvas honest while a push to Etsy is running.\n//\n// The canvas used to redirect with an auto-dismissing flash and then never\n// change again, so sellers read the vanishing \"Pushing to Etsy...\" as \"done\",\n// navigated away mid-push, and never learned that a photo or video hadn't\n// finished. This polls the listing's push_status endpoint, re-renders the\n// small `push_progress` frame as each phase completes, and reloads the page\n// once the push settles.\n//\n// Two request shapes on purpose: the JSON poll is tiny and carries a\n// fingerprint of the whole checklist, so the Turbo Stream render only happens\n// when something actually moved. The render replaces the inner progress frame,\n// NOT canvas_footer - the footer carries this controller, and replacing it tore\n// the poller down on every tick (resetting its backoff) as well as re-running\n// push validation (#1292 review).\nexport default class extends Controller {\n  static values = { url: String, fingerprint: String, attempt: String }\n  static targets = [\"hint\"]\n\n  // Poll fast while the seller is most likely watching, then ease off in tiers.\n  static FAST_INTERVAL = 3000\n  static SLOW_INTERVAL = 8000\n  static IDLE_INTERVAL = 60000\n  static SLOW_AFTER = 30000\n  // Past this the push is taking unusually long, so say so - but keep polling\n  // at IDLE_INTERVAL rather than stopping. Stopping at ten minutes while\n  // ReconcilePushStatusJob only settles a wedged push at STALE_AFTER meant the\n  // canvas told the seller to contact support and then never showed them the\n  // resolution when it arrived (#1292 review).\n  static WARN_AFTER = 10 * 60 * 1000\n  // Hard stop, comfortably past the reconcile job's horizon. The reconciler\n  // only becomes eligible at STALE_AFTER (60 min) and runs every 10 min, so a\n  // push can settle as late as ~70 min; give it margin so the tab is still\n  // polling when the resolution lands (#1292 review).\n  static GIVE_UP_AFTER = 90 * 60 * 1000\n\n  connect() {\n    // The footer frame is replaced on every canvas autosave, which tears this\n    // controller down and stands a new one up. The clocks live in\n    // sessionStorage so a long push keeps one continuous deadline + backoff\n    // across those remounts, instead of a fresh budget each tick.\n    //\n    // But a prior push in this same tab that the seller navigated away from\n    // before it settled leaves its clocks behind. A stored deadline already in\n    // the past belongs to that dead attempt - reset so THIS push gets a full,\n    // correctly-tiered budget rather than giving up on its first request\n    // (#1292 review).\n    const stored = this.readStamp(\"deadline\")\n    if (!stored || stored <= Date.now()) this.resetClocks()\n\n    this.deadline = this.stamp(\"deadline\", this.constructor.GIVE_UP_AFTER)\n    this.startedAt = this.stamp(\"started\", 0)\n    // Seed from the server-rendered checklist so a phase that changes between\n    // the page render and the first poll is detected and rendered, instead of\n    // being silently adopted as the baseline (#1292 review).\n    this.fingerprint = this.fingerprintValue.length > 0 ? this.fingerprintValue : null\n    this.stopped = false\n    this.warned = false\n    this.schedule()\n  }\n\n  disconnect() {\n    this.stopped = true\n    if (this.timer) clearTimeout(this.timer)\n  }\n\n  schedule() {\n    if (this.stopped) return\n\n    const elapsed = Date.now() - this.startedAt\n    const { FAST_INTERVAL, SLOW_INTERVAL, IDLE_INTERVAL, SLOW_AFTER, WARN_AFTER } = this.constructor\n    let interval = FAST_INTERVAL\n    if (elapsed >= WARN_AFTER) {\n      interval = IDLE_INTERVAL\n      this.warn()\n    } else if (elapsed >= SLOW_AFTER) {\n      interval = SLOW_INTERVAL\n    }\n\n    this.timer = setTimeout(() => this.poll(), interval)\n  }\n\n  // Tell the seller it is running long without abandoning them: polling\n  // continues, so the eventual resolution still lands on the page.\n  warn() {\n    if (!this.hasHintTarget || this.warned) return\n    this.warned = true\n    this.hintTarget.textContent =\n      \"This is taking longer than usual. You can leave this page - we'll keep working, and the status updates when it finishes.\"\n  }\n\n  async poll() {\n    if (this.stopped) return\n\n    if (Date.now() > this.deadline) {\n      this.giveUp()\n      return\n    }\n\n    let data\n    try {\n      const response = await fetch(this.urlValue, {\n        headers: { Accept: \"application/json\" },\n      })\n      if (!response.ok) return this.schedule()\n      data = await response.json()\n    } catch {\n      // Transient network blip (sleeping laptop, flaky wifi). Try again.\n      return this.schedule()\n    }\n\n    // A frame replacement can disconnect us while that fetch was in flight; a\n    // torn-down instance must not go on to reload the page under its successor.\n    if (this.stopped) return\n\n    // Another tab (or another device) started a NEW attempt for this listing:\n    // the server's attempt token no longer matches the one this tab mounted\n    // with. Reload so this tab tracks the current attempt with fresh clocks\n    // instead of polling a stale one to an early give-up (#1292 review).\n    if (data.attempt && this.attemptValue && data.attempt !== this.attemptValue) {\n      this.stopped = true\n      this.resetClocks()\n      window.location.reload()\n      return\n    }\n\n    if (!data.in_flight) {\n      // Terminal. Reload the whole page rather than just the footer: the\n      // photos section, product cards and status chip all change with it.\n      this.resetClocks()\n      this.stopped = true\n      window.location.reload()\n      return\n    }\n\n    if (data.fingerprint !== this.fingerprint) {\n      // Commit the new fingerprint ONLY after the render actually lands, so a\n      // failed turbo-stream fetch is retried on the next poll instead of being\n      // silently skipped forever (the next JSON carries the same fingerprint).\n      const rendered = await this.render()\n      if (this.stopped) return\n      if (rendered) this.fingerprint = data.fingerprint\n    }\n\n    this.schedule()\n  }\n\n  // Returns true when the checklist was re-rendered, false on any failure so\n  // the caller keeps the old fingerprint and retries next poll.\n  async render() {\n    try {\n      const response = await fetch(this.urlValue, {\n        headers: { Accept: \"text/vnd.turbo-stream.html\" },\n      })\n      if (!response.ok) return false\n      Turbo.renderStreamMessage(await response.text())\n      return true\n    } catch {\n      return false\n    }\n  }\n\n  giveUp() {\n    this.stopped = true\n    this.resetClocks()\n    if (this.hasHintTarget) {\n      this.hintTarget.textContent =\n        \"We've stopped checking from this tab. Refresh to see the latest status, or contact support if it stays stuck.\"\n    }\n  }\n\n  // Scope the stored clocks to BOTH the listing and the attempt, so a later\n  // push of the same listing (a new push_started_at -> new attemptValue) gets\n  // its own fresh backoff/give-up clocks rather than inheriting a prior\n  // attempt's (#1292 review). Falls back to url-only for a legacy in-flight\n  // listing with no attempt token.\n  key(name) {\n    return `push-status-${name}:${this.urlValue}:${this.attemptValue}`\n  }\n\n  // Reads a timestamp that must survive this controller being torn down and\n  // remounted by a frame replacement, seeding it `offset` ms from now on the\n  // first mount. sessionStorage throws in some privacy modes, so every access\n  // is guarded and the in-memory value is the fallback.\n  // Reads a stored stamp without seeding one.\n  readStamp(name) {\n    try {\n      const stored = parseInt(sessionStorage.getItem(this.key(name)), 10)\n      return Number.isFinite(stored) ? stored : null\n    } catch {\n      return null\n    }\n  }\n\n  resetClocks() {\n    for (const name of [ \"deadline\", \"started\" ]) {\n      try {\n        sessionStorage.removeItem(this.key(name))\n      } catch {\n        // Nothing to do.\n      }\n    }\n  }\n\n  stamp(name, offset) {\n    try {\n      const stored = parseInt(sessionStorage.getItem(this.key(name)), 10)\n      if (stored) return stored\n    } catch {\n      // Fall through to a fresh stamp.\n    }\n    const value = Date.now() + offset\n    try {\n      sessionStorage.setItem(this.key(name), String(value))\n    } catch {\n      // Non-fatal: without storage each mount gets its own clock.\n    }\n    return value\n  }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { escapeHtml } from \"./helpers/escape\"\n\nexport default class extends Controller {\n  static targets = [\"input\", \"status\", \"log\", \"itemCard\", \"actions\", \"failNotes\", \"counter\", \"binPrompt\", \"binInput\", \"designatedBin\", \"designatedBinHint\", \"freePickHint\", \"completion\"]\n  static values = { scanUrl: String, passUrl: String, failUrl: String, assignBinUrl: String }\n\n  connect() {\n    this.scanCount = 0\n    this.currentItemId = null\n    this.pendingItemId = null\n    this.inputTarget.focus()\n  }\n\n  async scan(event) {\n    event.preventDefault()\n    const qrData = this.inputTarget.value.trim()\n    if (!qrData) return\n\n    this.inputTarget.value = \"\"\n\n    // If we're waiting for a bin scan and the input looks like a holding bin QR\n    if (this.pendingItemId && qrData.startsWith(\"HOLDINGBIN:\")) {\n      const binIdentifier = qrData.replace(\"HOLDINGBIN:\", \"\")\n      await this.assignBin(binIdentifier)\n      return\n    }\n\n    this.showStatus(\"Scanning...\", \"info\")\n    this.hideActions()\n    this.hideBinPrompt()\n    this.hideCompletion()\n\n    try {\n      const response = await fetch(this.scanUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"text/html\",\n          \"X-CSRF-Token\": this.csrfToken\n        },\n        body: JSON.stringify({ qr_data: qrData })\n      })\n\n      if (response.ok) {\n        const html = await response.text()\n        this.showItemCard(html)\n        // Extract data attributes from rendered HTML\n        const wrapper = this.itemCardTarget.querySelector(\"[data-order-item-id]\")\n        if (wrapper) {\n          this.currentItemId = parseInt(wrapper.dataset.orderItemId, 10)\n          const orderNumber = wrapper.dataset.orderNumber\n          const sku = wrapper.dataset.sku\n          this.showStatus(`Scanned: ${orderNumber} - ${sku}`, \"info\")\n        }\n        this.showActions()\n      } else {\n        const data = await response.json()\n        this.showStatus(data.error, \"error\")\n        this.addLogEntry({ sku: qrData, error: data.error }, false)\n        this.playSound(false)\n      }\n    } catch (error) {\n      this.showStatus(`Network error: ${error.message}`, \"error\")\n      this.playSound(false)\n    }\n\n    this.inputTarget.focus()\n  }\n\n  async passItem() {\n    if (!this.currentItemId) return\n    await this.submitAction(this.passUrlValue, { order_item_id: this.currentItemId })\n  }\n\n  async failItem() {\n    if (!this.currentItemId) return\n    const notes = this.hasFailNotesTarget ? this.failNotesTarget.value : \"\"\n    await this.submitAction(this.failUrlValue, { order_item_id: this.currentItemId, notes })\n  }\n\n  showFailForm() {\n    if (this.hasFailNotesTarget) {\n      this.failNotesTarget.closest(\".qc-fail-form\").classList.remove(\"hidden\")\n      this.failNotesTarget.focus()\n    }\n  }\n\n  async submitAction(url, body) {\n    this.showStatus(\"Processing...\", \"info\")\n\n    try {\n      const response = await fetch(url, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this.csrfToken\n        },\n        body: JSON.stringify(body)\n      })\n\n      const data = await response.json()\n\n      if (data.success) {\n        this.scanCount++\n        const action = url === this.passUrlValue ? \"PASSED\" : \"FAILED\"\n        this.showStatus(`${action}: Item ${this.currentItemId}`, action === \"PASSED\" ? \"success\" : \"error\")\n        this.addLogEntry({ id: this.currentItemId, action, status: data.status }, action === \"PASSED\")\n        this.hideActions()\n        this.updateCounter()\n        this.playSound(action === \"PASSED\")\n\n        // Clear fail notes\n        if (this.hasFailNotesTarget) {\n          this.failNotesTarget.value = \"\"\n          this.failNotesTarget.closest(\".qc-fail-form\").classList.add(\"hidden\")\n        }\n\n        // Check if item needs to be placed in a holding bin (only on PASS)\n        if (action === \"PASSED\" && data.needs_bin === true) {\n          this.pendingItemId = this.currentItemId\n          this.showBinPrompt(data.designated_bin || null)\n        } else {\n          this.currentItemId = null\n          // Passing the final item of a multi-item order closes it out \u2014 show a\n          // prominent \"ready for packing\" banner with the bin location(s) so the\n          // completion isn't lost when the item card clears.\n          if (action === \"PASSED\" && data.order_complete === true) {\n            this.showOrderComplete(data)\n          }\n        }\n      } else {\n        this.showStatus(data.error, \"error\")\n        this.playSound(false)\n      }\n    } catch (error) {\n      this.showStatus(`Network error: ${error.message}`, \"error\")\n      this.playSound(false)\n    }\n\n    this.inputTarget.focus()\n  }\n\n  async assignBin(binIdentifier) {\n    if (!this.pendingItemId) return\n\n    // When wired via data-action (e.g. click->qc-station#assignBin),\n    // Stimulus passes the Event as the first argument \u2014 fall back to the input field.\n    if (typeof binIdentifier !== \"string\") {\n      binIdentifier = this.hasBinInputTarget ? this.binInputTarget.value.trim() : \"\"\n    }\n\n    // Handle scanned QR codes that include the prefix\n    if (binIdentifier.startsWith(\"HOLDINGBIN:\")) {\n      binIdentifier = binIdentifier.replace(\"HOLDINGBIN:\", \"\")\n    }\n\n    if (!binIdentifier) return\n\n    this.showStatus(\"Assigning bin...\", \"info\")\n\n    try {\n      const response = await fetch(this.assignBinUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this.csrfToken\n        },\n        body: JSON.stringify({\n          order_item_id: this.pendingItemId,\n          bin_identifier: binIdentifier\n        })\n      })\n\n      const data = await response.json()\n\n      if (data.success) {\n        this.showStatus(`Placed in bin ${data.bin}`, \"success\")\n        this.addLogEntry({ id: this.pendingItemId, action: \"BIN\", status: data.bin }, true)\n        this.playSound(true)\n      } else {\n        this.showStatus(data.error, \"error\")\n        this.playSound(false)\n        this.inputTarget.focus()\n        return\n      }\n    } catch (error) {\n      this.showStatus(`Network error: ${error.message}`, \"error\")\n      this.playSound(false)\n      this.inputTarget.focus()\n      return\n    }\n\n    this.pendingItemId = null\n    this.currentItemId = null\n    this.hideBinPrompt()\n    this.inputTarget.focus()\n  }\n\n  skipBin() {\n    this.pendingItemId = null\n    this.currentItemId = null\n    this.hideBinPrompt()\n    this.showStatus(\"Bin assignment skipped\", \"info\")\n    this.inputTarget.focus()\n  }\n\n  showBinPrompt(designatedBin) {\n    if (!this.hasBinPromptTarget) return\n\n    // If the order has a designated bin (siblings already placed), steer the\n    // operator to it. Otherwise show the free-pick hint.\n    if (designatedBin) {\n      if (this.hasDesignatedBinTarget) {\n        this.designatedBinTarget.textContent = designatedBin\n      }\n      if (this.hasDesignatedBinHintTarget) {\n        this.designatedBinHintTarget.classList.remove(\"hidden\")\n      }\n      if (this.hasFreePickHintTarget) {\n        this.freePickHintTarget.classList.add(\"hidden\")\n      }\n    } else {\n      if (this.hasDesignatedBinHintTarget) {\n        this.designatedBinHintTarget.classList.add(\"hidden\")\n      }\n      if (this.hasFreePickHintTarget) {\n        this.freePickHintTarget.classList.remove(\"hidden\")\n      }\n    }\n\n    this.binPromptTarget.classList.remove(\"hidden\")\n    if (this.hasBinInputTarget) {\n      this.binInputTarget.value = \"\"\n      this.binInputTarget.focus()\n    }\n  }\n\n  hideBinPrompt() {\n    if (this.hasBinPromptTarget) {\n      this.binPromptTarget.classList.add(\"hidden\")\n    }\n    if (this.hasBinInputTarget) {\n      this.binInputTarget.value = \"\"\n    }\n  }\n\n  showOrderComplete(data) {\n    if (!this.hasCompletionTarget) return\n\n    const bins = Array.isArray(data.bins) ? data.bins : []\n    const itemCount = data.item_count || \"\"\n    const orderNumber = data.order_number || \"\"\n\n    let binsHtml\n    if (bins.length > 0) {\n      const binCards = bins.map((b) => `\n        <div class=\"flex flex-col items-center px-8 py-4 rounded-2xl bg-white border-2 border-pz-success/40 shadow-sm\">\n          <span class=\"text-[11px] font-bold text-pz-ink/40 uppercase tracking-wide mb-1\">Holding Bin</span>\n          <span class=\"font-heading text-5xl font-extrabold text-pz-success tracking-tight leading-none\">${b.identifier}</span>\n          <span class=\"text-sm font-medium text-pz-ink/50 mt-2\">${b.item_count} item${b.item_count === 1 ? \"\" : \"s\"}</span>\n        </div>\n      `).join(\"\")\n      binsHtml = `\n        <p class=\"text-sm font-semibold text-pz-ink/60 mt-5 mb-3\">Collect the remaining items from:</p>\n        <div class=\"flex flex-wrap justify-center gap-4\">${binCards}</div>\n      `\n    } else {\n      binsHtml = `<p class=\"text-sm font-medium text-pz-ink/50 mt-4\">No holding bin on file for the remaining items \u2014 check the order.</p>`\n    }\n\n    this.completionTarget.innerHTML = `\n      <div class=\"max-w-3xl mx-auto rounded-3xl border-2 border-pz-success/45 bg-pz-success/10 px-8 py-7 text-center shadow-lg\">\n        <div class=\"flex items-center justify-center gap-3\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"w-9 h-9 text-pz-success flex-shrink-0\">\n            <path fill-rule=\"evenodd\" d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\" clip-rule=\"evenodd\" />\n          </svg>\n          <h2 class=\"font-heading text-3xl font-extrabold text-pz-success tracking-tight\">Order Complete \u2014 Ready for Packing</h2>\n        </div>\n        <p class=\"text-base text-pz-ink/70 mt-2\">\n          Order <span class=\"font-bold text-pz-ink\">${escapeHtml(orderNumber)}</span>${itemCount ? ` \u00B7 ${itemCount} items all passed QC` : \"\"}\n        </p>\n        ${binsHtml}\n      </div>\n    `\n    this.completionTarget.classList.remove(\"hidden\")\n  }\n\n  hideCompletion() {\n    if (!this.hasCompletionTarget) return\n    this.completionTarget.classList.add(\"hidden\")\n    this.completionTarget.innerHTML = \"\"\n  }\n\n  showStatus(message, type) {\n    const colors = {\n      success: \"bg-pz-success/16 border-pz-success/35 text-green-800\",\n      error: \"bg-pz-danger/16 border-pz-danger/35 text-red-800\",\n      info: \"bg-pz-info/16 border-pz-info/35 text-pz-ink/70\"\n    }\n    this.statusTarget.innerHTML = `\n      <div class=\"px-4 py-3 rounded-2xl border ${colors[type] || colors.info}\">\n        <span class=\"font-semibold text-sm\">${escapeHtml(message)}</span>\n      </div>\n    `\n  }\n\n  showItemCard(html) {\n    if (!this.hasItemCardTarget) return\n    this.itemCardTarget.innerHTML = html\n    this.itemCardTarget.classList.remove(\"hidden\")\n  }\n\n  showActions() {\n    if (this.hasActionsTarget) this.actionsTarget.classList.remove(\"hidden\")\n  }\n\n  hideActions() {\n    if (this.hasActionsTarget) this.actionsTarget.classList.add(\"hidden\")\n    if (this.hasItemCardTarget) this.itemCardTarget.classList.add(\"hidden\")\n  }\n\n  addLogEntry(item, success) {\n    if (!this.hasLogTarget) return\n\n    const entry = document.createElement(\"div\")\n    const time = new Date().toLocaleTimeString()\n\n    if (success) {\n      entry.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-success/10 text-green-800\"\n      entry.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">${escapeHtml(item.action || \"OK\")}</span>\n        <span class=\"text-pz-ink/60\">Item #${escapeHtml(item.id)}${item.status ? ` - ${escapeHtml(item.status)}` : \"\"}</span>`\n    } else {\n      entry.className = \"flex items-center gap-2 text-sm px-3 py-1.5 rounded-xl bg-pz-danger/10 text-red-800\"\n      entry.innerHTML = `<span class=\"font-mono text-xs text-pz-ink/40\">${time}</span>\n        <span class=\"font-medium\">${escapeHtml(item.action || \"Error\")}:</span>\n        <span>${escapeHtml(item.error || item.status || \"Unknown\")}</span>`\n    }\n\n    this.logTarget.prepend(entry)\n    while (this.logTarget.children.length > 20) {\n      this.logTarget.removeChild(this.logTarget.lastChild)\n    }\n  }\n\n  updateCounter() {\n    if (!this.hasCounterTarget) return\n    this.counterTarget.textContent = this.scanCount\n  }\n\n  playSound(success) {\n    try {\n      const ctx = new (window.AudioContext || window.webkitAudioContext)()\n      const osc = ctx.createOscillator()\n      const gain = ctx.createGain()\n      osc.connect(gain)\n      gain.connect(ctx.destination)\n      gain.gain.value = 0.1\n      if (success) {\n        osc.frequency.value = 880\n        osc.type = \"sine\"\n      } else {\n        osc.frequency.value = 220\n        osc.type = \"square\"\n      }\n      osc.start()\n      osc.stop(ctx.currentTime + (success ? 0.1 : 0.3))\n      osc.onended = () => ctx.close() // release the context so it can't leak per scan (#989)\n    } catch (e) { /* Audio not supported */ }\n  }\n\n  get csrfToken() {\n    return document.querySelector('meta[name=\"csrf-token\"]').content\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"poFilter\", \"poRow\", \"modalCheckbox\", \"submitButton\"]\n\n  connect() {\n    if (this.hasPoFilterTarget) {\n      this.poFilterTarget.focus()\n    }\n  }\n\n  filterPos() {\n    const query = this.poFilterTarget.value.trim().toLowerCase()\n    this.poRowTargets.forEach((row) => {\n      const poNumber = row.dataset.poNumber || \"\"\n      const matches = query === \"\" || poNumber.includes(query)\n      row.classList.toggle(\"hidden\", !matches)\n    })\n  }\n\n  openFirstPo(event) {\n    event.preventDefault()\n    const visible = this.poRowTargets.find((row) => !row.classList.contains(\"hidden\"))\n    if (visible) {\n      visible.click()\n    }\n  }\n\n  toggleAll(event) {\n    const section = event.target.closest(\"[data-modal-section]\")\n    if (!section) return\n    const checked = event.target.checked\n    section.querySelectorAll('input[type=\"checkbox\"][data-receiving-station-target=\"modalCheckbox\"]').forEach((cb) => {\n      cb.checked = checked\n    })\n    this.updateCount()\n  }\n\n  updateCount() {\n    if (!this.hasSubmitButtonTarget) return\n    const count = this.modalCheckboxTargets.filter((cb) => cb.checked).length\n    this.submitButtonTarget.textContent = count > 0 ? `Label ${count} item${count === 1 ? \"\" : \"s\"}` : \"Nothing selected\"\n    this.submitButtonTarget.disabled = count === 0\n  }\n\n  dismissBackdrop(event) {\n    if (event.target === event.currentTarget) {\n      this.element.remove()\n    }\n  }\n\n  stopPropagation(event) {\n    event.stopPropagation()\n  }\n\n  dismissAfterSubmit() {\n    // Form has target=\"_blank\" so the PDF response goes to the new tab.\n    // Defer the modal removal so the browser can finish dispatching the\n    // submit (otherwise removing the form element synchronously can\n    // abort the submission before the new tab opens).\n    setTimeout(() => this.element.remove(), 100)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { Modal } from \"flowbite\"\n\nexport default class extends Controller {\n  connect() {\n    this.modal = new Modal(this.element)\n    this.modal.show();\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"removable\"\nexport default class extends Controller {\n  static values = { delay: Number }\n  \n  connect() {\n    if (this.hasDelayValue && this.delayValue > 0) {\n      setTimeout(() => {\n        this.remove()\n      }, this.delayValue)\n    }\n  }\n  \n  remove() {\n    this.element.remove()\n  }\n}", "import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"removals\"\nexport default class extends Controller {\n  static values = { removeAfter: Number };\n\n  connect() {\n    if (this.hasRemoveAfterValue) {\n      setTimeout(() => {\n        this.remove();\n      }, this.removeAfterValue);\n    }\n  }\n\n  remove() {\n    this.element.remove();\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  reset() {\n    this.element.reset()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"tab\", \"selector\"]\n  static values = {\n    sections: { type: Array, default: [] }\n  }\n\n  connect() {\n    this.setupIntersectionObserver()\n  }\n\n  disconnect() {\n    if (this.observer) {\n      this.observer.disconnect()\n    }\n  }\n\n  scrollToSection(event) {\n    event.preventDefault()\n\n    let sectionId\n\n    // Handle both click events (from tabs) and change events (from select)\n    if (event.type === \"click\") {\n      const tabElement = event.currentTarget\n      sectionId = tabElement.dataset.section\n    } else if (event.type === \"change\") {\n      sectionId = event.target.value\n    }\n\n    // Find the target element\n    const targetElement = document.getElementById(`${sectionId}-section`)\n\n    if (targetElement) {\n      // Calculate offset for fixed header if needed\n      const offset = 80 // Adjust this based on your header height\n      const elementPosition = targetElement.getBoundingClientRect().top\n      const offsetPosition = elementPosition + window.pageYOffset - offset\n\n      // Smooth scroll to the element\n      window.scrollTo({\n        top: offsetPosition,\n        behavior: \"smooth\"\n      })\n\n      // Update active tab styling\n      this.updateActiveTab(sectionId)\n    }\n  }\n\n  setupIntersectionObserver() {\n    // Use dynamic sections from value or fall back to defaults\n    const sectionIds = this.sectionsValue.length > 0\n      ? this.sectionsValue\n      : [\"details\", \"images\", \"variants\", \"print-files\", \"personalization\", \"keywords\"]\n\n    const sections = sectionIds\n      .map(id => document.getElementById(`${id}-section`))\n      .filter(el => el !== null)\n\n    if (sections.length === 0) return\n\n    // Create intersection observer\n    const options = {\n      root: null,\n      rootMargin: \"-20% 0% -70% 0%\",\n      threshold: 0\n    }\n\n    this.observer = new IntersectionObserver((entries) => {\n      entries.forEach(entry => {\n        if (entry.isIntersecting) {\n          const sectionId = entry.target.id.replace(\"-section\", \"\")\n          this.updateActiveTab(sectionId)\n          this.updateSelector(sectionId)\n        }\n      })\n    }, options)\n\n    // Observe all sections\n    sections.forEach(section => {\n      this.observer.observe(section)\n    })\n  }\n\n  updateActiveTab(sectionId) {\n    // Update desktop tabs styling (pz-tab stays as base, toggle pz-tab-active on top)\n    this.tabTargets.forEach(tab => {\n      if (tab.dataset.section === sectionId) {\n        tab.classList.add(\"pz-tab-active\")\n      } else {\n        tab.classList.remove(\"pz-tab-active\")\n      }\n    })\n  }\n\n  updateSelector(sectionId) {\n    // Update mobile selector to match current section\n    if (this.hasSelectorTarget) {\n      this.selectorTarget.value = sectionId\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"search-filter\"\nexport default class extends Controller {\n  static targets = [\"input\", \"item\"]\n\n  connect() {\n    this.filter()\n  }\n\n  filter() {\n    const query = this.inputTarget.value.toLowerCase().trim()\n    \n    this.itemTargets.forEach(item => {\n      const text = item.textContent.toLowerCase()\n      if (text.includes(query)) {\n        item.style.display = \"\"\n      } else {\n        item.style.display = \"none\"\n      }\n    })\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Section jump-nav for the listings canvas rail\n// (listings/canvas/_section_nav.html.erb). Two jobs:\n//  1. Smooth-scroll to a section on click (progressive enhancement - the\n//     link's plain #fragment href still jumps with zero JS).\n//  2. Scroll-spy: highlight whichever section frame is nearest the top of\n//     the viewport via IntersectionObserver (same pattern as\n//     catalog_nav_controller, adapted for the app-layer rail).\n//\n// Stimulus reconnects this controller on every canvas_footer turbo-stream\n// replace (autosave/sync) since the nav re-renders inside that frame -\n// disconnect() tears down the observer each time so replaced instances\n// never pile up watching detached frame elements.\nexport default class extends Controller {\n  static targets = [\"link\"]\n\n  connect() {\n    this.observer = new IntersectionObserver(\n      (entries) => this.handleIntersect(entries),\n      { rootMargin: \"-96px 0px -70% 0px\", threshold: 0 }\n    )\n\n    this.linkTargets.forEach((link) => {\n      const section = document.querySelector(link.getAttribute(\"href\"))\n      if (section) this.observer.observe(section)\n    })\n  }\n\n  disconnect() {\n    this.observer?.disconnect()\n    this.observer = null\n  }\n\n  jump(event) {\n    const href = event.currentTarget.getAttribute(\"href\")\n    const target = document.querySelector(href)\n    if (!target) return\n\n    event.preventDefault()\n    target.scrollIntoView({ behavior: \"smooth\", block: \"start\" })\n  }\n\n  handleIntersect(entries) {\n    entries.forEach((entry) => {\n      if (entry.isIntersecting) this.setActiveLink(entry.target.id)\n    })\n  }\n\n  setActiveLink(sectionId) {\n    this.linkTargets.forEach((link) => {\n      link.classList.toggle(\"is-active\", link.getAttribute(\"href\") === `#${sectionId}`)\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport TomSelect from \"tom-select\"\n\nexport default class extends Controller {\n  connect() {\n    this.select = new TomSelect(this.element)\n  }\n\n  disconnect() {\n    this.select.destroy()\n  }\n}\n", "import { Controller} from \"@hotwired/stimulus\";\nimport {Turbo} from \"@hotwired/turbo-rails\";\n\nexport default class extends Controller {\n  loadingImage = document.getElementById(\"loading-image\");\n\n  static targets = [\"actions\", \"productionDate\"]\n  static values = {\n    bulkUrl: String,\n    printfilesUrl: String,\n    workordersUrl: String\n  }\n\n  act(event) {\n    event.preventDefault();\n    let bulkUrl = this.bulkUrlValue;\n    let printFilesUrl = this.printfilesUrlValue;\n    let workordersUrl = this.workordersUrlValue;\n    let action = this.actionsTarget.value;\n    let productionDate = this.productionDateTarget.value;\n    let params = {\n      order_ids: this.selectedValues(),\n      bulk_action: action,\n      production_date: productionDate\n    }\n    // before calling the relevant action, show a loading/processing message\n    this.loadingImage.classList.remove(\"hidden\");\n\n    switch(action) {\n      case \"print_files\":\n        this.downloadFile(event, action, printFilesUrl, params);\n        break;\n      case \"workorders\":\n        this.downloadFile(event, action, workordersUrl, params);\n        break;\n      case \"production\":\n      case \"print\":\n      case \"packaging\":\n      case \"shipped\":\n      case \"cancel\":\n      case \"presets\":\n      case \"paid\":\n      case \"set_production_date\":\n      case \"labels\":\n        this.bulkAction(event, action, bulkUrl, params);\n        break;\n    }\n  }\n\n  downloadFile(event, action, url, params) {\n    fetch(url, {\n      method: 'POST',\n      headers: {\n        \"X-CSRF-Token\": this.csrfToken(),\n        \"Content-Type\": \"application/json\",\n        \"Accept\": \"text/html\",\n      },\n      body: JSON.stringify(params)\n    }).then(response => {\n      const contentDisposition = response.headers.get('Content-Disposition');\n      let filename = 'file.txt';\n      if (contentDisposition) {\n        const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n        let matches = filenameRegex.exec(contentDisposition);\n        if (matches != null && matches[1]) {\n          filename = matches[1].replace(/['\"]/g, '');\n        }\n      }\n      response.blob().then((data) => {\n        let objectUrl = URL.createObjectURL(data);\n        let objectLink = document.createElement('a');\n        objectLink.href = objectUrl;\n        objectLink.setAttribute('download', filename); // Use the extracted filename\n        document.body.appendChild(objectLink);\n        objectLink.click();\n        document.body.removeChild(objectLink);\n        this.cleanup();\n      });\n    })\n  }\n\n  bulkAction(event, action, url, params) {\n    fetch(url, {\n      method: 'POST',\n      headers: {\n        \"X-CSRF-Token\": this.csrfToken(),\n        \"Content-Type\": \"application/json\",\n        \"Accept\": \"text/vnd.turbo-stream.html\",\n      },\n      body: JSON.stringify(params)\n    }).then(response => response.text())\n      .then((html) => {\n        Turbo.renderStreamMessage(html);\n        this.cleanup();\n      })\n  }\n\n  selectedValues() {\n    let selected_orders = document.querySelectorAll(\"input[type=checkbox].order-id-checkbox:checked\");\n    let selected_values = []\n    selected_orders.forEach((order) => {\n      if(order.value !== \"on\") {\n        selected_values.push(order.value)\n      }\n    })\n    return selected_values\n  }\n\n  csrfToken() {\n    return document.querySelector(\"meta[name='csrf-token']\").getAttribute(\"content\");\n  }\n\n  uncheckAll() {\n    let check_all = document.getElementById(\"check-all\");\n    let checked_boxes = document.querySelectorAll(\"input[type=checkbox]:checked\");\n    checked_boxes.forEach((box) => {\n      box.checked = false;\n    });\n    if(check_all !== null) {\n      check_all.checked = false;\n      check_all.indeterminate = false;\n    }\n  }\n\n  cleanup() {\n    this.uncheckAll();\n    window.scrollTo(0, 0);\n    this.loadingImage.classList.add(\"hidden\");\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Adds a Turbo confirm dialog to the announcement form ONLY when the\n// send_email checkbox is checked, so an admin can't accidentally blast a mass\n// email. When unchecked, the form submits with no confirmation.\nexport default class extends Controller {\n  static values = { message: String }\n\n  connect() {\n    this.update()\n  }\n\n  update() {\n    const checkbox = this.element.querySelector(\"[data-send-email-confirm-target='checkbox']\")\n    if (checkbox && checkbox.checked) {\n      this.element.setAttribute(\"data-turbo-confirm\", this.messageValue)\n    } else {\n      this.element.removeAttribute(\"data-turbo-confirm\")\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static values = {\n    url: String,\n    locked: Boolean\n  }\n\n  toggle(event) {\n    if (this.lockedValue) {\n      event.preventDefault()\n      event.target.checked = !event.target.checked\n      return\n    }\n\n    const checked = event.target.checked\n\n    fetch(this.urlValue, {\n      method: 'PATCH',\n      headers: {\n        'Content-Type': 'application/json',\n        'X-CSRF-Token': document.querySelector('meta[name=\"csrf-token\"]').content\n      },\n      body: JSON.stringify({\n        order: {\n          shipping_upgrade: checked\n        }\n      })\n    }).then(response => {\n      if (!response.ok) {\n        event.target.checked = !checked // Revert the toggle if the request failed\n      }\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"sidebar\", \"content\", \"label\", \"logo\", \"catalogMenu\", \"collapseIcon\"]\n\n  connect() {\n    this.collapsed = localStorage.getItem(\"sidebarCollapsed\") === \"true\"\n    this.applyState()\n  }\n\n  toggle() {\n    this.collapsed = !this.collapsed\n    localStorage.setItem(\"sidebarCollapsed\", this.collapsed)\n    this.applyState()\n  }\n\n  applyState() {\n    if (this.collapsed) {\n      this.sidebarTarget.classList.remove(\"w-[220px]\")\n      this.sidebarTarget.classList.add(\"w-16\")\n      this.contentTarget.classList.remove(\"lg:pl-[220px]\")\n      this.contentTarget.classList.add(\"lg:pl-16\")\n      this.labelTargets.forEach(el => el.classList.add(\"hidden\"))\n      if (this.hasLogoTarget) this.logoTarget.classList.add(\"hidden\")\n      if (this.hasCatalogMenuTarget) this.catalogMenuTarget.classList.add(\"hidden\")\n      if (this.hasCollapseIconTarget) this.collapseIconTarget.classList.add(\"rotate-180\")\n    } else {\n      this.sidebarTarget.classList.remove(\"w-16\")\n      this.sidebarTarget.classList.add(\"w-[220px]\")\n      this.contentTarget.classList.remove(\"lg:pl-16\")\n      this.contentTarget.classList.add(\"lg:pl-[220px]\")\n      this.labelTargets.forEach(el => el.classList.remove(\"hidden\"))\n      if (this.hasLogoTarget) this.logoTarget.classList.remove(\"hidden\")\n      if (this.hasCollapseIconTarget) this.collapseIconTarget.classList.remove(\"rotate-180\")\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\n// Simple modal controller without Flowbite\nexport default class extends Controller {\n  static targets = [\"background\", \"container\"];\n  static values = { \n    open: { type: Boolean, default: false }\n  };\n\n  connect() {\n    if (this.openValue) {\n      this.show();\n    }\n  }\n\n  disconnect() {\n    // Clean up when controller is removed\n    this.element.remove();\n  }\n\n  show() {\n    this.element.classList.remove(\"hidden\");\n  }\n\n  hide() {\n    this.element.classList.add(\"hidden\");\n  }\n\n  close(event) {\n    if (event) {\n      event.preventDefault();\n    }\n    \n    // Instead of hiding, we'll submit a request to close the modal\n    // by replacing the turbo frame with an empty one\n    const turboFrame = document.getElementById(\"remote_modal\");\n    if (turboFrame) {\n      turboFrame.innerHTML = \"\";\n    }\n  }\n\n  // Close modal when clicking backdrop\n  closeOnBackdrop(event) {\n    if (event.target === event.currentTarget) {\n      this.close(event);\n    }\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"input\", \"preview\"]\n  static values = { sizes: Array, maxLength: { type: Number, default: 25 } }\n\n  connect() {\n    this.updatePreview()\n  }\n\n  updatePreview() {\n    const prefix = this.inputTarget.value.trim()\n    const container = this.previewTarget\n\n    if (!prefix || this.sizesValue.length === 0) {\n      container.innerHTML = \"\"\n      container.classList.add(\"hidden\")\n      return\n    }\n\n    container.classList.remove(\"hidden\")\n    container.innerHTML = this.sizesValue.map(size => {\n      const combined = `${prefix} ${size}`\n      const overLimit = combined.length > this.maxLengthValue\n      return `<span class=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-bold ${\n        overLimit\n          ? \"bg-red-50 text-red-600 border border-red-200\"\n          : \"bg-[rgba(59,42,143,.06)] text-[var(--ink)]\"\n      }\">${this._escapeHtml(combined)}${\n        overLimit ? `<span class=\"text-[10px] opacity-75\">${combined.length}</span>` : \"\"\n      }</span>`\n    }).join(\"\")\n  }\n\n  _escapeHtml(text) {\n    const div = document.createElement(\"div\")\n    div.textContent = text\n    return div.innerHTML\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"item\", \"position\"]\n  static values = {\n    url: String,\n    paramKey: { type: String, default: \"workflow_status_ids\" },\n    // When true, saveOrder requests a turbo-stream response and renders it\n    // (server-authoritative reorder - e.g. the listing canvas re-renders its\n    // product section + grid). Default false keeps the fire-and-forget JSON\n    // behavior every existing caller relies on.\n    renderResponse: { type: Boolean, default: false }\n  }\n\n  connect() {\n    this.draggedItem = null\n    this.itemTargets.forEach(item => {\n      item.setAttribute(\"draggable\", \"true\")\n      item.addEventListener(\"dragstart\", this.dragStart.bind(this))\n      item.addEventListener(\"dragover\", this.dragOver.bind(this))\n      item.addEventListener(\"dragenter\", this.dragEnter.bind(this))\n      item.addEventListener(\"dragleave\", this.dragLeave.bind(this))\n      item.addEventListener(\"drop\", this.drop.bind(this))\n      item.addEventListener(\"dragend\", this.dragEnd.bind(this))\n    })\n  }\n\n  dragStart(event) {\n    this.draggedItem = event.currentTarget\n    this.draggedItem.classList.add(\"opacity-50\")\n    event.dataTransfer.effectAllowed = \"move\"\n  }\n\n  dragOver(event) {\n    event.preventDefault()\n    event.dataTransfer.dropEffect = \"move\"\n  }\n\n  dragEnter(event) {\n    event.preventDefault()\n    const target = event.currentTarget\n    if (target !== this.draggedItem) {\n      target.classList.add(\"bg-blue-50\")\n    }\n  }\n\n  dragLeave(event) {\n    event.currentTarget.classList.remove(\"bg-blue-50\")\n  }\n\n  drop(event) {\n    event.preventDefault()\n    const target = event.currentTarget\n    target.classList.remove(\"bg-blue-50\")\n\n    if (target !== this.draggedItem && this.draggedItem) {\n      const allItems = [...this.itemTargets]\n      const draggedIndex = allItems.indexOf(this.draggedItem)\n      const targetIndex = allItems.indexOf(target)\n\n      if (draggedIndex < targetIndex) {\n        target.parentNode.insertBefore(this.draggedItem, target.nextSibling)\n      } else {\n        target.parentNode.insertBefore(this.draggedItem, target)\n      }\n\n      this.updatePositions()\n      this.saveOrder()\n    }\n  }\n\n  dragEnd() {\n    if (this.draggedItem) {\n      this.draggedItem.classList.remove(\"opacity-50\")\n      this.draggedItem = null\n    }\n    this.itemTargets.forEach(item => item.classList.remove(\"bg-blue-50\"))\n  }\n\n  // Keyboard-operable reorder (the accessible path alongside drag): move the\n  // button's card one slot up. Focusable buttons + Enter/Space mean a\n  // keyboard/screen-reader user is never locked out of reordering.\n  moveUp(event) {\n    const item = event.currentTarget.closest('[data-sortable-list-target~=\"item\"]')\n    const items = this.itemTargets\n    const index = items.indexOf(item)\n    if (index > 0) {\n      item.parentNode.insertBefore(item, items[index - 1])\n      this.updatePositions()\n      this.saveOrder()\n    }\n  }\n\n  // Keyboard-operable reorder: move the button's card one slot down.\n  moveDown(event) {\n    const item = event.currentTarget.closest('[data-sortable-list-target~=\"item\"]')\n    const items = this.itemTargets\n    const index = items.indexOf(item)\n    if (index > -1 && index < items.length - 1) {\n      item.parentNode.insertBefore(items[index + 1], item)\n      this.updatePositions()\n      this.saveOrder()\n    }\n  }\n\n  updatePositions() {\n    this.positionTargets.forEach((el, index) => {\n      el.textContent = index\n    })\n  }\n\n  async saveOrder() {\n    const orderedIds = this.itemTargets.map(item => item.dataset.id)\n    const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.content\n\n    const response = await fetch(this.urlValue, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"X-CSRF-Token\": csrfToken,\n        \"Accept\": this.renderResponseValue ? \"text/vnd.turbo-stream.html\" : \"application/json\"\n      },\n      body: JSON.stringify({ [this.paramKeyValue]: orderedIds })\n    })\n\n    if (this.renderResponseValue && response.ok) {\n      Turbo.renderStreamMessage(await response.text())\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Lazy-loads S&S Activewear inventory status for order items\nexport default class extends Controller {\n  static values = {\n    url: String,\n    loaded: { type: Boolean, default: false }\n  }\n\n  connect() {\n    // Only load once and only if URL is provided\n    if (!this.loadedValue && this.hasUrlValue && this.urlValue) {\n      this.loadInventory()\n    }\n  }\n\n  async loadInventory() {\n    try {\n      this.loadedValue = true\n\n      const response = await fetch(this.urlValue, {\n        headers: {\n          \"Accept\": \"text/vnd.turbo-stream.html\",\n          \"X-Requested-With\": \"XMLHttpRequest\"\n        },\n        credentials: \"same-origin\"\n      })\n\n      if (response.ok) {\n        const html = await response.text()\n        Turbo.renderStreamMessage(html)\n      } else {\n        console.error(\"[SsInventory] Failed to load inventory:\", response.status)\n      }\n    } catch (error) {\n      console.error(\"[SsInventory] Error loading inventory:\", error)\n    }\n  }\n\n  // Allow manual refresh\n  refresh() {\n    this.loadedValue = false\n    this.loadInventory()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\n    \"button\",\n    \"buttonText\",\n    \"spinner\",\n    \"feedback\"\n  ]\n\n  static values = {\n    url: String\n  }\n\n  async refresh(event) {\n    event.preventDefault()\n\n    // Show confirmation dialog\n    if (!confirm(\"This will overwrite existing images with fresh data from S&S Activewear. Continue?\")) {\n      return\n    }\n\n    // Show loading state\n    this.buttonTarget.disabled = true\n    this.buttonTextTarget.textContent = \"Refreshing...\"\n    this.spinnerTarget.classList.remove(\"hidden\")\n    this.hideFeedback()\n\n    try {\n      const response = await fetch(this.urlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"X-CSRF-Token\": document.querySelector('[name=\"csrf-token\"]').content,\n          \"Accept\": \"application/json\"\n        }\n      })\n\n      const data = await response.json()\n\n      if (response.ok && data.success) {\n        this.showSuccess(data.message)\n        // Reload page after brief delay to show updated images\n        setTimeout(() => {\n          window.location.reload()\n        }, 1500)\n      } else {\n        this.showError(data.error || \"Failed to refresh variant\")\n        this.resetButton()\n      }\n    } catch (error) {\n      this.showError(`An error occurred: ${error.message}`)\n      this.resetButton()\n    }\n  }\n\n  showSuccess(message) {\n    this.feedbackTarget.classList.remove(\"hidden\", \"bg-red-50\", \"border-red-400\", \"text-red-700\")\n    this.feedbackTarget.classList.add(\"bg-green-50\", \"border-green-400\", \"text-green-700\")\n    this.feedbackTarget.innerHTML = `\n      <div class=\"flex items-center\">\n        <svg class=\"h-5 w-5 text-green-400 mr-2\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n          <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\" />\n        </svg>\n        <span>${message}</span>\n      </div>\n    `\n  }\n\n  showError(message) {\n    this.feedbackTarget.classList.remove(\"hidden\", \"bg-green-50\", \"border-green-400\", \"text-green-700\")\n    this.feedbackTarget.classList.add(\"bg-red-50\", \"border-red-400\", \"text-red-700\")\n    this.feedbackTarget.innerHTML = `\n      <div class=\"flex items-center\">\n        <svg class=\"h-5 w-5 text-red-400 mr-2\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n          <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clip-rule=\"evenodd\" />\n        </svg>\n        <span>${message}</span>\n      </div>\n    `\n  }\n\n  hideFeedback() {\n    this.feedbackTarget.classList.add(\"hidden\")\n  }\n\n  resetButton() {\n    this.buttonTarget.disabled = false\n    this.buttonTextTarget.textContent = \"Refresh from S&S API\"\n    this.spinnerTarget.classList.add(\"hidden\")\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\n    \"step1\", \"step2\", \"step3\", \"step4\", \"step5\",\n    \"prevButton\", \"nextButton\", \"createButton\",\n    \"styleIdInput\", \"fetchButton\", \"fetchButtonText\", \"fetchSpinner\",\n    \"fetchError\", \"fetchErrorMessage\",\n    \"variantsTable\", \"selectAllCheckbox\",\n    \"totalCount\", \"existingCount\", \"linkableCount\", \"missingCount\", \"selectedCount\",\n    \"skuPatternPreview\", \"importImagesCheckbox\",\n    \"previewTable\", \"confirmSelectedCount\", \"confirmSummary\",\n    \"createButtonText\", \"createSpinner\",\n    \"createError\", \"createErrorMessage\",\n    \"progressBar\", \"progressBarFill\", \"progressPercent\",\n    \"progressCreated\", \"progressLinked\", \"progressSkipped\", \"progressErrored\",\n    \"progressCurrentVariant\", \"progressCurrentVariantLabel\", \"progressStatusMessage\",\n    \"progressErrors\", \"progressErrorsList\",\n    \"progressComplete\", \"progressCompleteMessage\", \"progressViewVariantsButton\"\n  ]\n\n  static values = {\n    fetchUrl: String,\n    createUrl: String,\n    redirectUrl: String,\n    statusUrl: String\n  }\n\n  currentStep = 1\n  variants = []\n  selectedVariants = new Set()\n  catalogItemSku = \"\"\n  importId = null\n  pollInterval = null\n\n  connect() {\n    this.updateButtons()\n  }\n\n  disconnect() {\n    this.stopPolling()\n  }\n\n  async fetchVariants() {\n    const styleId = this.styleIdInputTarget.value.trim()\n\n    if (!styleId) {\n      this.showFetchError(\"Please enter a style ID\")\n      return\n    }\n\n    // Show loading state\n    this.fetchButtonTarget.disabled = true\n    this.fetchButtonTextTarget.textContent = \"Fetching...\"\n    this.fetchSpinnerTarget.classList.remove(\"hidden\")\n    this.hideFetchError()\n\n    try {\n      const response = await fetch(this.fetchUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"X-CSRF-Token\": document.querySelector('[name=\"csrf-token\"]').content,\n          \"Accept\": \"application/json\"\n        },\n        body: JSON.stringify({ style_id: styleId })\n      })\n\n      const data = await response.json()\n\n      if (response.ok) {\n        this.variants = data.variants\n        this.catalogItemSku = data.catalog_item_sku || \"ITEM\"\n        this.populateVariantsTable()\n        this.updateCounts()\n        this.nextStep()\n      } else {\n        this.showFetchError(data.error || \"Failed to fetch variants\")\n      }\n    } catch (error) {\n      this.showFetchError(`An error occurred: ${error.message}`)\n    } finally {\n      this.fetchButtonTarget.disabled = false\n      this.fetchButtonTextTarget.textContent = \"Fetch Variants\"\n      this.fetchSpinnerTarget.classList.add(\"hidden\")\n    }\n  }\n\n  populateVariantsTable() {\n    let html = \"\"\n\n    this.variants.forEach((variant, index) => {\n      const isExisting = variant.status === \"exists\"\n      const isLinkable = variant.status === \"linkable\"\n      const isSelectable = !isExisting // Both new and linkable can be selected\n\n      let rowClass = \"\"\n      let statusBadge = \"\"\n\n      if (isExisting) {\n        rowClass = \"bg-gray-50\"\n        statusBadge = '<span class=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-gray-100 text-gray-800\">Mapped</span>'\n      } else if (isLinkable) {\n        rowClass = \"bg-yellow-50\"\n        statusBadge = '<span class=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800\">Linkable</span>'\n      } else {\n        statusBadge = '<span class=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800\">New</span>'\n      }\n\n      // Format stock quantity\n      const stock = variant.total_qty ? variant.total_qty.toLocaleString() : \"N/A\"\n\n      // Color swatch\n      const swatchHtml = variant.swatch_hex\n        ? `<span class=\"inline-block w-4 h-4 rounded-full mr-2 border border-gray-300\" style=\"background-color: ${variant.swatch_hex}\"></span>`\n        : \"\"\n\n      // Show existing SKU for linkable variants\n      const skuInfo = isLinkable && variant.existing_variant_sku\n        ? `<span class=\"block text-xs text-gray-400 mt-1\">\u2192 ${variant.existing_variant_sku}</span>`\n        : \"\"\n\n      html += `\n        <tr class=\"${rowClass}\" data-variant-index=\"${index}\">\n          <td class=\"px-4 py-3\">\n            <input type=\"checkbox\"\n                   data-variant-index=\"${index}\"\n                   data-action=\"change->ss-variant-import#toggleVariant\"\n                   ${!isSelectable ? \"disabled\" : \"\"}\n                   class=\"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded ${!isSelectable ? \"opacity-50\" : \"\"}\">\n          </td>\n          <td class=\"px-4 py-3 whitespace-nowrap text-sm\">\n            ${statusBadge}\n          </td>\n          <td class=\"px-4 py-3 whitespace-nowrap text-sm text-gray-900\">\n            ${swatchHtml}${variant.color_name}\n          </td>\n          <td class=\"px-4 py-3 whitespace-nowrap text-sm text-gray-900\">\n            ${variant.size_name}\n          </td>\n          <td class=\"px-4 py-3 whitespace-nowrap text-sm font-mono text-gray-500\">\n            ${variant.supplier_sku}${skuInfo}\n          </td>\n          <td class=\"px-4 py-3 whitespace-nowrap text-sm text-gray-500\">\n            ${stock}\n          </td>\n        </tr>\n      `\n    })\n\n    this.variantsTableTarget.innerHTML = html\n  }\n\n  updateCounts() {\n    const total = this.variants.length\n    const existing = this.variants.filter(v => v.status === \"exists\").length\n    const linkable = this.variants.filter(v => v.status === \"linkable\").length\n    const missing = this.variants.filter(v => v.status === \"new\").length\n\n    this.totalCountTarget.textContent = total\n    this.existingCountTarget.textContent = existing\n    if (this.hasLinkableCountTarget) {\n      this.linkableCountTarget.textContent = linkable\n    }\n    this.missingCountTarget.textContent = missing\n    this.selectedCountTarget.textContent = this.selectedVariants.size\n  }\n\n  toggleVariant(event) {\n    const index = parseInt(event.target.dataset.variantIndex)\n\n    if (event.target.checked) {\n      this.selectedVariants.add(index)\n    } else {\n      this.selectedVariants.delete(index)\n    }\n\n    this.selectedCountTarget.textContent = this.selectedVariants.size\n    this.updateSelectAllCheckbox()\n  }\n\n  toggleSelectAll(event) {\n    const checkboxes = this.variantsTableTarget.querySelectorAll('input[type=\"checkbox\"]:not(:disabled)')\n\n    checkboxes.forEach(checkbox => {\n      const index = parseInt(checkbox.dataset.variantIndex)\n      checkbox.checked = event.target.checked\n\n      if (event.target.checked) {\n        this.selectedVariants.add(index)\n      } else {\n        this.selectedVariants.delete(index)\n      }\n    })\n\n    this.selectedCountTarget.textContent = this.selectedVariants.size\n  }\n\n  selectAllNew() {\n    const checkboxes = this.variantsTableTarget.querySelectorAll('input[type=\"checkbox\"]:not(:disabled)')\n\n    checkboxes.forEach(checkbox => {\n      const index = parseInt(checkbox.dataset.variantIndex)\n      checkbox.checked = true\n      this.selectedVariants.add(index)\n    })\n\n    this.selectedCountTarget.textContent = this.selectedVariants.size\n    this.updateSelectAllCheckbox()\n  }\n\n  deselectAll() {\n    const checkboxes = this.variantsTableTarget.querySelectorAll('input[type=\"checkbox\"]')\n\n    checkboxes.forEach(checkbox => {\n      checkbox.checked = false\n    })\n\n    this.selectedVariants.clear()\n    this.selectedCountTarget.textContent = 0\n    if (this.hasSelectAllCheckboxTarget) {\n      this.selectAllCheckboxTarget.checked = false\n    }\n  }\n\n  updateSelectAllCheckbox() {\n    if (!this.hasSelectAllCheckboxTarget) return\n\n    const checkboxes = this.variantsTableTarget.querySelectorAll('input[type=\"checkbox\"]:not(:disabled)')\n    const allChecked = Array.from(checkboxes).every(cb => cb.checked)\n    this.selectAllCheckboxTarget.checked = allChecked && checkboxes.length > 0\n  }\n\n  nextStep() {\n    if (this.currentStep === 2 && this.selectedVariants.size === 0) {\n      alert(\"Please select at least one variant to import\")\n      return\n    }\n\n    if (this.currentStep === 3) {\n      this.populatePreviewTable()\n    }\n\n    this.currentStep++\n    this.showStep(this.currentStep)\n    this.updateButtons()\n  }\n\n  previousStep() {\n    this.currentStep--\n    this.showStep(this.currentStep)\n    this.updateButtons()\n  }\n\n  showStep(step) {\n    // Hide all steps\n    this.step1Target.classList.add(\"hidden\")\n    this.step2Target.classList.add(\"hidden\")\n    this.step3Target.classList.add(\"hidden\")\n    this.step4Target.classList.add(\"hidden\")\n    if (this.hasStep5Target) {\n      this.step5Target.classList.add(\"hidden\")\n    }\n\n    // Show current step\n    switch (step) {\n      case 1:\n        this.step1Target.classList.remove(\"hidden\")\n        break\n      case 2:\n        this.step2Target.classList.remove(\"hidden\")\n        this.updateSkuPatternPreview()\n        break\n      case 3:\n        this.step3Target.classList.remove(\"hidden\")\n        this.updateSkuPatternPreview()\n        break\n      case 4:\n        this.step4Target.classList.remove(\"hidden\")\n        this.updateConfirmationSummary()\n        break\n      case 5:\n        if (this.hasStep5Target) {\n          this.step5Target.classList.remove(\"hidden\")\n        }\n        break\n    }\n  }\n\n  updateButtons() {\n    // Hide all nav buttons on step 5\n    if (this.currentStep === 5) {\n      this.prevButtonTarget.classList.add(\"hidden\")\n      this.nextButtonTarget.classList.add(\"hidden\")\n      this.createButtonTarget.classList.add(\"hidden\")\n      return\n    }\n\n    this.prevButtonTarget.classList.remove(\"hidden\")\n\n    // Previous button\n    if (this.currentStep === 1) {\n      this.prevButtonTarget.disabled = true\n      this.prevButtonTarget.classList.add(\"opacity-50\", \"cursor-not-allowed\")\n    } else {\n      this.prevButtonTarget.disabled = false\n      this.prevButtonTarget.classList.remove(\"opacity-50\", \"cursor-not-allowed\")\n    }\n\n    // Next button - hidden on step 1 (use fetch instead) and step 4\n    if (this.currentStep === 1 || this.currentStep === 4) {\n      this.nextButtonTarget.classList.add(\"hidden\")\n    } else {\n      this.nextButtonTarget.classList.remove(\"hidden\")\n      this.nextButtonTarget.disabled = false\n    }\n\n    // Create button - only on step 4\n    if (this.currentStep === 4) {\n      this.createButtonTarget.classList.remove(\"hidden\")\n    } else {\n      this.createButtonTarget.classList.add(\"hidden\")\n    }\n  }\n\n  updateSkuPatternPreview() {\n    const pattern = `${this.catalogItemSku}-{color}-{size}`\n    if (this.hasSkuPatternPreviewTarget) {\n      this.skuPatternPreviewTarget.textContent = pattern\n    }\n  }\n\n  updateConfirmationSummary() {\n    const selectedIndices = Array.from(this.selectedVariants)\n    const newCount = selectedIndices.filter(i => this.variants[i].status === \"new\").length\n    const linkableCount = selectedIndices.filter(i => this.variants[i].status === \"linkable\").length\n\n    this.confirmSelectedCountTarget.textContent = this.selectedVariants.size\n\n    if (this.hasConfirmSummaryTarget) {\n      const parts = []\n      if (newCount > 0) parts.push(`create <strong>${newCount}</strong> new`)\n      if (linkableCount > 0) parts.push(`link <strong>${linkableCount}</strong> existing`)\n\n      if (parts.length > 0) {\n        this.confirmSummaryTarget.innerHTML = `Ready to ${parts.join(\" and \")} variant(s)`\n      } else {\n        this.confirmSummaryTarget.innerHTML = `Ready to import <strong>${this.selectedVariants.size}</strong> variants`\n      }\n    }\n  }\n\n  populatePreviewTable() {\n    let html = \"\"\n\n    this.selectedVariants.forEach(index => {\n      const variant = this.variants[index]\n      const isLinkable = variant.status === \"linkable\"\n\n      // Show different action and SKU based on status\n      let actionBadge, skuDisplay\n\n      if (isLinkable) {\n        actionBadge = '<span class=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800\">Link</span>'\n        skuDisplay = variant.existing_variant_sku || this.generateSku(variant)\n      } else {\n        actionBadge = '<span class=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800\">Create</span>'\n        skuDisplay = this.generateSku(variant)\n      }\n\n      html += `\n        <tr>\n          <td class=\"px-4 py-3 whitespace-nowrap text-sm\">${actionBadge}</td>\n          <td class=\"px-4 py-3 whitespace-nowrap text-sm font-mono text-gray-900\">${skuDisplay}</td>\n          <td class=\"px-4 py-3 whitespace-nowrap text-sm text-gray-900\">${variant.color_name}</td>\n          <td class=\"px-4 py-3 whitespace-nowrap text-sm text-gray-900\">${variant.size_name}</td>\n        </tr>\n      `\n    })\n\n    this.previewTableTarget.innerHTML = html\n  }\n\n  generateSku(variant) {\n    // Generate SKU using pattern: {catalog_item_sku}-{color}-{size}\n    const color = this.sanitizeSkuPart(variant.color_name)\n    const size = this.sanitizeSkuPart(variant.size_name)\n    return `${this.catalogItemSku}-${color}-${size}`.toUpperCase()\n  }\n\n  sanitizeSkuPart(value) {\n    if (!value) return \"\"\n    return value\n      .toUpperCase()\n      .replace(/[^A-Z0-9]+/g, \"-\")\n      .replace(/^-|-$/g, \"\")\n      .replace(/-+/g, \"-\")\n  }\n\n  async createVariants() {\n    // Show loading state on button while request is sent\n    this.createButtonTarget.disabled = true\n    this.createButtonTextTarget.textContent = \"Starting...\"\n    this.createSpinnerTarget.classList.remove(\"hidden\")\n    this.hideCreateError()\n\n    // Build selected variants data\n    const selectedVariantsData = Array.from(this.selectedVariants).map(index => {\n      const variant = this.variants[index]\n      return {\n        status: variant.status,\n        existing_variant_id: variant.existing_variant_id,\n        supplier_sku: variant.supplier_sku,\n        supplier_style: variant.supplier_style,\n        supplier_color_code: variant.supplier_color_code,\n        supplier_size_code: variant.supplier_size_code,\n        color_option_id: variant.color_option_id,\n        size_option_id: variant.size_option_id,\n        color_name: variant.color_name,\n        size_name: variant.size_name,\n        swatch_hex: variant.swatch_hex,\n        swatch_image_url: variant.swatch_image_url,\n        front_image_url: variant.front_image_url,\n        back_image_url: variant.back_image_url,\n        side_image_url: variant.side_image_url\n      }\n    })\n\n    const importImages = this.hasImportImagesCheckboxTarget ? this.importImagesCheckboxTarget.checked : true\n\n    try {\n      const response = await fetch(this.createUrlValue, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"X-CSRF-Token\": document.querySelector('[name=\"csrf-token\"]').content,\n          \"Accept\": \"application/json\"\n        },\n        body: JSON.stringify({\n          selected_variants: selectedVariantsData,\n          import_images: importImages\n        })\n      })\n\n      const data = await response.json()\n\n      if (response.ok && data.status === \"queued\") {\n        this.importId = data.import_id\n        this.currentStep = 5\n        this.showStep(5)\n        this.updateButtons()\n        this.startPolling()\n      } else {\n        const errors = data.errors || [data.error || \"An error occurred\"]\n        this.showCreateError(errors.join(\", \"))\n        this.createButtonTarget.disabled = false\n        this.createButtonTextTarget.textContent = \"Import Variants\"\n        this.createSpinnerTarget.classList.add(\"hidden\")\n      }\n    } catch (error) {\n      this.showCreateError(`An error occurred: ${error.message}`)\n      this.createButtonTarget.disabled = false\n      this.createButtonTextTarget.textContent = \"Import Variants\"\n      this.createSpinnerTarget.classList.add(\"hidden\")\n    }\n  }\n\n  startPolling() {\n    this.pollStatus()\n    this.pollInterval = setInterval(() => this.pollStatus(), 2000)\n  }\n\n  stopPolling() {\n    if (this.pollInterval) {\n      clearInterval(this.pollInterval)\n      this.pollInterval = null\n    }\n  }\n\n  async pollStatus() {\n    if (!this.importId) return\n\n    try {\n      const url = `${this.statusUrlValue}?import_id=${this.importId}`\n      const response = await fetch(url, {\n        headers: { \"Accept\": \"application/json\" }\n      })\n\n      if (!response.ok) return\n\n      const data = await response.json()\n      this.updateProgressUI(data)\n\n      if (data.status === \"completed\" || data.status === \"failed\") {\n        this.stopPolling()\n        this.showCompletionState(data)\n      }\n    } catch (error) {\n      // Silently ignore polling errors - will retry on next interval\n    }\n  }\n\n  updateProgressUI(data) {\n    const total = data.total || 1\n    const processed = data.processed || 0\n    const percent = Math.round((processed / total) * 100)\n\n    // Progress bar\n    if (this.hasProgressBarFillTarget) {\n      this.progressBarFillTarget.style.width = `${percent}%`\n    }\n    if (this.hasProgressPercentTarget) {\n      this.progressPercentTarget.textContent = `${percent}%`\n    }\n\n    // Status message\n    if (this.hasProgressStatusMessageTarget) {\n      if (data.status === \"queued\") {\n        this.progressStatusMessageTarget.textContent = \"Starting import...\"\n      } else {\n        this.progressStatusMessageTarget.textContent = `${processed} of ${total} variants processed`\n      }\n    }\n\n    // Current variant label\n    if (this.hasProgressCurrentVariantTarget && this.hasProgressCurrentVariantLabelTarget) {\n      if (data.current_variant) {\n        this.progressCurrentVariantTarget.classList.remove(\"hidden\")\n        this.progressCurrentVariantLabelTarget.textContent = data.current_variant\n      } else {\n        this.progressCurrentVariantTarget.classList.add(\"hidden\")\n      }\n    }\n\n    // Stats counters\n    if (this.hasProgressCreatedTarget) this.progressCreatedTarget.textContent = data.created || 0\n    if (this.hasProgressLinkedTarget) this.progressLinkedTarget.textContent = data.linked || 0\n    if (this.hasProgressSkippedTarget) this.progressSkippedTarget.textContent = data.skipped || 0\n    if (this.hasProgressErroredTarget) this.progressErroredTarget.textContent = data.errored || 0\n\n    // Errors list\n    if (this.hasProgressErrorsTarget && this.hasProgressErrorsListTarget) {\n      const errors = data.errors || []\n      if (errors.length > 0) {\n        this.progressErrorsTarget.classList.remove(\"hidden\")\n        this.progressErrorsListTarget.innerHTML = errors\n          .map(e => `<li>${this.escapeHtml(e)}</li>`)\n          .join(\"\")\n      }\n    }\n  }\n\n  showCompletionState(data) {\n    // Hide current variant label\n    if (this.hasProgressCurrentVariantTarget) {\n      this.progressCurrentVariantTarget.classList.add(\"hidden\")\n    }\n\n    // Change progress bar to green on success, red on failure\n    if (this.hasProgressBarFillTarget) {\n      this.progressBarFillTarget.style.width = \"100%\"\n      if (data.status === \"failed\") {\n        this.progressBarFillTarget.classList.remove(\"bg-blue-600\")\n        this.progressBarFillTarget.classList.add(\"bg-red-600\")\n      } else {\n        this.progressBarFillTarget.classList.remove(\"bg-blue-600\")\n        this.progressBarFillTarget.classList.add(\"bg-green-600\")\n      }\n    }\n\n    if (this.hasProgressPercentTarget) {\n      this.progressPercentTarget.textContent = \"100%\"\n    }\n\n    // Status message\n    if (this.hasProgressStatusMessageTarget) {\n      if (data.status === \"failed\") {\n        this.progressStatusMessageTarget.textContent = \"Import failed\"\n      } else {\n        this.progressStatusMessageTarget.textContent = `All ${data.total} variants processed`\n      }\n    }\n\n    // Show completion section\n    if (this.hasProgressCompleteTarget) {\n      this.progressCompleteTarget.classList.remove(\"hidden\")\n\n      if (this.hasProgressCompleteMessageTarget) {\n        const parts = []\n        if (data.created > 0) parts.push(`${data.created} created`)\n        if (data.linked > 0) parts.push(`${data.linked} linked`)\n        if (data.skipped > 0) parts.push(`${data.skipped} skipped`)\n        if (data.errored > 0) parts.push(`${data.errored} errors`)\n\n        const imageNote = data.image_jobs_queued > 0 ? ` (${data.image_jobs_queued} image imports queued)` : \"\"\n        this.progressCompleteMessageTarget.textContent = `Import complete! ${parts.join(\", \")}${imageNote}`\n      }\n\n      if (this.hasProgressViewVariantsButtonTarget && data.redirect_url) {\n        this.progressViewVariantsButtonTarget.href = data.redirect_url\n      }\n    }\n  }\n\n  escapeHtml(text) {\n    const div = document.createElement(\"div\")\n    div.textContent = text\n    return div.innerHTML\n  }\n\n  showFetchError(message) {\n    this.fetchErrorTarget.classList.remove(\"hidden\")\n    this.fetchErrorMessageTarget.textContent = message\n  }\n\n  hideFetchError() {\n    this.fetchErrorTarget.classList.add(\"hidden\")\n  }\n\n  showCreateError(message) {\n    this.createErrorTarget.classList.remove(\"hidden\")\n    this.createErrorMessageTarget.textContent = message\n  }\n\n  hideCreateError() {\n    this.createErrorTarget.classList.add(\"hidden\")\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"container\", \"dropdown\", \"buttonText\", \"selectAll\"]\n\n  connect() {\n    // Close dropdown when clicking outside\n    document.addEventListener(\"click\", this.closeOnOutsideClick.bind(this))\n  }\n\n  disconnect() {\n    document.removeEventListener(\"click\", this.closeOnOutsideClick.bind(this))\n  }\n\n  toggle(event) {\n    event.stopPropagation()\n    this.dropdownTarget.classList.toggle(\"hidden\")\n  }\n\n  closeOnOutsideClick(event) {\n    if (!this.containerTarget.contains(event.target)) {\n      this.dropdownTarget.classList.add(\"hidden\")\n    }\n  }\n\n  toggleAll(event) {\n    const isChecked = event.target.checked\n    const checkboxes = this.dropdownTarget.querySelectorAll('input[name=\"order_statuses[]\"]')\n    \n    checkboxes.forEach(checkbox => {\n      checkbox.checked = isChecked\n    })\n    \n    this.updateButtonText()\n    \n    // Trigger form submission\n    this.element.closest(\"form\").requestSubmit()\n  }\n\n  updateSelection() {\n    const checkboxes = this.dropdownTarget.querySelectorAll('input[name=\"order_statuses[]\"]')\n    const checkedCount = Array.from(checkboxes).filter(cb => cb.checked).length\n    const totalCount = checkboxes.length\n    \n    // Update \"Select All\" checkbox state\n    this.selectAllTarget.checked = checkedCount === totalCount\n    this.selectAllTarget.indeterminate = checkedCount > 0 && checkedCount < totalCount\n    \n    this.updateButtonText()\n  }\n\n  updateButtonText() {\n    const checkboxes = this.dropdownTarget.querySelectorAll('input[name=\"order_statuses[]\"]')\n    const checkedCount = Array.from(checkboxes).filter(cb => cb.checked).length\n    \n    this.buttonTextTarget.textContent = `Order Status (${checkedCount} selected)`\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Sticky Table of Contents controller for help articles\n// Highlights the current section in the TOC based on scroll position\nexport default class extends Controller {\n  static targets = [\"list\", \"link\"]\n\n  connect() {\n    this.headings = []\n    this.collectHeadings()\n\n    if (this.headings.length > 0) {\n      this.handleScroll = this.handleScroll.bind(this)\n      window.addEventListener(\"scroll\", this.handleScroll, { passive: true })\n      this.handleScroll()\n    }\n  }\n\n  disconnect() {\n    if (this.headings.length > 0) {\n      window.removeEventListener(\"scroll\", this.handleScroll)\n    }\n  }\n\n  collectHeadings() {\n    // Find all headings that have IDs in the article content\n    const article = document.querySelector(\"[data-controller='article-content']\")\n    if (!article) return\n\n    const headingElements = article.querySelectorAll(\"h2[id], h3[id]\")\n    headingElements.forEach(heading => {\n      this.headings.push({\n        id: heading.id,\n        top: heading.offsetTop\n      })\n    })\n  }\n\n  handleScroll() {\n    const scrollPosition = window.scrollY + 100 // Offset for sticky header\n\n    // Find the current heading\n    let currentId = null\n    for (let i = this.headings.length - 1; i >= 0; i--) {\n      if (scrollPosition >= this.headings[i].top) {\n        currentId = this.headings[i].id\n        break\n      }\n    }\n\n    // Update link styles\n    this.linkTargets.forEach(link => {\n      const href = link.getAttribute(\"href\")\n      if (href === `#${currentId}`) {\n        link.classList.remove(\"text-pz-ink/55\")\n        link.classList.add(\"text-pz-purple\", \"font-medium\")\n      } else {\n        link.classList.remove(\"text-pz-purple\", \"font-medium\")\n        link.classList.add(\"text-pz-ink/55\")\n      }\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Reveals the shared Stock Command details drawer (#1156). The Details link\n// carries data-turbo-frame=\"sc-detail\", so Turbo lazy-loads the item's content\n// into the drawer's frame while this controller slides the panel in.\nexport default class extends Controller {\n  static targets = [\"panel\", \"overlay\", \"help\"]\n\n  open() {\n    this.panelTarget.classList.add(\"open\")\n    this.overlayTarget.classList.add(\"open\")\n  }\n\n  close() {\n    this.panelTarget.classList.remove(\"open\")\n    this.overlayTarget.classList.remove(\"open\")\n  }\n\n  openHelp() {\n    this.helpTarget.classList.add(\"open\")\n  }\n\n  closeHelp() {\n    this.helpTarget.classList.remove(\"open\")\n  }\n\n  // Close only when the overlay backdrop itself is clicked, not its content.\n  closeHelpBackground(event) {\n    if (event.target === this.helpTarget) this.closeHelp()\n  }\n\n  // Escape closes whichever surface is open.\n  onKeydown(event) {\n    if (event.key !== \"Escape\") return\n    this.close()\n    this.closeHelp()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"addressElement\", \"paymentElement\", \"error\", \"form\"]\n  static values = {\n    clientSecret: String,\n    returnUrl: String,\n    name: String\n  }\n\n  connect() {\n    this.stripe = Stripe(this.stripeKey)\n    let theme = document.documentElement.classList.contains(\"dark\") ? \"night\" : \"stripe\";\n    this.elements = this.stripe.elements({\n      appearance: {\n        theme: theme,\n        variables: {\n          fontSizeBase: \"14px\"\n        }\n      },\n      clientSecret: this.clientSecretValue\n    })\n\n    this.paymentElement = this.elements.create(\"payment\")\n    this.paymentElement.mount(this.paymentElementTarget)\n\n    if (this.hasAddressElementTarget) {\n      this.addressElement = this.elements.create('address', {\n        mode: 'billing',\n        defaultValues: {\n          name: this.nameValue\n        }\n      });\n      this.addressElement.mount(this.addressElementTarget)\n    }\n  }\n\n  changed(event) {\n    if (event.error) {\n      this.errorTarget.textContent = event.error.message\n    } else {\n      this.errorTarget.textContent = \"\"\n    }\n  }\n\n  async submit(event) {\n    event.preventDefault()\n\n    // Payment Intents\n    if (this.clientSecretValue.startsWith(\"pi_\")) {\n      const { error } = await this.stripe.confirmPayment({\n        elements: this.elements,\n        confirmParams: {\n          return_url: this.returnUrlValue,\n        },\n      });\n      this.showError(error)\n\n    // Setup Intents\n    } else {\n      const { error } = await this.stripe.confirmSetup({\n        elements: this.elements,\n        confirmParams: {\n          return_url: this.returnUrlValue,\n        },\n      });\n      this.showError(error)\n    }\n  }\n\n  showError(error) {\n    this.errorTarget.textContent = error.message\n  }\n\n  get stripeKey() {\n    return document.querySelector('meta[name=\"stripe-key\"]').getAttribute(\"content\")\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Stops impatient double-clicks from submitting the product form twice and\n// minting duplicate products (issue #962). On the first submit it locks the\n// submit button(s) and swaps the label to \"Saving\u2026\" for instant feedback;\n// further submits are blocked while one is in flight. Works whether or not\n// Turbo is enabled on the form (the new-product form has Turbo on, the legacy\n// modal form has it off). Resets when a submission ends without navigating\n// (e.g. a 422 re-render) or the page is restored from the back/forward cache,\n// so the button never gets stuck disabled.\nexport default class extends Controller {\n  static targets = [\"button\"]\n  static values = { label: { type: String, default: \"Saving\u2026\" } }\n\n  connect() {\n    this.reset = this.reset.bind(this)\n    this.element.addEventListener(\"turbo:submit-end\", this.reset)\n    window.addEventListener(\"pageshow\", this.reset)\n  }\n\n  disconnect() {\n    this.element.removeEventListener(\"turbo:submit-end\", this.reset)\n    window.removeEventListener(\"pageshow\", this.reset)\n  }\n\n  lock(event) {\n    // Another handler (e.g. variant validation) already blocked this submit.\n    if (event.defaultPrevented) return\n\n    if (this.locked) {\n      event.preventDefault()\n      return\n    }\n    this.locked = true\n\n    // Defer disabling until after the browser serializes the form, otherwise a\n    // disabled submit button is omitted from the POST.\n    requestAnimationFrame(() => this.#disable())\n  }\n\n  reset() {\n    this.locked = false\n    this.buttonTargets.forEach((button) => {\n      button.disabled = false\n      if (button.dataset.guardLabel) button.innerHTML = button.dataset.guardLabel\n    })\n  }\n\n  #disable() {\n    this.buttonTargets.forEach((button) => {\n      button.dataset.guardLabel ||= button.innerHTML\n      button.disabled = true\n      button.textContent = this.labelValue\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// In-button loading state for a single submit button living in its own\n// sibling <form> (standards/ui-styleguide.md \u00A7 Feedback: spinners are for\n// in-button progress only - swap the icon, present-tense the label, disable).\n// Connects directly to the <button> (data-controller=\"submit-spinner\" on the\n// button itself), so any plain button_to form can opt in with no extra target\n// wiring.\n//\n// The spinner starts on the form's turbo:submit-start, NEVER on the button's\n// own click: disabling a submit button inside its click handler cancels the\n// form submission (the browser re-checks the submitter before running the\n// default action), so a click-wired spinner spun forever while no request\n// ever left the page (#1180). By turbo:submit-start the submission is already\n// in flight, so disabling is safe.\n//\n// The canvas \"Refresh from Etsy\" controls are this controller's first use:\n// the button lives INSIDE the turbo-frame it refreshes, so a successful\n// turbo_stream response replaces the whole frame (button included) and the\n// spinner state disappears naturally. turbo:submit-end still resets the\n// button as a fallback (network error, non-turbo-stream response) so it can\n// never get stuck disabled/spinning.\nexport default class extends Controller {\n  static values = { label: { type: String, default: \"Refreshing\u2026\" } }\n\n  connect() {\n    this.reset = this.reset.bind(this)\n    this.start = this.start.bind(this)\n    this.form = this.element.closest(\"form\")\n    this.form?.addEventListener(\"turbo:submit-start\", this.start)\n    this.form?.addEventListener(\"turbo:submit-end\", this.reset)\n  }\n\n  disconnect() {\n    this.form?.removeEventListener(\"turbo:submit-start\", this.start)\n    this.form?.removeEventListener(\"turbo:submit-end\", this.reset)\n  }\n\n  start() {\n    if (this.element.disabled) return\n\n    this.originalHTML = this.element.innerHTML\n    this.element.disabled = true\n    this.element.innerHTML = `\n      <svg class=\"pz-spin h-3.5 w-3.5\" viewBox=\"0 0 24 24\" fill=\"none\">\n        <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"3\" opacity=\"0.25\"/>\n        <path d=\"M21 12a9 9 0 0 0-9-9\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n      </svg>\n      <span>${this.labelValue}</span>\n    `\n  }\n\n  reset() {\n    if (this.originalHTML === undefined) return\n\n    this.element.disabled = false\n    this.element.innerHTML = this.originalHTML\n    this.originalHTML = undefined\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Manages the support ticket filter UI with dropdowns and multi-select\nexport default class extends Controller {\n  static targets = [\n    \"form\",\n    // Dropdowns\n    \"accountDropdown\", \"priorityDropdown\", \"categoryDropdown\", \"assigneeDropdown\",\n    // Count badges\n    \"accountCount\", \"priorityCount\", \"categoryCount\", \"assigneeCount\",\n    // Search inputs\n    \"accountSearch\",\n    // Filter items\n    \"accountItem\"\n  ]\n\n  // Filter name -> the checkbox param it counts, for the \"3\" badge on each button.\n  static COUNTED_FILTERS = {\n    account: \"account_ids[]\",\n    priority: \"priorities[]\",\n    category: \"categories[]\",\n    assignee: \"assigned_to_ids[]\"\n  }\n\n  connect() {\n    this.openDropdown = null\n\n    // Initialize counts\n    setTimeout(() => {\n      this.updateAllCounts()\n    }, 0)\n\n    // Close dropdowns when clicking outside\n    this.boundCloseDropdowns = this.closeDropdownsOnOutsideClick.bind(this)\n    document.addEventListener(\"click\", this.boundCloseDropdowns)\n  }\n\n  disconnect() {\n    document.removeEventListener(\"click\", this.boundCloseDropdowns)\n  }\n\n  toggleDropdown(event) {\n    event.preventDefault()\n    event.stopPropagation()\n\n    const dropdownName = event.params.dropdown\n    const dropdown = this[`${dropdownName}DropdownTarget`]\n\n    if (this.openDropdown && this.openDropdown !== dropdown) {\n      this.openDropdown.classList.add(\"hidden\")\n    }\n\n    dropdown.classList.toggle(\"hidden\")\n    this.openDropdown = dropdown.classList.contains(\"hidden\") ? null : dropdown\n  }\n\n  closeDropdownsOnOutsideClick(event) {\n    if (this.openDropdown && !this.element.contains(event.target)) {\n      this.openDropdown.classList.add(\"hidden\")\n      this.openDropdown = null\n    }\n  }\n\n  updateCounts() {\n    this.updateAllCounts()\n  }\n\n  updateAllCounts() {\n    Object.entries(this.constructor.COUNTED_FILTERS).forEach(([name, param]) => {\n      if (!this[`has${name[0].toUpperCase()}${name.slice(1)}CountTarget`]) return\n\n      const count = this.formTarget.querySelectorAll(`input[name=\"${param}\"]:checked`).length\n      this.updateCountBadge(this[`${name}CountTarget`], count)\n    })\n  }\n\n  updateCountBadge(badge, count) {\n    if (count > 0) {\n      badge.textContent = count\n      badge.classList.remove(\"hidden\")\n    } else {\n      badge.classList.add(\"hidden\")\n    }\n  }\n\n  filterAccounts(event) {\n    const searchTerm = event.target.value.toLowerCase()\n\n    this.accountItemTargets.forEach(item => {\n      const label = item.querySelector('label').textContent.toLowerCase()\n      if (label.includes(searchTerm)) {\n        item.style.display = ''\n      } else {\n        item.style.display = 'none'\n      }\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"tab\", \"content\"]\n\n  connect() {\n    this.showTab(\"active\")\n  }\n\n  // switchTab(event) {\n  //   event.preventDefault()\n  //   const tabName = event.currentTarget.dataset.tab\n  //   this.showTab(tabName)\n  // }\n\n  switchTab(event) {\n    event.preventDefault()\n    const tab = event.currentTarget.dataset.tab\n    const url = new URL(window.location.href)\n    url.searchParams.set(\"tab\", tab)\n    Turbo.visit(url.toString())\n  }\n\n  showTab(tabName) {\n    this.tabTargets.forEach((tab) => {\n      if (tab.dataset.tab === tabName) {\n        tab.classList.add(\"border-indigo-500\", \"text-indigo-600\")\n        tab.classList.remove(\"border-transparent\", \"text-gray-500\", \"hover:text-gray-700\", \"hover:border-gray-300\")\n      } else {\n        tab.classList.remove(\"border-indigo-500\", \"text-indigo-600\")\n        tab.classList.add(\"border-transparent\", \"text-gray-500\", \"hover:text-gray-700\", \"hover:border-gray-300\")\n      }\n    })\n\n    this.contentTargets.forEach((content) => {\n      if (content.dataset.tab === tabName) {\n        content.classList.remove(\"hidden\")\n      } else {\n        content.classList.add(\"hidden\")\n      }\n    })\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"input\", \"display\", \"dropdown\", \"search\", \"results\", \"selected\"]\n  static values = { \n    url: String,\n    selectedId: Number,\n    selectedName: String,\n    selectedPath: String\n  }\n\n  connect() {\n    this.hideDropdown = this.hideDropdown.bind(this)\n    if (this.selectedIdValue) {\n      this.updateDisplay()\n    }\n  }\n\n  disconnect() {\n    document.removeEventListener(\"click\", this.hideDropdown)\n  }\n\n  toggleDropdown(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    \n    if (this.dropdownTarget.classList.contains(\"hidden\")) {\n      this.showDropdown()\n    } else {\n      this.hideDropdown()\n    }\n  }\n\n  showDropdown() {\n    this.dropdownTarget.classList.remove(\"hidden\")\n    this.searchTarget.focus()\n    document.addEventListener(\"click\", this.hideDropdown)\n    \n    // Load initial results if empty\n    if (!this.resultsTarget.innerHTML.trim()) {\n      this.loadPopularTaxonomies()\n    }\n  }\n\n  hideDropdown(event) {\n    if (event && this.element.contains(event.target)) {\n      return\n    }\n    \n    this.dropdownTarget.classList.add(\"hidden\")\n    document.removeEventListener(\"click\", this.hideDropdown)\n  }\n\n  async search(event) {\n    const query = event.target.value.trim()\n    \n    if (query.length < 2) {\n      this.loadPopularTaxonomies()\n      return\n    }\n\n    // Debounce search\n    clearTimeout(this.searchTimeout)\n    this.searchTimeout = setTimeout(() => {\n      this.performSearch(query)\n    }, 300)\n  }\n\n  async performSearch(query) {\n    this.resultsTarget.innerHTML = '<div class=\"p-4 text-center text-gray-500\">Searching...</div>'\n    \n    try {\n      const response = await fetch(`${this.urlValue}?query=${encodeURIComponent(query)}`, {\n        headers: {\n          'Accept': 'application/json',\n          'X-Requested-With': 'XMLHttpRequest'\n        }\n      })\n      \n      if (!response.ok) throw new Error('Search failed')\n      \n      const data = await response.json()\n      this.displayResults(data.taxonomies || [])\n    } catch (error) {\n      console.error('Search error:', error)\n      this.resultsTarget.innerHTML = '<div class=\"p-4 text-center text-red-500\">Search failed. Please try again.</div>'\n    }\n  }\n\n  async loadPopularTaxonomies() {\n    this.resultsTarget.innerHTML = '<div class=\"p-4 text-center text-gray-500\">Loading...</div>'\n    \n    try {\n      const response = await fetch(`${this.urlValue}?popular=true`, {\n        headers: {\n          'Accept': 'application/json',\n          'X-Requested-With': 'XMLHttpRequest'\n        }\n      })\n      \n      if (!response.ok) throw new Error('Failed to load taxonomies')\n      \n      const data = await response.json()\n      this.displayResults(data.taxonomies || [])\n    } catch (error) {\n      console.error('Load error:', error)\n      this.resultsTarget.innerHTML = '<div class=\"p-4 text-center text-red-500\">Failed to load taxonomies.</div>'\n    }\n  }\n\n  displayResults(taxonomies) {\n    if (taxonomies.length === 0) {\n      this.resultsTarget.innerHTML = '<div class=\"p-4 text-center text-gray-500\">No taxonomies found</div>'\n      return\n    }\n\n    const html = taxonomies.map(taxonomy => `\n      <button type=\"button\"\n              class=\"w-full text-left px-4 py-2 hover:bg-gray-100 focus:bg-gray-100 focus:outline-none border-b\"\n              data-action=\"click->taxonomy-selector#selectTaxonomy\"\n              data-taxonomy-id=\"${taxonomy.etsy_id}\"\n              data-taxonomy-name=\"${this.escapeHtml(taxonomy.name)}\"\n              data-taxonomy-path=\"${this.escapeHtml(taxonomy.path || taxonomy.name)}\">\n        <div class=\"font-medium text-gray-900\">${this.escapeHtml(taxonomy.name)}</div>\n        ${taxonomy.path ? `<div class=\"text-sm text-gray-500\">${this.escapeHtml(taxonomy.path)}</div>` : ''}\n        <div class=\"text-xs text-gray-400 mt-1\">ID: ${taxonomy.etsy_id} | Level: ${taxonomy.level}</div>\n      </button>\n    `).join('')\n\n    this.resultsTarget.innerHTML = html\n  }\n\n  selectTaxonomy(event) {\n    event.preventDefault()\n    \n    const button = event.currentTarget\n    this.selectedIdValue = parseInt(button.dataset.taxonomyId)\n    this.selectedNameValue = button.dataset.taxonomyName\n    this.selectedPathValue = button.dataset.taxonomyPath\n    \n    this.updateDisplay()\n    this.updateHiddenInput()\n    this.hideDropdown()\n    \n    // Clear search\n    this.searchTarget.value = ''\n  }\n\n  updateDisplay() {\n    if (this.hasSelectedTarget) {\n      if (this.selectedIdValue) {\n        this.selectedTarget.innerHTML = `\n          <div class=\"flex items-center justify-between\">\n            <div>\n              <div class=\"font-medium\">${this.escapeHtml(this.selectedNameValue)}</div>\n              <div class=\"text-sm text-gray-500\">${this.escapeHtml(this.selectedPathValue)}</div>\n            </div>\n            <button type=\"button\" \n                    class=\"text-red-500 hover:text-red-700\"\n                    data-action=\"click->taxonomy-selector#clearSelection\">\n              <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path>\n              </svg>\n            </button>\n          </div>\n        `\n        this.selectedTarget.classList.remove(\"hidden\")\n      } else {\n        this.selectedTarget.classList.add(\"hidden\")\n      }\n    }\n    \n    if (this.hasDisplayTarget) {\n      this.displayTarget.textContent = this.selectedPathValue || 'Select a category'\n    }\n  }\n\n  updateHiddenInput() {\n    if (!this.hasInputTarget) return\n\n    const next = this.selectedIdValue ? String(this.selectedIdValue) : ''\n    if (this.inputTarget.value === next) return\n\n    this.inputTarget.value = next\n    // A programmatic value assignment fires no events, but the canvas wires\n    // this hidden field with change->autosubmit#submit - without a dispatched\n    // change the section never autosaves and its blocking hint stays red\n    // (#1180). Guarded above so connect-time syncs don't fire spurious saves.\n    this.inputTarget.dispatchEvent(new Event(\"change\", { bubbles: true }))\n  }\n\n  clearSelection(event) {\n    event.preventDefault()\n    event.stopPropagation()\n    \n    this.selectedIdValue = null\n    this.selectedNameValue = ''\n    this.selectedPathValue = ''\n    \n    this.updateDisplay()\n    this.updateHiddenInput()\n  }\n\n  escapeHtml(text) {\n    const div = document.createElement('div')\n    div.textContent = text\n    return div.innerHTML\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\n    \"personalizableCheckbox\", \n    \"optionsContainer\", \n    \"dataTypeSelect\", \n    \"formattingContainer\",\n    \"form\",\n    \"statusIndicator\",\n    \"savingIndicator\",\n    \"savedIndicator\",\n    \"errorIndicator\"\n  ]\n  \n  static values = {\n    layerId: Number,\n    productId: Number\n  }\n\n  connect() {\n    console.log(\"Template layer form controller connected\")\n    this.saveTimeout = null\n  }\n\n  disconnect() {\n    if (this.saveTimeout) {\n      clearTimeout(this.saveTimeout)\n    }\n  }\n\n  toggleOptions() {\n    const isChecked = this.personalizableCheckboxTarget.checked\n    \n    if (isChecked) {\n      this.optionsContainerTarget.classList.remove(\"hidden\")\n    } else {\n      this.optionsContainerTarget.classList.add(\"hidden\")\n    }\n  }\n  \n  togglePersonalizable() {\n    this.toggleOptions()\n    this.autoSave()\n  }\n\n  async updateFormattingOptions() {\n    const dataType = this.dataTypeSelectTarget.value\n    \n    if (!dataType) {\n      this.formattingContainerTarget.innerHTML = '<div class=\"text-xs text-gray-500 italic mt-2\">Select a data type to see formatting options</div>'\n      this.autoSave()\n      return\n    }\n\n    // Fetch formatting options for the selected data type\n    const layerId = this.layerIdValue\n    const response = await fetch(`/products/${this.productIdValue}/template_layers/${layerId}/formatting_options?data_type=${dataType}`, {\n      headers: {\n        \"Accept\": \"text/html\",\n        \"X-Requested-With\": \"XMLHttpRequest\"\n      }\n    })\n\n    if (response.ok) {\n      const html = await response.text()\n      this.formattingContainerTarget.innerHTML = html\n    }\n    \n    this.autoSave()\n  }\n  \n  autoSave() {\n    // Clear any existing timeout\n    if (this.saveTimeout) {\n      clearTimeout(this.saveTimeout)\n    }\n    \n    // Show saving indicator\n    this.showSavingStatus()\n    \n    // Debounce the save - wait 500ms after user stops typing\n    this.saveTimeout = setTimeout(() => {\n      this.performSave()\n    }, 500)\n  }\n  \n  async performSave() {\n    try {\n      const formData = new FormData(this.formTarget)\n      const response = await fetch(this.formTarget.action, {\n        method: 'PATCH',\n        body: formData,\n        headers: {\n          'X-Requested-With': 'XMLHttpRequest',\n          'Accept': 'text/vnd.turbo-stream.html, text/html'\n        }\n      })\n      \n      if (response.ok) {\n        this.showSavedStatus()\n      } else {\n        this.showErrorStatus()\n      }\n    } catch (error) {\n      console.error('Save error:', error)\n      this.showErrorStatus()\n    }\n  }\n  \n  showSavingStatus() {\n    if (this.hasStatusIndicatorTarget) {\n      this.statusIndicatorTarget.classList.remove('hidden')\n      this.savingIndicatorTarget.classList.remove('hidden')\n      this.savedIndicatorTarget.classList.add('hidden')\n      this.errorIndicatorTarget.classList.add('hidden')\n    }\n  }\n  \n  showSavedStatus() {\n    if (this.hasStatusIndicatorTarget) {\n      this.savingIndicatorTarget.classList.add('hidden')\n      this.savedIndicatorTarget.classList.remove('hidden')\n      this.errorIndicatorTarget.classList.add('hidden')\n      \n      // Hide the saved indicator after 2 seconds\n      setTimeout(() => {\n        this.savedIndicatorTarget.classList.add('hidden')\n        this.statusIndicatorTarget.classList.add('hidden')\n      }, 2000)\n    }\n  }\n  \n  showErrorStatus() {\n    if (this.hasStatusIndicatorTarget) {\n      this.savingIndicatorTarget.classList.add('hidden')\n      this.savedIndicatorTarget.classList.add('hidden')\n      this.errorIndicatorTarget.classList.remove('hidden')\n      \n      // Hide the error indicator after 3 seconds\n      setTimeout(() => {\n        this.errorIndicatorTarget.classList.add('hidden')\n        this.statusIndicatorTarget.classList.add('hidden')\n      }, 3000)\n    }\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  connect() {\n    console.log(\"Template layer inline controller connected\")\n  }\n  \n  enableAll(event) {\n    event.preventDefault()\n    \n    // Find all personalizable checkboxes and check them\n    const checkboxes = this.element.querySelectorAll('input[type=\"checkbox\"][name*=\"personalizable\"]')\n    checkboxes.forEach(checkbox => {\n      if (!checkbox.checked) {\n        checkbox.checked = true\n        // Trigger change event to update UI and save\n        checkbox.dispatchEvent(new Event('change', { bubbles: true }))\n      }\n    })\n  }\n  \n  disableAll(event) {\n    event.preventDefault()\n    \n    // Find all personalizable checkboxes and uncheck them\n    const checkboxes = this.element.querySelectorAll('input[type=\"checkbox\"][name*=\"personalizable\"]')\n    checkboxes.forEach(checkbox => {\n      if (checkbox.checked) {\n        checkbox.checked = false\n        // Trigger change event to update UI and save\n        checkbox.dispatchEvent(new Event('change', { bubbles: true }))\n      }\n    })\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Drives the template editor's \"add a product slot\" form (#1272 Phase 2\n// Task B.2): reveals the profile <select> only when the chosen catalog item\n// is multi-variant (mirrors ListingTemplateProduct#profile_required_for_multi_variant),\n// and filters the profile options down to the ones belonging to that catalog\n// item. Every profile option for the account is rendered server-side up\n// front (ListingTemplatesController#load_products_section_data scopes them\n// to current_account.product_profiles) - this controller only ever\n// shows/hides what's already in the DOM, never fetches or authors options.\nexport default class extends Controller {\n  static targets = [\"catalogItem\", \"profileField\", \"profileSelect\"]\n\n  connect() {\n    this.update()\n  }\n\n  catalogItemChanged() {\n    this.update()\n  }\n\n  update() {\n    const option = this.catalogItemTarget.selectedOptions[0]\n    const isMultiVariant = !!option && option.dataset.multiVariant === \"true\"\n\n    if (this.hasProfileFieldTarget) {\n      this.profileFieldTarget.hidden = !isMultiVariant\n    }\n\n    if (this.hasProfileSelectTarget) {\n      const catalogItemId = option ? option.value : \"\"\n      // A browser excludes hidden fields from constraint validation, so this\n      // is safe even though the <select> stays in the DOM either way -\n      // `required` only bites while the profile field is actually revealed,\n      // catching a missing profile client-side before the round trip to\n      // ListingTemplateProduct#profile_required_for_multi_variant.\n      this.profileSelectTarget.required = isMultiVariant\n      if (!isMultiVariant) this.profileSelectTarget.value = \"\"\n\n      Array.from(this.profileSelectTarget.options).forEach((opt) => {\n        if (!opt.value) return // keep the blank \"Choose a profile...\" placeholder always visible\n\n        const matches = opt.dataset.catalogItemId === catalogItemId\n        opt.hidden = !matches\n        opt.disabled = !matches\n      })\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Manages template multi-select for a single collection, an optional select-all\n// toggle, a live selection count, and a local print-file preview (no upload).\nexport default class extends Controller {\n  static targets = [ \"selectAll\", \"checkbox\", \"videoCheckbox\", \"count\", \"printInput\", \"preview\", \"mockupImage\", \"submitButton\" ]\n\n  static values = { max: { type: Number, default: 10 } }\n\n  connect() {\n    this.previewUrls = new Map()\n    this.syncSelectAll()\n    this.updateSummary()\n    // Server-seeded overlays (product art on the product-page flow) need placing\n    // even when the mockup image was cached and fired `load` before this\n    // controller connected; positionPreview no-ops until the image has rendered\n    // dimensions, so the load-event path still covers late loads.\n    this.positionPreviews()\n    this.onResize = () => this.positionPreviews()\n    window.addEventListener(\"resize\", this.onResize)\n  }\n\n  disconnect() {\n    this.revokeAllPreviewUrls()\n    window.removeEventListener(\"resize\", this.onResize)\n  }\n\n  // Selects or clears every template checkbox, fanning the new state out to each\n  // card's \"In video\" companion so both columns stay coupled under select-all.\n  toggleAll() {\n    if (!this.hasSelectAllTarget) return\n\n    this.checkboxTargets.forEach((checkbox) => {\n      checkbox.checked = this.selectAllTarget.checked\n      this.coupleVideoCheckbox(checkbox)\n    })\n    this.updateSummary()\n  }\n\n  // Reconciles a single card after its Generate checkbox changes: couple the\n  // card's \"In video\" companion, then refresh the select-all state and count.\n  // This controller is the single owner of the coupled per-card state.\n  sync(event) {\n    if (event) this.coupleVideoCheckbox(event.target)\n    this.syncSelectAll()\n    this.updateSummary()\n  }\n\n  // Enables + checks or disables + unchecks the \"In video\" checkbox sharing a\n  // card with this Generate checkbox. Generate gates the video: a mockup can only\n  // be in the video when it is being generated, so unchecking Generate both clears\n  // and locks its companion, and checking Generate re-arms it.\n  coupleVideoCheckbox(checkbox) {\n    const videoCheckbox = this.videoCheckboxFor(checkbox)\n    if (!videoCheckbox) return\n\n    videoCheckbox.disabled = !checkbox.checked\n    videoCheckbox.checked = checkbox.checked\n  }\n\n  // The \"In video\" checkbox sharing a card with this Generate checkbox (both live\n  // in the same [data-template-card] container - they are siblings, not nested\n  // labels), or null when the video feature is off (no companion is rendered).\n  videoCheckboxFor(checkbox) {\n    return checkbox.closest(\"[data-template-card]\")?.querySelector('[data-template-selection-target=\"videoCheckbox\"]') || null\n  }\n\n  // Loads one upload slot's chosen file into every placement preview bound to that\n  // slot (by data-slot), positioned to each placement's saved geometry. Each slot\n  // input is wired here, so slot 1's file previews on slot-1 placements and slot 2's\n  // on slot-2 placements - not one file smeared across every region.\n  previewPrint(event) {\n    const input = event.currentTarget\n    const slot = input.dataset.slot\n    this.revokePreviewUrl(slot)\n\n    const overlays = this.previewTargets.filter((preview) => preview.dataset.slot === slot)\n    const file = input.files[0]\n    if (!file) {\n      // Clearing an override falls back to the server-seeded art (the product's\n      // print file on the product-page flow) when the overlay has one.\n      overlays.forEach((preview) => {\n        if (preview.dataset.defaultSrc) {\n          preview.src = preview.dataset.defaultSrc\n          preview.style.display = \"block\"\n        } else {\n          preview.removeAttribute(\"src\")\n          preview.style.display = \"none\"\n        }\n      })\n      this.positionPreviews()\n      return\n    }\n\n    const url = URL.createObjectURL(file)\n    this.previewUrls.set(slot, url)\n    overlays.forEach((preview) => {\n      preview.src = url\n      preview.style.display = \"block\"\n    })\n    this.positionPreviews()\n  }\n\n  // Re-positions every placement preview on a mockup image once it has rendered\n  // dimensions. A template can carry N placement previews (front, back, ...), so\n  // this positions all previews sharing this image's card, not a single one.\n  positionAfterLoad(event) {\n    const image = event.currentTarget\n    this.previewsForImage(image).forEach((preview) => {\n      if (preview.getAttribute(\"src\")) this.positionPreview(preview, image)\n    })\n  }\n\n  positionPreviews() {\n    this.previewTargets.forEach((preview) => {\n      const image = this.imageForPreview(preview)\n      if (image) this.positionPreview(preview, image)\n    })\n  }\n\n  // The mockup image sharing this preview's card (its positioned ancestor).\n  imageForPreview(preview) {\n    return preview.parentElement?.querySelector('[data-template-selection-target=\"mockupImage\"]') || null\n  }\n\n  // Every placement preview sharing this mockup image's card.\n  previewsForImage(image) {\n    return Array.from(image.parentElement?.querySelectorAll('[data-template-selection-target=\"preview\"]') || [])\n  }\n\n  // Places one preview box using its template's normalized placement + the\n  // catalog print aspect \u2014 the same contained-box math as the placement editor.\n  positionPreview(preview, image) {\n    const width = image.clientWidth\n    const height = image.clientHeight\n    if (!width || !height) return\n\n    const data = preview.dataset\n    const centerX = parseFloat(data.centerX)\n    const centerY = parseFloat(data.centerY)\n    const widthRatio = parseFloat(data.widthRatio)\n    const heightRatio = parseFloat(data.heightRatio)\n    const aspectWidth = parseFloat(data.aspectWidth)\n    const aspectHeight = parseFloat(data.aspectHeight)\n    const rotation = parseFloat(data.rotation) || 0\n\n    const boxWidth = Math.min(widthRatio * width, heightRatio * height * aspectWidth / aspectHeight)\n    const boxHeight = boxWidth * aspectHeight / aspectWidth\n\n    preview.style.width = `${boxWidth}px`\n    preview.style.height = `${boxHeight}px`\n    preview.style.left = `${centerX * width - boxWidth / 2}px`\n    preview.style.top = `${centerY * height - boxHeight / 2}px`\n    preview.style.transform = `rotate(${rotation}deg)`\n  }\n\n  syncSelectAll() {\n    if (!this.hasSelectAllTarget) return\n\n    const boxes = this.checkboxTargets\n    const checked = boxes.filter((checkbox) => checkbox.checked).length\n    this.selectAllTarget.checked = boxes.length > 0 && checked === boxes.length\n    this.selectAllTarget.indeterminate = checked > 0 && checked < boxes.length\n  }\n\n  updateSummary() {\n    const count = this.checkboxTargets.filter((checkbox) => checkbox.checked).length\n    if (this.hasCountTarget) this.countTarget.textContent = `${count} / ${this.maxValue} selected`\n    if (this.hasSubmitButtonTarget) this.submitButtonTarget.disabled = count === 0\n  }\n\n  revokePreviewUrl(slot) {\n    const url = this.previewUrls.get(slot)\n    if (!url) return\n\n    URL.revokeObjectURL(url)\n    this.previewUrls.delete(slot)\n  }\n\n  revokeAllPreviewUrls() {\n    this.previewUrls.forEach((url) => URL.revokeObjectURL(url))\n    this.previewUrls.clear()\n  }\n}\n", "// Switches dark/light theme based upon the preference\n//\n// Set storage value to \"localStorage\" for saving the preference in the browser\n// Otherwise, preference is saved on User profile in database\n//\n// For localStorage, your head tag should include the following JS to apply the dark class before paint\n// document.documentElement.classList.toggle(\"dark\", localStorage.theme === 'dark' || (localStorage.theme !== \"light\" && window.matchMedia('(prefers-color-scheme: dark)').matches))\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport { patch } from \"@rails/request.js\"\n\nexport default class extends Controller {\n  static values = {\n    preference: String,\n    storage: { type: String, default: \"user\" }\n  }\n\n  connect() {\n    if (this.storageValue == \"localStorage\") this.preferenceValue = localStorage.theme\n    window.matchMedia(\"(prefers-color-scheme: dark)\").addEventListener(\"change\", this.preferenceValueChanged.bind(this))\n  }\n\n  disconnect() {\n    window.matchMedia(\"(prefers-color-scheme: dark)\").removeEventListener(\"change\", this.preferenceValueChanged)\n  }\n\n  preferenceValueChanged() {\n    document.documentElement.classList.toggle('dark', this.preferenceValue === \"dark\" || (this.preferenceValue === \"\" && this.systemInDarkMode))\n  }\n\n  get systemInDarkMode() {\n    return window.matchMedia('(prefers-color-scheme: dark)').matches\n  }\n\n  light() {\n    this.preferenceValue = \"light\"\n    this.save()\n  }\n\n  dark() {\n    this.preferenceValue = \"dark\"\n    this.save()\n  }\n\n  system() {\n    this.preferenceValue = \"\"\n    this.save()\n  }\n\n  // This isn't called on preferenceValueChanged callback because that is fired on load which would trigger a save every page load\n  save() {\n    this.storageValue == \"localStorage\" ? this.saveToLocalStorage() : this.saveToUser()\n  }\n\n  saveToLocalStorage() {\n    localStorage.theme = this.preferenceValue\n  }\n\n  saveToUser() {\n    patch(\"/users\", {\n      body: {user: {\"theme\": this.preferenceValue }},\n      contentType: \"application/json\"}\n    )\n  }\n}\n", "export class FetchResponse {\n  constructor (response) {\n    this.response = response\n  }\n\n  get statusCode () {\n    return this.response.status\n  }\n\n  get redirected () {\n    return this.response.redirected\n  }\n\n  get ok () {\n    return this.response.ok\n  }\n\n  get unauthenticated () {\n    return this.statusCode === 401\n  }\n\n  get unprocessableEntity () {\n    return this.statusCode === 422\n  }\n\n  get authenticationURL () {\n    return this.response.headers.get('WWW-Authenticate')\n  }\n\n  get contentType () {\n    const contentType = this.response.headers.get('Content-Type') || ''\n\n    return contentType.replace(/;.*$/, '')\n  }\n\n  get headers () {\n    return this.response.headers\n  }\n\n  get html () {\n    if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n      return this.text\n    }\n\n    return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`))\n  }\n\n  get json () {\n    if (this.contentType.match(/^application\\/.*json$/)) {\n      return this.responseJson || (this.responseJson = this.response.json())\n    }\n\n    return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`))\n  }\n\n  get text () {\n    return this.responseText || (this.responseText = this.response.text())\n  }\n\n  get isTurboStream () {\n    return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/)\n  }\n\n  get isScript () {\n    return this.contentType.match(/\\b(?:java|ecma)script\\b/)\n  }\n\n  async renderTurboStream () {\n    if (this.isTurboStream) {\n      if (window.Turbo) {\n        await window.Turbo.renderStreamMessage(await this.text)\n      } else {\n        console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js')\n      }\n    } else {\n      return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`))\n    }\n  }\n\n  async activeScript () {\n    if (this.isScript) {\n      const script = document.createElement('script')\n      const metaTag = document.querySelector('meta[name=csp-nonce]')\n      const nonce = metaTag && metaTag.content\n      if (nonce) { script.setAttribute('nonce', nonce) }\n      script.innerHTML = await this.text\n      document.body.appendChild(script)\n    } else {\n      return Promise.reject(new Error(`Expected a Script response but got \"${this.contentType}\" instead`))\n    }\n  }\n}\n", "export class RequestInterceptor {\n  static register (interceptor) {\n    this.interceptor = interceptor\n  }\n\n  static get () {\n    return this.interceptor\n  }\n\n  static reset () {\n    this.interceptor = undefined\n  }\n}\n", "export function getCookie (name) {\n  const cookies = document.cookie ? document.cookie.split('; ') : []\n  const prefix = `${encodeURIComponent(name)}=`\n  const cookie = cookies.find(cookie => cookie.startsWith(prefix))\n\n  if (cookie) {\n    const value = cookie.split('=').slice(1).join('=')\n\n    if (value) {\n      return decodeURIComponent(value)\n    }\n  }\n}\n\nexport function compact (object) {\n  const result = {}\n\n  for (const key in object) {\n    const value = object[key]\n    if (value !== undefined) {\n      result[key] = value\n    }\n  }\n\n  return result\n}\n\nexport function metaContent (name) {\n  const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n  return element && element.content\n}\n\nexport function stringEntriesFromFormData (formData) {\n  return [...formData].reduce((entries, [name, value]) => {\n    return entries.concat(typeof value === 'string' ? [[name, value]] : [])\n  }, [])\n}\n\nexport function mergeEntries (searchParams, entries) {\n  for (const [name, value] of entries) {\n    if (value instanceof window.File) continue\n\n    if (searchParams.has(name) && !name.includes('[]')) {\n      searchParams.delete(name)\n      searchParams.set(name, value)\n    } else {\n      searchParams.append(name, value)\n    }\n  }\n}\n", "import { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils'\n\nexport class FetchRequest {\n  constructor (method, url, options = {}) {\n    this.method = method\n    this.options = options\n    this.originalUrl = url.toString()\n  }\n\n  async perform () {\n    try {\n      const requestInterceptor = RequestInterceptor.get()\n      if (requestInterceptor) {\n        await requestInterceptor(this)\n      }\n    } catch (error) {\n      console.error(error)\n    }\n\n    const fetch = (this.responseKind === 'turbo-stream' && window.Turbo)\n      ? window.Turbo.fetch\n      : window.fetch\n\n    const response = new FetchResponse(await fetch(this.url, this.fetchOptions))\n\n    if (response.unauthenticated && response.authenticationURL) {\n      return Promise.reject(window.location.href = response.authenticationURL)\n    }\n\n    if (response.isScript) {\n      await response.activeScript()\n    }\n\n    const responseStatusIsTurboStreamable = response.ok || response.unprocessableEntity\n\n    if (responseStatusIsTurboStreamable && response.isTurboStream) {\n      await response.renderTurboStream()\n    }\n\n    return response\n  }\n\n  addHeader (key, value) {\n    const headers = this.additionalHeaders\n    headers[key] = value\n    this.options.headers = headers\n  }\n\n  sameHostname () {\n    if (!this.originalUrl.startsWith('http:')) {\n      return true\n    }\n\n    try {\n      return new URL(this.originalUrl).hostname === window.location.hostname\n    } catch (_) {\n      return true\n    }\n  }\n\n  get fetchOptions () {\n    return {\n      method: this.method.toUpperCase(),\n      headers: this.headers,\n      body: this.formattedBody,\n      signal: this.signal,\n      credentials: this.credentials,\n      redirect: this.redirect\n    }\n  }\n\n  get headers () {\n    const baseHeaders = {\n      'X-Requested-With': 'XMLHttpRequest',\n      'Content-Type': this.contentType,\n      Accept: this.accept\n    }\n\n    if (this.sameHostname()) {\n      baseHeaders['X-CSRF-Token'] = this.csrfToken\n    }\n\n    return compact(\n      Object.assign(baseHeaders, this.additionalHeaders)\n    )\n  }\n\n  get csrfToken () {\n    return getCookie(metaContent('csrf-param')) || metaContent('csrf-token')\n  }\n\n  get contentType () {\n    if (this.options.contentType) {\n      return this.options.contentType\n    } else if (this.body == null || this.body instanceof window.FormData) {\n      return undefined\n    } else if (this.body instanceof window.File) {\n      return this.body.type\n    }\n\n    return 'application/json'\n  }\n\n  get accept () {\n    switch (this.responseKind) {\n      case 'html':\n        return 'text/html, application/xhtml+xml'\n      case 'turbo-stream':\n        return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml'\n      case 'json':\n        return 'application/json, application/vnd.api+json'\n      case 'script':\n        return 'text/javascript, application/javascript'\n      default:\n        return '*/*'\n    }\n  }\n\n  get body () {\n    return this.options.body\n  }\n\n  get query () {\n    const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0]\n    const params = new URLSearchParams(originalQuery)\n\n    let requestQuery = this.options.query\n    if (requestQuery instanceof window.FormData) {\n      requestQuery = stringEntriesFromFormData(requestQuery)\n    } else if (requestQuery instanceof window.URLSearchParams) {\n      requestQuery = requestQuery.entries()\n    } else {\n      requestQuery = Object.entries(requestQuery || {})\n    }\n\n    mergeEntries(params, requestQuery)\n\n    const query = params.toString()\n    return (query.length > 0 ? `?${query}` : '')\n  }\n\n  get url () {\n    return (this.originalUrl.split('?')[0]).split('#')[0] + this.query\n  }\n\n  get responseKind () {\n    return this.options.responseKind || 'html'\n  }\n\n  get signal () {\n    return this.options.signal\n  }\n\n  get redirect () {\n    return this.options.redirect || 'follow'\n  }\n\n  get credentials () {\n    return this.options.credentials || 'same-origin'\n  }\n\n  get additionalHeaders () {\n    return this.options.headers || {}\n  }\n\n  get formattedBody () {\n    const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]'\n    const contentTypeIsJson = this.headers['Content-Type'] === 'application/json'\n\n    if (contentTypeIsJson && !bodyIsAString) {\n      return JSON.stringify(this.body)\n    }\n\n    return this.body\n  }\n}\n", "import { FetchRequest } from './fetch_request'\n\nasync function get (url, options) {\n  const request = new FetchRequest('get', url, options)\n  return request.perform()\n}\n\nasync function post (url, options) {\n  const request = new FetchRequest('post', url, options)\n  return request.perform()\n}\n\nasync function put (url, options) {\n  const request = new FetchRequest('put', url, options)\n  return request.perform()\n}\n\nasync function patch (url, options) {\n  const request = new FetchRequest('patch', url, options)\n  return request.perform()\n}\n\nasync function destroy (url, options) {\n  const request = new FetchRequest('delete', url, options)\n  return request.perform()\n}\n\nexport { get, post, put, patch, destroy }\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Auto-dismisses a single pz-toast ~4s after it lands in the DOM\n// (standards/ui-styleguide.md \u00A7 Feedback: a toast confirms an action just\n// taken and never needs a human response, unlike an alert/modal). Generic -\n// any page that turbo_stream.append/prepends shared/_toast.html.erb into a\n// pz-toasts container gets this behavior for free since the partial carries\n// the controller; the container itself is rendered per-page (see\n// listings/canvas.html.erb's #canvas_toasts, the first adopter).\nexport default class extends Controller {\n  static values = { delay: { type: Number, default: 4000 } }\n\n  connect() {\n    this.timeout = setTimeout(() => this.dismiss(), this.delayValue)\n  }\n\n  disconnect() {\n    clearTimeout(this.timeout)\n  }\n\n  dismiss() {\n    clearTimeout(this.timeout)\n    this.element.remove()\n  }\n}\n", "// Example usage:\n// <div data-controller=\"tooltip\" data-tippy-content=\"Hello world\"></div>\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport tippy from \"tippy.js\";\n\nexport default class extends Controller {\n  static values = {\n    content: String\n  }\n\n  connect() {\n    let options = {}\n    if (this.hasContentValue) {\n      options['content'] = this.contentValue\n    }\n    this.tippy = tippy(this.element, options);\n  }\n\n  disconnect() {\n    this.tippy.destroy();\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { Turbo } from \"@hotwired/turbo-rails\";\n\n// Connects to data-controller=\"turbo\"\nexport default class extends Controller {\n  initialize() {\n    this.element.setAttribute(\"data-action\", \"click->turbo#click\");\n  }\n\n  click(e) {\n    e.preventDefault();\n    this.url = this.element.getAttribute(\"href\");\n    \n    fetch(this.url, {\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\",\n      },\n    })\n      .then((r) => r.text())\n      .then((html) => Turbo.renderStreamMessage(html));\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  signOut(event) {\n    if (this._isTurboNativeApp) {\n      event.preventDefault()\n      event.stopImmediatePropagation()\n      window.TurboNativeBridge.postMessage(\"signOut\")\n    }\n  }\n\n  deleteAccount(event) {\n    if (this._isTurboNativeApp) {\n      event.preventDefault()\n      event.stopImmediatePropagation()\n      window.TurboNativeBridge.postMessage(\"deleteAccount\")\n    }\n  }\n\n  get _isTurboNativeApp() {\n    return navigator.userAgent.indexOf(\"Turbo Native\") !== -1\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static values = {\n    sitekey: String,\n    theme: { type: String, default: \"light\" }\n  }\n\n  connect() {\n    this.renderWidget()\n  }\n\n  disconnect() {\n    if (this.widgetId !== undefined) {\n      turnstile.remove(this.widgetId)\n    }\n  }\n\n  renderWidget() {\n    if (typeof turnstile !== \"undefined\") {\n      this.widgetId = turnstile.render(this.element, {\n        sitekey: this.sitekeyValue,\n        theme: this.themeValue\n      })\n    } else {\n      // Script still loading (async defer) \u2014 retry briefly\n      setTimeout(() => this.renderWidget(), 100)\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"user-autocomplete\"\nexport default class extends Controller {\n  static targets = [\"input\", \"results\", \"hiddenField\"]\n  static values = { \n    url: String,\n    minLength: { type: Number, default: 2 }\n  }\n\n  connect() {\n    this.resultsTarget.style.display = \"none\"\n    this.selectedIndex = -1\n  }\n\n  disconnect() {\n    this.hideResults()\n  }\n\n  search() {\n    const query = this.inputTarget.value.trim()\n    \n    if (query.length < this.minLengthValue) {\n      this.hideResults()\n      return\n    }\n\n    // Show loading state\n    this.showResults()\n    this.resultsTarget.innerHTML = '<div class=\"p-4 text-gray-500\">Searching...</div>'\n\n    fetch(`${this.urlValue}?query=${encodeURIComponent(query)}`, {\n      headers: {\n        \"Accept\": \"application/json\",\n        \"X-CSRF-Token\": this.csrfToken()\n      }\n    })\n    .then(response => {\n      if (!response.ok) throw new Error(\"Network response was not ok\")\n      return response.json()\n    })\n    .then(users => {\n      this.displayResults(users)\n    })\n    .catch(error => {\n      console.error(\"Error:\", error)\n      this.resultsTarget.innerHTML = '<div class=\"p-4 text-red-500\">Error loading users</div>'\n    })\n  }\n\n  displayResults(users) {\n    if (users.length === 0) {\n      this.resultsTarget.innerHTML = '<div class=\"p-4 text-gray-500\">No users found</div>'\n      return\n    }\n\n    const html = users.map((user, index) => `\n      <div class=\"p-3 hover:bg-gray-100 cursor-pointer flex items-center gap-3\"\n           data-action=\"click->user-autocomplete#select\"\n           data-user-id=\"${user.id}\"\n           data-user-email=\"${user.email}\"\n           data-index=\"${index}\">\n        ${this.userAvatar(user)}\n        <div>\n          <div class=\"font-medium\">${this.escapeHtml(user.name || user.email)}</div>\n          <div class=\"text-sm text-gray-500\">${this.escapeHtml(user.email)}</div>\n        </div>\n      </div>\n    `).join(\"\")\n\n    this.resultsTarget.innerHTML = html\n    this.selectedIndex = -1\n  }\n\n  userAvatar(user) {\n    if (user.avatar_url) {\n      return `<img src=\"${user.avatar_url}\" alt=\"${user.name}\" class=\"w-10 h-10 rounded-full\">`\n    }\n    \n    // Initials fallback\n    const initials = this.getInitials(user.name || user.email)\n    return `\n      <div class=\"w-10 h-10 rounded-full bg-primary text-white flex items-center justify-center font-medium\">\n        ${initials}\n      </div>\n    `\n  }\n\n  getInitials(name) {\n    const parts = name.split(/\\s+/)\n    if (parts.length >= 2) {\n      return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase()\n    }\n    return name.substring(0, 2).toUpperCase()\n  }\n\n  select(event) {\n    const target = event.currentTarget\n    const userId = target.dataset.userId\n    const userEmail = target.dataset.userEmail\n    \n    this.inputTarget.value = userEmail\n    if (this.hasHiddenFieldTarget) {\n      this.hiddenFieldTarget.value = userId\n    }\n    \n    this.hideResults()\n    \n    // Dispatch custom event\n    this.dispatch(\"selected\", { detail: { id: userId, email: userEmail } })\n  }\n\n  keydown(event) {\n    const items = this.resultsTarget.querySelectorAll(\"[data-index]\")\n    \n    switch(event.key) {\n      case \"ArrowDown\":\n        event.preventDefault()\n        this.selectedIndex = Math.min(this.selectedIndex + 1, items.length - 1)\n        this.highlightItem(items)\n        break\n      case \"ArrowUp\":\n        event.preventDefault()\n        this.selectedIndex = Math.max(this.selectedIndex - 1, -1)\n        this.highlightItem(items)\n        break\n      case \"Enter\":\n        event.preventDefault()\n        if (this.selectedIndex >= 0 && items[this.selectedIndex]) {\n          items[this.selectedIndex].click()\n        }\n        break\n      case \"Escape\":\n        this.hideResults()\n        break\n    }\n  }\n\n  highlightItem(items) {\n    items.forEach((item, index) => {\n      if (index === this.selectedIndex) {\n        item.classList.add(\"bg-gray-100\")\n      } else {\n        item.classList.remove(\"bg-gray-100\")\n      }\n    })\n  }\n\n  clickOutside(event) {\n    if (!this.element.contains(event.target)) {\n      this.hideResults()\n    }\n  }\n\n  showResults() {\n    this.resultsTarget.style.display = \"block\"\n    document.addEventListener(\"click\", this.clickOutsideHandler)\n  }\n\n  hideResults() {\n    this.resultsTarget.style.display = \"none\"\n    if (this.clickOutsideHandler) {\n      document.removeEventListener(\"click\", this.clickOutsideHandler)\n    }\n  }\n\n  get clickOutsideHandler() {\n    if (!this._clickOutsideHandler) {\n      this._clickOutsideHandler = this.clickOutside.bind(this)\n    }\n    return this._clickOutsideHandler\n  }\n\n  csrfToken() {\n    const meta = document.querySelector('meta[name=\"csrf-token\"]')\n    return meta ? meta.content : \"\"\n  }\n\n  escapeHtml(text) {\n    const div = document.createElement(\"div\")\n    div.textContent = text\n    return div.innerHTML\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"display\"]\n  static values = { url: String }\n\n  connect() {\n    this.refresh()\n  }\n\n  async refresh() {\n    if (!this.urlValue) return\n\n    try {\n      const response = await fetch(this.urlValue, {\n        headers: {\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this._csrfToken()\n        }\n      })\n\n      if (!response.ok) return\n\n      const data = await response.json()\n      this._updateDisplay(data.enabled, data.limit)\n    } catch {\n      // Silently fail -- counter is a nice-to-have\n    }\n  }\n\n  _updateDisplay(count, limit) {\n    if (!this.hasDisplayTarget) return\n\n    let colorClass\n    if (count >= limit) {\n      colorClass = \"text-[var(--pz-danger)]\"\n    } else if (count >= limit * 0.8) {\n      colorClass = \"text-[var(--pz-warning)]\"\n    } else {\n      colorClass = \"text-[var(--pz-success)]\"\n    }\n\n    this.displayTarget.innerHTML = `\n      <span class=\"${colorClass}\">${count}</span>\n      <span class=\"text-[var(--muted)] text-sm font-normal\">/ ${limit}</span>\n    `\n\n    // Update progress bar if present\n    const progressBar = this.element.querySelector(\"[data-variant-progress]\")\n    if (progressBar) {\n      const pct = Math.min(count * 100.0 / limit, 100)\n      let barColor\n      if (count >= limit) {\n        barColor = \"var(--pz-danger)\"\n      } else if (count >= limit * 0.8) {\n        barColor = \"var(--pz-warning)\"\n      } else {\n        barColor = \"var(--pz-success)\"\n      }\n      progressBar.style.width = `${pct}%`\n      progressBar.style.backgroundColor = barColor\n    }\n  }\n\n  _csrfToken() {\n    const meta = document.querySelector(\"meta[name='csrf-token']\")\n    return meta ? meta.content : \"\"\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"display\", \"editor\", \"input\"]\n  static values = {\n    url: String,\n    method: { type: String, default: \"patch\" },\n    listingProductId: Number,\n    productVariantId: Number\n  }\n\n  startEdit() {\n    this.displayTarget.classList.add(\"hidden\")\n    this.editorTarget.classList.remove(\"hidden\")\n    this.inputTarget.select()\n  }\n\n  cancel() {\n    this.editorTarget.classList.add(\"hidden\")\n    this.displayTarget.classList.remove(\"hidden\")\n  }\n\n  async save() {\n    const dollars = parseFloat(this.inputTarget.value)\n    if (isNaN(dollars) || dollars < 0) {\n      this.cancel()\n      return\n    }\n\n    const priceCents = Math.round(dollars * 100)\n    const csrfToken = document.querySelector(\"meta[name='csrf-token']\")?.content\n\n    try {\n      let body\n\n      if (this.methodValue === \"post\") {\n        body = new URLSearchParams({\n          listing_product_id: this.listingProductIdValue,\n          product_variant_id: this.productVariantIdValue,\n          price_cents: priceCents,\n          enabled: \"true\"\n        })\n      } else {\n        body = new URLSearchParams({\n          \"listing_variant_override[price_cents]\": priceCents\n        })\n      }\n\n      const response = await fetch(this.urlValue, {\n        method: this.methodValue === \"post\" ? \"POST\" : \"PATCH\",\n        headers: {\n          \"X-CSRF-Token\": csrfToken,\n          \"Accept\": \"text/vnd.turbo-stream.html\",\n          \"Content-Type\": \"application/x-www-form-urlencoded\"\n        },\n        body: body.toString()\n      })\n\n      if (response.ok) {\n        const html = await response.text()\n        Turbo.renderStreamMessage(html)\n      }\n    } catch {\n      this.cancel()\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"fileInput\", \"bulkForm\", \"variantIdsInput\", \"locationInput\", \"formFileInput\", \"toggleText\", \"toggleIcon\"]\n  \n  connect() {\n    this.pendingUpload = null\n  }\n  \n  toggleColorDetails(event) {\n    const color = event.currentTarget.dataset.color\n    const detailsDiv = this.element.querySelector(`[data-color-details=\"${color}\"]`)\n    \n    if (detailsDiv.classList.contains('hidden')) {\n      detailsDiv.classList.remove('hidden')\n      this.toggleTextTargets.forEach(t => t.textContent = 'Hide variants')\n      this.toggleIconTargets.forEach(i => i.classList.replace('fa-chevron-down', 'fa-chevron-up'))\n    } else {\n      detailsDiv.classList.add('hidden')\n      this.toggleTextTargets.forEach(t => t.textContent = 'Show variants')\n      this.toggleIconTargets.forEach(i => i.classList.replace('fa-chevron-up', 'fa-chevron-down'))\n    }\n  }\n  \n  uploadForColor(event) {\n    const color = event.currentTarget.dataset.color\n    const location = event.currentTarget.dataset.location\n    const variantIds = event.currentTarget.dataset.variantIds\n    \n    this.pendingUpload = {\n      type: 'color',\n      color: color,\n      location: location,\n      variantIds: variantIds\n    }\n    \n    this.fileInputTarget.click()\n  }\n  \n  uploadForVariant(event) {\n    const variantId = event.currentTarget.dataset.variantId\n    const location = event.currentTarget.dataset.location\n    \n    this.pendingUpload = {\n      type: 'variant',\n      variantId: variantId,\n      location: location\n    }\n    \n    this.fileInputTarget.click()\n  }\n  \n  handleFileSelect(event) {\n    const file = event.target.files[0]\n    if (!file || !this.pendingUpload) return\n    \n    if (this.pendingUpload.type === 'color') {\n      // Upload for all variants of a color using FormData\n      this.uploadForColorVariants(this.pendingUpload.variantIds, this.pendingUpload.location, file)\n    } else if (this.pendingUpload.type === 'variant') {\n      // Upload for single variant\n      this.uploadSingleVariantFile(this.pendingUpload.variantId, this.pendingUpload.location, file)\n    }\n    \n    // Reset\n    this.pendingUpload = null\n    this.fileInputTarget.value = ''\n  }\n  \n  uploadForColorVariants(variantIds, location, file) {\n    const formData = new FormData()\n    formData.append('variant_ids', variantIds)\n    formData.append('location_identifier', location)\n    formData.append('print_file', file)\n    formData.append('authenticity_token', document.querySelector('[name=\"csrf-token\"]').content)\n    \n    fetch(this.bulkFormTarget.action, {\n      method: 'POST',\n      body: formData,\n      headers: {\n        'X-Requested-With': 'XMLHttpRequest'\n      }\n    }).then(response => {\n      if (response.ok) {\n        // Follow redirect\n        window.location.reload()\n      } else {\n        console.error('Upload failed:', response.statusText)\n        alert('Upload failed. Please try again.')\n      }\n    }).catch(error => {\n      console.error('Upload error:', error)\n      alert('Upload error. Please try again.')\n    })\n  }\n  \n  uploadSingleVariantFile(variantId, location, file) {\n    const formData = new FormData()\n    formData.append('variant_id', variantId)\n    formData.append('location_identifier', location)\n    formData.append('print_file', file)\n    \n    fetch(this.bulkFormTarget.action.replace('bulk_assign_print_files', 'upload_variant_print_file'), {\n      method: 'POST',\n      body: formData,\n      headers: {\n        'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n      }\n    }).then(response => {\n      if (response.ok) {\n        // Reload the page or update via Turbo\n        window.location.reload()\n      }\n    })\n  }\n  \n  removeFile(event) {\n    const variantId = event.currentTarget.dataset.variantId\n    const location = event.currentTarget.dataset.location\n    \n    if (confirm('Remove this print file?')) {\n      const form = document.createElement('form')\n      form.method = 'POST'\n      form.action = this.bulkFormTarget.action.replace('bulk_assign_print_files', 'remove_variant_print_file')\n      \n      const methodInput = document.createElement('input')\n      methodInput.type = 'hidden'\n      methodInput.name = '_method'\n      methodInput.value = 'DELETE'\n      \n      const tokenInput = document.createElement('input')\n      tokenInput.type = 'hidden'\n      tokenInput.name = 'authenticity_token'\n      tokenInput.value = document.querySelector('[name=\"csrf-token\"]').content\n      \n      const variantInput = document.createElement('input')\n      variantInput.type = 'hidden'\n      variantInput.name = 'variant_id'\n      variantInput.value = variantId\n      \n      const locationInput = document.createElement('input')\n      locationInput.type = 'hidden'\n      locationInput.name = 'location'\n      locationInput.value = location\n      \n      form.appendChild(methodInput)\n      form.appendChild(tokenInput)\n      form.appendChild(variantInput)\n      form.appendChild(locationInput)\n      \n      document.body.appendChild(form)\n      form.submit()\n    }\n  }\n  \n  selectColorVariants(event) {\n    const color = event.currentTarget.dataset.color\n    const checkboxes = document.querySelectorAll('input[type=\"checkbox\"][name=\"variant_ids[]\"]')\n    \n    checkboxes.forEach(checkbox => {\n      const label = checkbox.closest('label')\n      if (label && label.textContent.includes(color)) {\n        checkbox.checked = true\n      }\n    })\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"variantCheckbox\", \"submitButton\"]\n  \n  connect() {\n    console.log(\"Variant print files controller connected\")\n  }\n  \n  uploadFile(event) {\n    const variantId = event.target.dataset.variantId\n    const location = event.target.dataset.location\n    \n    // Auto-submit form when file is selected\n    event.target.form.requestSubmit()\n  }\n  \n  bulkUpload(event) {\n    const checkedCount = this.variantCheckboxTargets.filter(cb => cb.checked).length\n    \n    if (checkedCount === 0) {\n      event.preventDefault()\n      alert(\"Please select at least one variant\")\n      return\n    }\n    \n    // Disable submit button to prevent double submission\n    this.submitButtonTarget.disabled = true\n    this.submitButtonTarget.textContent = \"Uploading...\"\n  }\n  \n  selectAll(event) {\n    event.preventDefault()\n    this.variantCheckboxTargets.forEach(checkbox => {\n      checkbox.checked = true\n    })\n  }\n  \n  selectNone(event) {\n    event.preventDefault()\n    this.variantCheckboxTargets.forEach(checkbox => {\n      checkbox.checked = false\n    })\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n/**\n * Variant SKU Manager Controller\n *\n * Manages SKU operations on the product show page:\n * - Regenerate all SKUs (PODP or Variant patterns)\n * - Toggle manual SKU entry mode\n * - Per-color SKU saving\n */\nexport default class extends Controller {\n  static targets = [\n    \"baseSku\",\n    \"regeneratePodpBtn\",\n    \"regenerateVariantBtn\",\n    \"manualModeBtn\",\n    \"manualModeText\",\n    \"colorSection\",\n    \"skuRow\",\n    \"skuDisplay\",\n    \"skuInput\",\n    \"saveButtonContainer\"\n  ]\n\n  static values = {\n    productId: Number,\n    manualMode: { type: Boolean, default: false }\n  }\n\n  connect() {\n    this.productId = this.element.querySelector('input[name=\"product_id\"]')?.value\n  }\n\n  // ===== SKU REGENERATION =====\n\n  async regeneratePodpSkus(event) {\n    event.preventDefault()\n\n    if (!confirm(\"This will regenerate SKUs for all unlocked variants. Continue?\")) {\n      return\n    }\n\n    const baseSku = this.baseSkuTarget.value.trim()\n    await this.regenerateSkus(\"podp\", baseSku)\n  }\n\n  async regenerateVariantSkus(event) {\n    event.preventDefault()\n\n    if (!confirm(\"This will regenerate SKUs using catalog variant codes for all unlocked variants. Continue?\")) {\n      return\n    }\n\n    const baseSku = this.baseSkuTarget.value.trim()\n    await this.regenerateSkus(\"variant\", baseSku)\n  }\n\n  async regenerateSkus(method, baseSku) {\n    const button = method === \"podp\" ? this.regeneratePodpBtnTarget : this.regenerateVariantBtnTarget\n    const originalText = button.innerHTML\n    button.innerHTML = '<span class=\"animate-spin mr-1\">\u23F3</span> Regenerating...'\n    button.disabled = true\n\n    try {\n      const response = await fetch(`/products/${this.productId}/variants/regenerate_skus`, {\n        method: \"PATCH\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"text/vnd.turbo-stream.html\",\n          \"X-CSRF-Token\": document.querySelector('[name=\"csrf-token\"]').content\n        },\n        body: JSON.stringify({\n          method: method,\n          base_sku: baseSku\n        })\n      })\n\n      if (response.ok) {\n        const html = await response.text()\n        Turbo.renderStreamMessage(html)\n      } else {\n        const error = await response.json()\n        alert(error.message || \"Failed to regenerate SKUs\")\n      }\n    } catch (error) {\n      console.error(\"Error regenerating SKUs:\", error)\n      alert(\"An error occurred while regenerating SKUs\")\n    } finally {\n      button.innerHTML = originalText\n      button.disabled = false\n    }\n  }\n\n  // ===== MANUAL MODE TOGGLE =====\n\n  toggleManualMode(event) {\n    event.preventDefault()\n\n    this.manualModeValue = !this.manualModeValue\n    this.updateManualModeUI()\n  }\n\n  updateManualModeUI() {\n    if (this.manualModeValue) {\n      // Show edit mode\n      this.manualModeTextTarget.textContent = \"Exit Manual Mode\"\n      this.manualModeBtnTarget.classList.remove(\"bg-primary\")\n      this.manualModeBtnTarget.classList.add(\"bg-gray-600\")\n\n      // Show all SKU inputs, hide displays\n      this.skuDisplayTargets.forEach(el => el.classList.add(\"hidden\"))\n      this.skuInputTargets.forEach(el => el.classList.remove(\"hidden\"))\n\n      // Show save buttons\n      this.saveButtonContainerTargets.forEach(el => el.classList.remove(\"hidden\"))\n    } else {\n      // Show display mode\n      this.manualModeTextTarget.textContent = \"Enter Manual SKUs\"\n      this.manualModeBtnTarget.classList.add(\"bg-primary\")\n      this.manualModeBtnTarget.classList.remove(\"bg-gray-600\")\n\n      // Hide all SKU inputs, show displays\n      this.skuDisplayTargets.forEach(el => el.classList.remove(\"hidden\"))\n      this.skuInputTargets.forEach(el => el.classList.add(\"hidden\"))\n\n      // Hide save buttons\n      this.saveButtonContainerTargets.forEach(el => el.classList.add(\"hidden\"))\n    }\n  }\n\n  // ===== PER-COLOR SKU REGENERATION =====\n\n  regenerateColorPodpSkus(event) {\n    event.preventDefault()\n    event.stopPropagation()\n\n    const sectionId = event.currentTarget.dataset.colorSectionId\n    this.regenerateColorSkus(sectionId, \"podp\")\n  }\n\n  regenerateColorVariantSkus(event) {\n    event.preventDefault()\n    event.stopPropagation()\n\n    const sectionId = event.currentTarget.dataset.colorSectionId\n    this.regenerateColorSkus(sectionId, \"variant\")\n  }\n\n  regenerateColorSkus(sectionId, method) {\n    const section = document.getElementById(sectionId)\n    if (!section) {\n      console.error(`Color section not found: ${sectionId}`)\n      return\n    }\n\n    // Enable manual mode so inputs are visible\n    if (!this.manualModeValue) {\n      this.manualModeValue = true\n      this.updateManualModeUI()\n    }\n\n    // Find all SKU inputs in this section (not locked ones)\n    const skuInputs = section.querySelectorAll('[data-variant-sku-manager-target=\"skuInput\"]')\n    const baseSku = this.hasBaseSkuTarget ? this.baseSkuTarget.value.trim() : \"\"\n    const prefix = baseSku ? `${baseSku}-` : \"PODP-\"\n\n    skuInputs.forEach(input => {\n      let newSku\n\n      if (method === \"podp\") {\n        // Generate random SKU filling to 32 chars\n        const remainingLength = Math.max(32 - prefix.length, 6)\n        const randomSuffix = this.generateRandomString(remainingLength)\n        newSku = `${prefix}${randomSuffix}`\n      } else {\n        // Generate variant-based SKU\n        // Get the variant SKU from a data attribute or nearby element\n        const skuRow = input.closest('[data-variant-sku-manager-target=\"skuRow\"]')\n        const variantSku = skuRow?.dataset.catalogVariantSku || \"\"\n\n        if (baseSku && variantSku) {\n          newSku = `${baseSku}-${variantSku}`\n        } else if (variantSku) {\n          newSku = variantSku\n        } else {\n          // Fallback to PODP if no variant SKU available\n          const remainingLength = Math.max(32 - prefix.length, 6)\n          const randomSuffix = this.generateRandomString(remainingLength)\n          newSku = `${prefix}${randomSuffix}`\n        }\n      }\n\n      // Truncate to 32 chars max\n      input.value = newSku.substring(0, 32)\n\n      // Flash the field to show it was updated\n      this.flashField(input)\n    })\n  }\n\n  // ===== UTILITY =====\n\n  generateRandomString(length) {\n    const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"\n    let result = \"\"\n    for (let i = 0; i < length; i++) {\n      result += chars.charAt(Math.floor(Math.random() * chars.length))\n    }\n    return result\n  }\n\n  flashField(field) {\n    field.classList.add(\"bg-green-100\", \"border-green-400\")\n    setTimeout(() => {\n      field.classList.remove(\"bg-green-100\", \"border-green-400\")\n    }, 1000)\n  }\n\n  manualModeValueChanged() {\n    this.updateManualModeUI()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Canvas slot label picker (#1180).\n//\n// Wraps one label field on the Product & Variations section: the visible text\n// input plus a dropdown of the seller's own saved labels and of Etsy's public\n// vocabulary for the listing's category. The input itself is bound to the\n// canvas section form by the HTML `form` attribute, so this controller never\n// submits anything - picking an option writes the input and fires `change`,\n// which the sibling variation-values controller debounces into the section\n// autosave.\n//\n// Connects to data-controller=\"variation-label-picker\"\nexport default class extends Controller {\n  static targets = [\"input\", \"panel\", \"option\", \"section\"]\n\n  // --- Dropdown visibility ---\n\n  open() {\n    if (this.hasPanelTarget) this.panelTarget.classList.remove(\"hidden\")\n  }\n\n  close() {\n    if (this.hasPanelTarget) this.panelTarget.classList.add(\"hidden\")\n  }\n\n  closeOnOutsideClick(event) {\n    if (this.element.contains(event.target)) return\n\n    this.close()\n  }\n\n  // --- Typing ---\n\n  // Narrows both lists to options containing what the seller has typed. Typing\n  // a brand new label is always allowed - the field is a plain text input and\n  // the picker is only an accelerator.\n  filter() {\n    const query = this.inputTarget.value.trim().toLowerCase()\n\n    this.optionTargets.forEach(option => {\n      const label = (option.dataset.label || \"\").toLowerCase()\n      option.classList.toggle(\"hidden\", query !== \"\" && !label.includes(query))\n    })\n\n    this.open()\n  }\n\n  // --- Picking ---\n\n  choose(event) {\n    const label = event.currentTarget.dataset.label\n    if (!label) return\n\n    this.inputTarget.value = label\n    this.inputTarget.dispatchEvent(new Event(\"change\", { bubbles: true }))\n    this.close()\n  }\n\n  // --- Deleting a saved label ---\n\n  // Removes one of the account's saved labels, then drops its row. The endpoint\n  // finds through the account, so a stale id 404s rather than touching another\n  // tenant's row; either way the row is gone from this dropdown.\n  async remove(event) {\n    event.preventDefault()\n\n    const button = event.currentTarget\n    const url = button.dataset.url\n    if (!url) return\n\n    const response = await fetch(url, {\n      method: \"DELETE\",\n      headers: {\n        \"X-CSRF-Token\": this._csrfToken(),\n        \"Accept\": \"text/html\"\n      }\n    })\n\n    if (!response.ok) return\n\n    const row = button.closest(\"[data-variation-label-picker-target='option']\")\n    if (row) row.remove()\n  }\n\n  _csrfToken() {\n    const meta = document.querySelector(\"meta[name='csrf-token']\")\n    return meta ? meta.content : \"\"\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Canvas variation editing (#1180).\n//\n// Wraps the Product & Variations section: the value text inputs in the variant\n// table, the bulk-rename chips above it, and the custom-axis card. The section\n// form element is a sibling of the variant table (the table already contains\n// button_to forms and HTML forbids nested forms), so every input is bound to it\n// by the HTML `form` attribute and this controller only decides WHEN to submit.\n//\n// Connects to data-controller=\"variation-values\"\nexport default class extends Controller {\n  static targets = [\"form\", \"nestedRow\", \"blankRow\"]\n  static values = { formId: String, renameUrl: String }\n\n  disconnect() {\n    clearTimeout(this.timeout)\n  }\n\n  // --- Section autosave ---\n\n  // Debounced autosave on blur of any bound input.\n  save() {\n    if (!this.hasFormTarget) return\n\n    clearTimeout(this.timeout)\n    this.timeout = setTimeout(() => {\n      const pruned = this._disableUnchangedVariantRows()\n      this.formTarget.requestSubmit()\n      setTimeout(() => pruned.forEach(el => { el.disabled = false }), 0)\n    }, 150)\n  }\n\n  // A variant row whose value inputs still match what the server rendered has\n  // nothing to save. Submitting it anyway would create an override row for\n  // every variant on every keystroke-and-blur, pinning display text that should\n  // still fall through to the size prefix or the raw axis value. Disabled\n  // controls are not submitted, so untouched rows stay absent from the payload.\n  _disableUnchangedVariantRows() {\n    const rows = new Map()\n\n    this.element.querySelectorAll(\"[data-variation-values-row]\").forEach(el => {\n      const key = el.dataset.variationValuesRow\n      if (!rows.has(key)) rows.set(key, [])\n      rows.get(key).push(el)\n    })\n\n    const disabled = []\n    rows.forEach(elements => {\n      const dirty = elements.some(el =>\n        el.dataset.variationValuesOriginal !== undefined &&\n        el.value !== el.dataset.variationValuesOriginal\n      )\n\n      if (!dirty) {\n        // Untouched row: submit nothing (identity field included), so no\n        // override is created for a variant whose values still match what the\n        // server rendered.\n        elements.forEach(el => {\n          if (el.disabled) return\n          el.disabled = true\n          disabled.push(el)\n        })\n        return\n      }\n\n      // Dirty row: keep the identity field and the changed input, but disable\n      // the value inputs the seller did NOT touch. Submitting an unchanged slot\n      // pins its rendered default as an explicit override, freezing a value that\n      // should keep falling through to the size prefix or the raw axis value.\n      elements.forEach(el => {\n        const original = el.dataset.variationValuesOriginal\n        if (original === undefined) return // identity field - must submit\n        if (el.value !== original) return // the edited input - keep it\n        if (el.disabled) return\n\n        el.disabled = true\n        disabled.push(el)\n      })\n    })\n\n    return disabled\n  }\n\n  // --- Custom-axis rows ---\n\n  // Reveals the blank axis / value row inside this button's group.\n  addRow(event) {\n    const group = event.currentTarget.closest(\"[data-add-group]\")\n    const blank = group && group.querySelector(\"[data-variation-values-target='blankRow']\")\n    if (!blank) return\n\n    blank.classList.remove(\"hidden\")\n    event.currentTarget.classList.add(\"hidden\")\n    const field = blank.querySelector(\"input[type='text']\")\n    if (field) field.focus()\n  }\n\n  // Marks a persisted axis or value for destruction and saves immediately.\n  removeRow(event) {\n    const row = event.currentTarget.closest(\"[data-variation-values-target='nestedRow']\")\n    if (!row) return\n\n    const flag = row.querySelector(\"[data-variation-values-destroy]\")\n    if (flag) flag.value = \"1\"\n    row.classList.add(\"hidden\")\n    this.save()\n  }\n\n  // --- Bulk rename chips ---\n\n  // Swaps a chip for its inline rename field.\n  openRename(event) {\n    const chip = event.currentTarget\n    const field = chip.parentElement.querySelector(\"[data-variation-chip-rename-input]\")\n    if (!field) return\n\n    chip.classList.add(\"hidden\")\n    field.classList.remove(\"hidden\")\n    field.focus()\n    field.select()\n  }\n\n  // Restores the chip without renaming anything.\n  cancelRename(event) {\n    const field = event.currentTarget\n    field.value = field.dataset.from\n    field.classList.add(\"hidden\")\n    const chip = field.parentElement.querySelector(\"[data-variation-chip]\")\n    if (chip) chip.classList.remove(\"hidden\")\n  }\n\n  // Enter confirms: renames every variant whose current effective value in this\n  // slot matches, then renders the returned turbo streams (section + footer).\n  async submitRename(event) {\n    event.preventDefault()\n\n    const field = event.currentTarget\n    const replacement = field.value.trim()\n    if (replacement === \"\" || replacement === field.dataset.from) {\n      this.cancelRename(event)\n      return\n    }\n\n    const body = new URLSearchParams({\n      listing_product_id: field.dataset.listingProductId,\n      slot: field.dataset.slot,\n      from: field.dataset.from,\n      to: replacement\n    })\n\n    const response = await fetch(this.renameUrlValue, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/x-www-form-urlencoded\",\n        \"X-CSRF-Token\": this._csrfToken(),\n        \"Accept\": \"text/vnd.turbo-stream.html\"\n      },\n      body: body.toString()\n    })\n\n    if (response.ok) {\n      Turbo.renderStreamMessage(await response.text())\n    }\n  }\n\n  _csrfToken() {\n    const meta = document.querySelector(\"meta[name='csrf-token']\")\n    return meta ? meta.content : \"\"\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"view-toggle\"\nexport default class extends Controller {\n  static targets = [\"gridView\", \"listView\", \"gridButton\", \"listButton\"]\n  static values = {\n    storageKey: { type: String, default: \"preferredView\" }\n  }\n\n  connect() {\n    // Load saved preference or default to grid\n    const savedView = localStorage.getItem(this.storageKeyValue) || \"grid\"\n    this.showView(savedView)\n  }\n\n  showGrid() {\n    this.showView(\"grid\")\n  }\n\n  showList() {\n    this.showView(\"list\")\n  }\n\n  showView(viewType) {\n    // Save preference\n    localStorage.setItem(this.storageKeyValue, viewType)\n\n    // Update view visibility\n    if (viewType === \"grid\") {\n      this.gridViewTarget.classList.remove(\"hidden\")\n      this.listViewTarget.classList.add(\"hidden\")\n\n      // Update button states - Grid active\n      this.gridButtonTarget.classList.add(\"bg-pz-purple\", \"text-white\")\n      this.gridButtonTarget.classList.remove(\"bg-white/90\", \"text-[rgba(20,17,42,.70)]\")\n\n      this.listButtonTarget.classList.remove(\"bg-pz-purple\", \"text-white\")\n      this.listButtonTarget.classList.add(\"bg-white/90\", \"text-[rgba(20,17,42,.70)]\")\n    } else {\n      this.listViewTarget.classList.remove(\"hidden\")\n      this.gridViewTarget.classList.add(\"hidden\")\n\n      // Update button states - List active\n      this.listButtonTarget.classList.add(\"bg-pz-purple\", \"text-white\")\n      this.listButtonTarget.classList.remove(\"bg-white/90\", \"text-[rgba(20,17,42,.70)]\")\n\n      this.gridButtonTarget.classList.remove(\"bg-pz-purple\", \"text-white\")\n      this.gridButtonTarget.classList.add(\"bg-white/90\", \"text-[rgba(20,17,42,.70)]\")\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Admin print-zone positioner: a draggable/resizable box over a template\n// image. Percent-based (of the rendered image), ratio-locked to the physical\n// print ratio, saved via JSON PATCH on pointerup.\nexport default class extends Controller {\n  static targets = [\"box\", \"image\", \"status\"]\n  static values = {\n    url: String,\n    zone: Object,       // { x, y, width, height } percents\n    printRatio: Number  // physical width_in / height_in\n  }\n\n  connect() {\n    this.zone = { ...this.zoneValue }\n    this.render()\n    this.boxTarget.addEventListener(\"pointerdown\", this.onPointerDown)\n  }\n\n  disconnect() {\n    this.boxTarget.removeEventListener(\"pointerdown\", this.onPointerDown)\n    // If torn down mid-drag (e.g. a Turbo frame replacement while dragging),\n    // onPointerUp never fires, so remove the move listener here too - otherwise\n    // it leaks a reference to this detached controller instance.\n    this.boxTarget.removeEventListener(\"pointermove\", this.onPointerMove)\n  }\n\n  onPointerDown = (e) => {\n    e.preventDefault()\n    this.boxTarget.setPointerCapture(e.pointerId)\n    this.mode = e.target.dataset.handle ? \"resize\" : \"drag\"\n    this.start = { x: e.clientX, y: e.clientY, zone: { ...this.zone } }\n    this.boxTarget.addEventListener(\"pointermove\", this.onPointerMove)\n    this.boxTarget.addEventListener(\"pointerup\", this.onPointerUp, { once: true })\n  }\n\n  onPointerMove = (e) => {\n    const rect = this.imageTarget.getBoundingClientRect()\n    const dx = ((e.clientX - this.start.x) / rect.width) * 100\n    const dy = ((e.clientY - this.start.y) / rect.height) * 100\n    const z = this.start.zone\n\n    if (this.mode === \"drag\") {\n      this.zone.x = Math.min(Math.max(z.x + dx, 0), 100 - z.width)\n      this.zone.y = Math.min(Math.max(z.y + dy, 0), 100 - z.height)\n    } else {\n      // Ratio lock in percent space: heightPct = widthPct / ratio * (imgW/imgH).\n      // Guard the ratio: a misconfigured location could render 0/blank, which\n      // would make height Infinity and corrupt the zone + PATCH payload.\n      const ratio = this.printRatioValue > 0 ? this.printRatioValue : 1\n      const imgAspect = rect.width / rect.height\n      let width = Math.min(Math.max(z.width + dx, 5), 100 - z.x)\n      let height = (width / ratio) * imgAspect\n      if (z.y + height > 100) {\n        height = 100 - z.y\n        width = (height * ratio) / imgAspect\n      }\n      this.zone.width = width\n      this.zone.height = height\n    }\n    this.render()\n  }\n\n  onPointerUp = () => {\n    this.boxTarget.removeEventListener(\"pointermove\", this.onPointerMove)\n    this.save()\n  }\n\n  render() {\n    const s = this.boxTarget.style\n    s.left = `${this.zone.x}%`\n    s.top = `${this.zone.y}%`\n    s.width = `${this.zone.width}%`\n    s.height = `${this.zone.height}%`\n  }\n\n  async save() {\n    this.statusTarget.textContent = \"Saving\u2026\"\n    try {\n      const csrfToken = document.querySelector('meta[name=\"csrf-token\"]').content\n      const response = await fetch(this.urlValue, {\n        method: \"PATCH\",\n        headers: { \"X-CSRF-Token\": csrfToken, \"Content-Type\": \"application/json\", \"Accept\": \"application/json\" },\n        body: JSON.stringify({ zone: this.zone })\n      })\n      this.statusTarget.textContent = response.ok ? \"Saved\" : \"Save failed\"\n    } catch {\n      this.statusTarget.textContent = \"Save failed\"\n    }\n  }\n}\n", "\n        import * as module0 from './accounts_controller.js';import * as module1 from './article_editor_controller.js';import * as module2 from './autogrow_controller.js';import * as module3 from './autosubmit_controller.js';import * as module4 from './billing_filter_controller.js';import * as module5 from './box_drawer_controller.js';import * as module6 from './box_scan_controller.js';import * as module7 from './braintree_controller.js';import * as module8 from './bulk_controller.js';import * as module9 from './bulk_variant_creator_controller.js';import * as module10 from './catalog_dropdown_controller.js';import * as module11 from './catalog_image_preview_controller.js';import * as module12 from './catalog_nav_controller.js';import * as module13 from './checkbox_select_controller.js';import * as module14 from './clipboard_controller.js';import * as module15 from './collapse_controller.js';import * as module16 from './color_swatch_controller.js';import * as module17 from './command_palette_controller.js';import * as module18 from './drawer_controller.js';import * as module19 from './dtg_dashboard_controller.js';import * as module20 from './etsy_import_controller.js';import * as module21 from './etsy_listing_sync_controller.js';import * as module22 from './etsy_product_map_picker_controller.js';import * as module23 from './feature_flag_controller.js';import * as module24 from './field_help_controller.js';import * as module25 from './filter_manager_controller.js';import * as module26 from './flash_clear_controller.js';import * as module27 from './form_controller.js';import * as module28 from './gift_box_form_controller.js';import * as module29 from './gift_box_packing_station_controller.js';import * as module30 from './gift_box_product_picker_controller.js';import * as module31 from './gift_box_template_form_controller.js';import * as module32 from './help_feedback_controller.js';import * as module33 from './inline_edit_controller.js';import * as module34 from './inventory_popover_controller.js';import * as module35 from './kiosk_keypad_controller.js';import * as module36 from './kiosk_reset_controller.js';import * as module37 from './lightbox_controller.js';import * as module38 from './line_items_controller.js';import * as module39 from './linked_row_controller.js';import * as module40 from './listing_builder_controller.js';import * as module41 from './listing_images_controller.js';import * as module42 from './listing_validator_controller.js';import * as module43 from './manual_order_controller.js';import * as module44 from './manual_order_variant_controller.js';import * as module45 from './mentions_controller.js';import * as module46 from './mobile_menu_controller.js';import * as module47 from './mockup_batch_poll_controller.js';import * as module48 from './mockup_output_size_controller.js';import * as module49 from './mockup_studio_picker_controller.js';import * as module50 from './mockup_upload_controller.js';import * as module51 from './mockup_uploader_controller.js';import * as module52 from './mockup_video_options_controller.js';import * as module53 from './mockup_video_selection_controller.js';import * as module54 from './modal_controller.js';import * as module55 from './nav_dropdown_controller.js';import * as module56 from './notifications_controller.js';import * as module57 from './order_item_controller.js';import * as module58 from './overlay_editor_controller.js';import * as module59 from './pack_station_controller.js';import * as module60 from './paddle_controller.js';import * as module61 from './pagy_initializer_controller.js';import * as module62 from './paypal_controller.js';import * as module63 from './persistent_dropdown_controller.js';import * as module64 from './personalization_questions_controller.js';import * as module65 from './pick_list_filter_controller.js';import * as module66 from './pick_list_scanner_controller.js';import * as module67 from './placement_editor_controller.js';import * as module68 from './po_filter_controller.js';import * as module69 from './po_line_item_type_controller.js';import * as module70 from './pricing_controller.js';import * as module71 from './print_file_drop_controller.js';import * as module72 from './print_file_editor_controller.js';import * as module73 from './print_file_render_poll_controller.js';import * as module74 from './print_files_controller.js';import * as module75 from './print_locations_controller.js';import * as module76 from './print_station_controller.js';import * as module77 from './product_form_sidebar_controller.js';import * as module78 from './product_picker_controller.js';import * as module79 from './product_variant_controller.js';import * as module80 from './production_dashboard_controller.js';import * as module81 from './production_station_controller.js';import * as module82 from './profile_sync_controller.js';import * as module83 from './push_status_controller.js';import * as module84 from './qc_station_controller.js';import * as module85 from './receiving_station_controller.js';import * as module86 from './remote_modal_controller.js';import * as module87 from './removable_controller.js';import * as module88 from './removals_controller.js';import * as module89 from './reset_form_controller.js';import * as module90 from './scroll_tabs_controller.js';import * as module91 from './search_filter_controller.js';import * as module92 from './section_nav_controller.js';import * as module93 from './select_controller.js';import * as module94 from './selecteds_action_controller.js';import * as module95 from './send_email_confirm_controller.js';import * as module96 from './shipping_toggle_controller.js';import * as module97 from './sidebar_controller.js';import * as module98 from './simple_modal_controller.js';import * as module99 from './size_prefix_preview_controller.js';import * as module100 from './sortable_list_controller.js';import * as module101 from './ss_inventory_controller.js';import * as module102 from './ss_refresh_controller.js';import * as module103 from './ss_variant_import_controller.js';import * as module104 from './status_dropdown_controller.js';import * as module105 from './sticky_toc_controller.js';import * as module106 from './stock_drawer_controller.js';import * as module107 from './stripe_controller.js';import * as module108 from './submit_guard_controller.js';import * as module109 from './submit_spinner_controller.js';import * as module110 from './support_ticket_filter_controller.js';import * as module111 from './tabbed_interface_controller.js';import * as module112 from './taxonomy_selector_controller.js';import * as module113 from './template_layer_form_controller.js';import * as module114 from './template_layer_inline_controller.js';import * as module115 from './template_product_picker_controller.js';import * as module116 from './template_selection_controller.js';import * as module117 from './theme_controller.js';import * as module118 from './toast_controller.js';import * as module119 from './tooltip_controller.js';import * as module120 from './turbo_controller.js';import * as module121 from './turbo_native/sign_out_controller.js';import * as module122 from './turnstile_controller.js';import * as module123 from './user_autocomplete_controller.js';import * as module124 from './variant_counter_controller.js';import * as module125 from './variant_price_edit_controller.js';import * as module126 from './variant_print_files_color_controller.js';import * as module127 from './variant_print_files_controller.js';import * as module128 from './variant_sku_manager_controller.js';import * as module129 from './variation_label_picker_controller.js';import * as module130 from './variation_values_controller.js';import * as module131 from './view_toggle_controller.js';import * as module132 from './zone_box_controller.js'\n        const modules = [{name: 'accounts', module: module0, filename: 'accounts_controller.js'},{name: 'article-editor', module: module1, filename: 'article_editor_controller.js'},{name: 'autogrow', module: module2, filename: 'autogrow_controller.js'},{name: 'autosubmit', module: module3, filename: 'autosubmit_controller.js'},{name: 'billing-filter', module: module4, filename: 'billing_filter_controller.js'},{name: 'box-drawer', module: module5, filename: 'box_drawer_controller.js'},{name: 'box-scan', module: module6, filename: 'box_scan_controller.js'},{name: 'braintree', module: module7, filename: 'braintree_controller.js'},{name: 'bulk', module: module8, filename: 'bulk_controller.js'},{name: 'bulk-variant-creator', module: module9, filename: 'bulk_variant_creator_controller.js'},{name: 'catalog-dropdown', module: module10, filename: 'catalog_dropdown_controller.js'},{name: 'catalog-image-preview', module: module11, filename: 'catalog_image_preview_controller.js'},{name: 'catalog-nav', module: module12, filename: 'catalog_nav_controller.js'},{name: 'checkbox-select', module: module13, filename: 'checkbox_select_controller.js'},{name: 'clipboard', module: module14, filename: 'clipboard_controller.js'},{name: 'collapse', module: module15, filename: 'collapse_controller.js'},{name: 'color-swatch', module: module16, filename: 'color_swatch_controller.js'},{name: 'command-palette', module: module17, filename: 'command_palette_controller.js'},{name: 'drawer', module: module18, filename: 'drawer_controller.js'},{name: 'dtg-dashboard', module: module19, filename: 'dtg_dashboard_controller.js'},{name: 'etsy-import', module: module20, filename: 'etsy_import_controller.js'},{name: 'etsy-listing-sync', module: module21, filename: 'etsy_listing_sync_controller.js'},{name: 'etsy-product-map-picker', module: module22, filename: 'etsy_product_map_picker_controller.js'},{name: 'feature-flag', module: module23, filename: 'feature_flag_controller.js'},{name: 'field-help', module: module24, filename: 'field_help_controller.js'},{name: 'filter-manager', module: module25, filename: 'filter_manager_controller.js'},{name: 'flash-clear', module: module26, filename: 'flash_clear_controller.js'},{name: 'form', module: module27, filename: 'form_controller.js'},{name: 'gift-box-form', module: module28, filename: 'gift_box_form_controller.js'},{name: 'gift-box-packing-station', module: module29, filename: 'gift_box_packing_station_controller.js'},{name: 'gift-box-product-picker', module: module30, filename: 'gift_box_product_picker_controller.js'},{name: 'gift-box-template-form', module: module31, filename: 'gift_box_template_form_controller.js'},{name: 'help-feedback', module: module32, filename: 'help_feedback_controller.js'},{name: 'inline-edit', module: module33, filename: 'inline_edit_controller.js'},{name: 'inventory-popover', module: module34, filename: 'inventory_popover_controller.js'},{name: 'kiosk-keypad', module: module35, filename: 'kiosk_keypad_controller.js'},{name: 'kiosk-reset', module: module36, filename: 'kiosk_reset_controller.js'},{name: 'lightbox', module: module37, filename: 'lightbox_controller.js'},{name: 'line-items', module: module38, filename: 'line_items_controller.js'},{name: 'linked-row', module: module39, filename: 'linked_row_controller.js'},{name: 'listing-builder', module: module40, filename: 'listing_builder_controller.js'},{name: 'listing-images', module: module41, filename: 'listing_images_controller.js'},{name: 'listing-validator', module: module42, filename: 'listing_validator_controller.js'},{name: 'manual-order', module: module43, filename: 'manual_order_controller.js'},{name: 'manual-order-variant', module: module44, filename: 'manual_order_variant_controller.js'},{name: 'mentions', module: module45, filename: 'mentions_controller.js'},{name: 'mobile-menu', module: module46, filename: 'mobile_menu_controller.js'},{name: 'mockup-batch-poll', module: module47, filename: 'mockup_batch_poll_controller.js'},{name: 'mockup-output-size', module: module48, filename: 'mockup_output_size_controller.js'},{name: 'mockup-studio-picker', module: module49, filename: 'mockup_studio_picker_controller.js'},{name: 'mockup-upload', module: module50, filename: 'mockup_upload_controller.js'},{name: 'mockup-uploader', module: module51, filename: 'mockup_uploader_controller.js'},{name: 'mockup-video-options', module: module52, filename: 'mockup_video_options_controller.js'},{name: 'mockup-video-selection', module: module53, filename: 'mockup_video_selection_controller.js'},{name: 'modal', module: module54, filename: 'modal_controller.js'},{name: 'nav-dropdown', module: module55, filename: 'nav_dropdown_controller.js'},{name: 'notifications', module: module56, filename: 'notifications_controller.js'},{name: 'order-item', module: module57, filename: 'order_item_controller.js'},{name: 'overlay-editor', module: module58, filename: 'overlay_editor_controller.js'},{name: 'pack-station', module: module59, filename: 'pack_station_controller.js'},{name: 'paddle', module: module60, filename: 'paddle_controller.js'},{name: 'pagy-initializer', module: module61, filename: 'pagy_initializer_controller.js'},{name: 'paypal', module: module62, filename: 'paypal_controller.js'},{name: 'persistent-dropdown', module: module63, filename: 'persistent_dropdown_controller.js'},{name: 'personalization-questions', module: module64, filename: 'personalization_questions_controller.js'},{name: 'pick-list-filter', module: module65, filename: 'pick_list_filter_controller.js'},{name: 'pick-list-scanner', module: module66, filename: 'pick_list_scanner_controller.js'},{name: 'placement-editor', module: module67, filename: 'placement_editor_controller.js'},{name: 'po-filter', module: module68, filename: 'po_filter_controller.js'},{name: 'po-line-item-type', module: module69, filename: 'po_line_item_type_controller.js'},{name: 'pricing', module: module70, filename: 'pricing_controller.js'},{name: 'print-file-drop', module: module71, filename: 'print_file_drop_controller.js'},{name: 'print-file-editor', module: module72, filename: 'print_file_editor_controller.js'},{name: 'print-file-render-poll', module: module73, filename: 'print_file_render_poll_controller.js'},{name: 'print-files', module: module74, filename: 'print_files_controller.js'},{name: 'print-locations', module: module75, filename: 'print_locations_controller.js'},{name: 'print-station', module: module76, filename: 'print_station_controller.js'},{name: 'product-form-sidebar', module: module77, filename: 'product_form_sidebar_controller.js'},{name: 'product-picker', module: module78, filename: 'product_picker_controller.js'},{name: 'product-variant', module: module79, filename: 'product_variant_controller.js'},{name: 'production-dashboard', module: module80, filename: 'production_dashboard_controller.js'},{name: 'production-station', module: module81, filename: 'production_station_controller.js'},{name: 'profile-sync', module: module82, filename: 'profile_sync_controller.js'},{name: 'push-status', module: module83, filename: 'push_status_controller.js'},{name: 'qc-station', module: module84, filename: 'qc_station_controller.js'},{name: 'receiving-station', module: module85, filename: 'receiving_station_controller.js'},{name: 'remote-modal', module: module86, filename: 'remote_modal_controller.js'},{name: 'removable', module: module87, filename: 'removable_controller.js'},{name: 'removals', module: module88, filename: 'removals_controller.js'},{name: 'reset-form', module: module89, filename: 'reset_form_controller.js'},{name: 'scroll-tabs', module: module90, filename: 'scroll_tabs_controller.js'},{name: 'search-filter', module: module91, filename: 'search_filter_controller.js'},{name: 'section-nav', module: module92, filename: 'section_nav_controller.js'},{name: 'select', module: module93, filename: 'select_controller.js'},{name: 'selecteds-action', module: module94, filename: 'selecteds_action_controller.js'},{name: 'send-email-confirm', module: module95, filename: 'send_email_confirm_controller.js'},{name: 'shipping-toggle', module: module96, filename: 'shipping_toggle_controller.js'},{name: 'sidebar', module: module97, filename: 'sidebar_controller.js'},{name: 'simple-modal', module: module98, filename: 'simple_modal_controller.js'},{name: 'size-prefix-preview', module: module99, filename: 'size_prefix_preview_controller.js'},{name: 'sortable-list', module: module100, filename: 'sortable_list_controller.js'},{name: 'ss-inventory', module: module101, filename: 'ss_inventory_controller.js'},{name: 'ss-refresh', module: module102, filename: 'ss_refresh_controller.js'},{name: 'ss-variant-import', module: module103, filename: 'ss_variant_import_controller.js'},{name: 'status-dropdown', module: module104, filename: 'status_dropdown_controller.js'},{name: 'sticky-toc', module: module105, filename: 'sticky_toc_controller.js'},{name: 'stock-drawer', module: module106, filename: 'stock_drawer_controller.js'},{name: 'stripe', module: module107, filename: 'stripe_controller.js'},{name: 'submit-guard', module: module108, filename: 'submit_guard_controller.js'},{name: 'submit-spinner', module: module109, filename: 'submit_spinner_controller.js'},{name: 'support-ticket-filter', module: module110, filename: 'support_ticket_filter_controller.js'},{name: 'tabbed-interface', module: module111, filename: 'tabbed_interface_controller.js'},{name: 'taxonomy-selector', module: module112, filename: 'taxonomy_selector_controller.js'},{name: 'template-layer-form', module: module113, filename: 'template_layer_form_controller.js'},{name: 'template-layer-inline', module: module114, filename: 'template_layer_inline_controller.js'},{name: 'template-product-picker', module: module115, filename: 'template_product_picker_controller.js'},{name: 'template-selection', module: module116, filename: 'template_selection_controller.js'},{name: 'theme', module: module117, filename: 'theme_controller.js'},{name: 'toast', module: module118, filename: 'toast_controller.js'},{name: 'tooltip', module: module119, filename: 'tooltip_controller.js'},{name: 'turbo', module: module120, filename: 'turbo_controller.js'},{name: 'turbo-native--sign-out', module: module121, filename: 'turbo_native/sign_out_controller.js'},{name: 'turnstile', module: module122, filename: 'turnstile_controller.js'},{name: 'user-autocomplete', module: module123, filename: 'user_autocomplete_controller.js'},{name: 'variant-counter', module: module124, filename: 'variant_counter_controller.js'},{name: 'variant-price-edit', module: module125, filename: 'variant_price_edit_controller.js'},{name: 'variant-print-files-color', module: module126, filename: 'variant_print_files_color_controller.js'},{name: 'variant-print-files', module: module127, filename: 'variant_print_files_controller.js'},{name: 'variant-sku-manager', module: module128, filename: 'variant_sku_manager_controller.js'},{name: 'variation-label-picker', module: module129, filename: 'variation_label_picker_controller.js'},{name: 'variation-values', module: module130, filename: 'variation_values_controller.js'},{name: 'view-toggle', module: module131, filename: 'view_toggle_controller.js'},{name: 'zone-box', module: module132, filename: 'zone_box_controller.js'}]\n        export default modules;\n      ", "var x=Object.defineProperty;var V=(t,s,e)=>s in t?x(t,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[s]=e;var i=(t,s,e)=>V(t,typeof s!=\"symbol\"?s+\"\":s,e);import{Controller as y}from\"@hotwired/stimulus\";async function n(t,s,e={}){s?await T(t,e):await b(t,e)}async function T(t,s={}){let{transitionClasses:e,fromClasses:a,toClasses:o,toggleClass:r}=C(\"Enter\",t,s);return v(t,{firstFrame(){t.classList.add(...e.split(\" \")),t.classList.add(...a.split(\" \")),t.classList.remove(...o.split(\" \")),t.classList.remove(...r.split(\" \"))},secondFrame(){t.classList.remove(...a.split(\" \")),t.classList.add(...o.split(\" \"))},ending(){t.classList.remove(...e.split(\" \"))}})}async function b(t,s={}){let{transitionClasses:e,fromClasses:a,toClasses:o,toggleClass:r}=C(\"Leave\",t,s);return v(t,{firstFrame(){t.classList.add(...a.split(\" \")),t.classList.remove(...o.split(\" \")),t.classList.add(...e.split(\" \"))},secondFrame(){t.classList.remove(...a.split(\" \")),t.classList.add(...o.split(\" \"))},ending(){t.classList.remove(...e.split(\" \")),t.classList.add(...r.split(\" \"))}})}function C(t,s,e){return{transitionClasses:s.dataset[`transition${t}`]||e[t.toLowerCase()]||t.toLowerCase(),fromClasses:s.dataset[`transition${t}From`]||e[`${t.toLowerCase()}From`]||`${t.toLowerCase()}-from`,toClasses:s.dataset[`transition${t}To`]||e[`${t.toLowerCase()}To`]||`${t.toLowerCase()}-to`,toggleClass:s.dataset.toggleClass||e.toggleClass||e.toggle||\"hidden\"}}function L(t){t._stimulus_transition={timeout:null,interrupted:!1}}function I(t){t._stimulus_transition&&t._stimulus_transition.interrupt&&t._stimulus_transition.interrupt()}function v(t,s){t._stimulus_transition&&I(t);let e,a,o;return L(t),t._stimulus_transition.cleanup=()=>{a||s.firstFrame(),o||s.secondFrame(),s.ending(),t._stimulus_transition=null},t._stimulus_transition.interrupt=()=>{e=!0,t._stimulus_transition.timeout&&clearTimeout(t._stimulus_transition.timeout),t._stimulus_transition.cleanup()},new Promise(r=>{e||requestAnimationFrame(()=>{e||(s.firstFrame(),a=!0,requestAnimationFrame(()=>{e||(s.secondFrame(),o=!0,t._stimulus_transition&&(t._stimulus_transition.timeout=setTimeout(()=>{if(e){r();return}t._stimulus_transition.cleanup(),r()},w(t))))}))})})}function w(t){let s=Number(getComputedStyle(t).transitionDuration.replace(/,.*/,\"\").replace(\"s\",\"\"))*1e3,e=Number(getComputedStyle(t).transitionDelay.replace(/,.*/,\"\").replace(\"s\",\"\"))*1e3;return s===0&&(s=Number(getComputedStyle(t).animationDuration.replace(\"s\",\"\"))*1e3),s+e}var g=class extends y{connect(){setTimeout(()=>{T(this.element)},this.showDelayValue),this.hasDismissAfterValue&&setTimeout(()=>{this.close()},this.dismissAfterValue)}close(){b(this.element).then(()=>{this.element.remove()})}};i(g,\"values\",{dismissAfter:Number,showDelay:{type:Number,default:0}});import{Controller as A}from\"@hotwired/stimulus\";var h=class extends A{connect(){this.timeout=null}save(){clearTimeout(this.timeout),this.timeout=setTimeout(()=>{this.statusTarget.textContent=this.submittingTextValue,this.formTarget.requestSubmit()},this.submitDurationValue)}success(){this.setStatus(this.successTextValue)}error(){this.setStatus(this.errorTextValue)}setStatus(t){this.statusTarget.textContent=t,this.timeout=setTimeout(()=>{this.statusTarget.textContent=\"\"},this.statusDurationValue)}};i(h,\"targets\",[\"form\",\"status\"]),i(h,\"values\",{submitDuration:{type:Number,default:1e3},statusDuration:{type:Number,default:2e3},submittingText:{type:String,default:\"Saving...\"},successText:{type:String,default:\"Saved!\"},errorText:{type:String,default:\"Unable to save.\"}});import{Controller as _}from\"@hotwired/stimulus\";var c=class extends _{update(){this.preview=this.colorTarget.value}set preview(t){this.previewTarget.style[this.styleValue]=t;let s=this._getContrastYIQ(t);this.styleValue===\"color\"?this.previewTarget.style.backgroundColor=s:this.previewTarget.style.color=s}_getContrastYIQ(t){t=t.replace(\"#\",\"\");let s=128,e=parseInt(t.substr(0,2),16),a=parseInt(t.substr(2,2),16),o=parseInt(t.substr(4,2),16);return(e*299+a*587+o*114)/1e3>=s?\"#000\":\"#fff\"}};i(c,\"targets\",[\"preview\",\"color\"]),i(c,\"values\",{style:{type:String,default:\"backgroundColor\"}});import{Controller as D}from\"@hotwired/stimulus\";var l=class extends D{connect(){this.boundBeforeCache=this.beforeCache.bind(this),document.addEventListener(\"turbo:before-cache\",this.boundBeforeCache)}disconnect(){document.removeEventListener(\"turbo:before-cache\",this.boundBeforeCache)}openValueChanged(){n(this.menuTarget,this.openValue,this.transitionOptions),this.openValue===!0&&this.hasMenuItemTarget&&this.menuItemTargets[0].focus()}show(){this.openValue=!0}close(){this.openValue=!1}hide(t){this.closeOnClickOutsideValue&&t.target.nodeType&&this.element.contains(t.target)===!1&&this.openValue&&(this.openValue=!1),this.closeOnEscapeValue&&t.key===\"Escape\"&&this.openValue&&(this.openValue=!1)}toggle(){this.openValue=!this.openValue}nextItem(t){t.preventDefault(),this.menuItemTargets[this.nextIndex].focus()}previousItem(t){t.preventDefault(),this.menuItemTargets[this.previousIndex].focus()}get currentItemIndex(){return this.menuItemTargets.indexOf(document.activeElement)}get nextIndex(){return Math.min(this.currentItemIndex+1,this.menuItemTargets.length-1)}get previousIndex(){return Math.max(this.currentItemIndex-1,0)}get transitionOptions(){return{enter:this.hasEnterClass?this.enterClasses.join(\" \"):\"transition ease-out duration-100\",enterFrom:this.hasEnterFromClass?this.enterFromClasses.join(\" \"):\"transform opacity-0 scale-95\",enterTo:this.hasEnterToClass?this.enterToClasses.join(\" \"):\"transform opacity-100 scale-100\",leave:this.hasLeaveClass?this.leaveClasses.join(\" \"):\"transition ease-in duration-75\",leaveFrom:this.hasLeaveFromClass?this.leaveFromClasses.join(\" \"):\"transform opacity-100 scale-100\",leaveTo:this.hasLeaveToClass?this.leaveToClasses.join(\" \"):\"transform opacity-0 scale-95\",toggleClass:this.hasToggleClass?this.toggleClasses.join(\" \"):\"hidden\"}}beforeCache(){this.openValue=!1,this.menuTarget.classList.add(this.transitionOptions.toggleClass)}};i(l,\"targets\",[\"menu\",\"button\",\"menuItem\"]),i(l,\"values\",{open:{type:Boolean,default:!1},closeOnEscape:{type:Boolean,default:!0},closeOnClickOutside:{type:Boolean,default:!0}}),i(l,\"classes\",[\"enter\",\"enterFrom\",\"enterTo\",\"leave\",\"leaveFrom\",\"leaveTo\",\"toggle\"]);import{Controller as F}from\"@hotwired/stimulus\";var d=class extends F{connect(){this.openValue&&this.open(),this.boundBeforeCache=this.beforeCache.bind(this),document.addEventListener(\"turbo:before-cache\",this.boundBeforeCache)}disconnect(){document.removeEventListener(\"turbo:before-cache\",this.boundBeforeCache)}open(){this.dialogTarget.showModal()}close(){this.dialogTarget.setAttribute(\"closing\",\"\"),Promise.all(this.dialogTarget.getAnimations().map(t=>t.finished)).then(()=>{this.dialogTarget.removeAttribute(\"closing\"),this.dialogTarget.close()})}backdropClose(t){t.target.nodeName==\"DIALOG\"&&this.close()}show(){this.dialogTarget.show()}hide(){this.close()}beforeCache(){this.close()}};i(d,\"targets\",[\"dialog\"]),i(d,\"values\",{open:Boolean});import{Controller as B}from\"@hotwired/stimulus\";var f=class extends B{openValueChanged(){n(this.contentTarget,this.openValue),this.shouldAutoDismiss&&this.scheduleDismissal()}show(t){this.shouldAutoDismiss&&this.scheduleDismissal(),this.openValue=!0}hide(){this.openValue=!1}toggle(){this.openValue=!this.openValue}get shouldAutoDismiss(){return this.openValue&&this.hasDismissAfterValue}scheduleDismissal(){this.hasDismissAfterValue&&(this.cancelDismissal(),this.timeoutId=setTimeout(()=>{this.hide(),this.timeoutId=void 0},this.dismissAfterValue))}cancelDismissal(){typeof this.timeoutId==\"number\"&&(clearTimeout(this.timeoutId),this.timeoutId=void 0)}};i(f,\"targets\",[\"content\"]),i(f,\"values\",{dismissAfter:Number,open:{type:Boolean,default:!1}});import{Controller as E}from\"@hotwired/stimulus\";var m=class extends E{connect(){this.openValue&&this.open(),this.boundBeforeCache=this.beforeCache,document.addEventListener(\"turbo:before-cache\",this.boundBeforeCache)}disconnect(){document.removeEventListener(\"turbo:before-cache\",this.boundBeforeCache)}open(){this.dialogTarget.showModal()}close(){this.dialogTarget.setAttribute(\"closing\",\"\"),Promise.all(this.dialogTarget.getAnimations().map(t=>t.finished)).then(()=>{this.dialogTarget.removeAttribute(\"closing\"),this.dialogTarget.close()})}backdropClose(t){t.target.nodeName==\"DIALOG\"&&this.close()}show(){this.open()}hide(){this.close()}beforeCache(){this.close()}};i(m,\"targets\",[\"dialog\"]),i(m,\"values\",{open:Boolean});import{Controller as S}from\"@hotwired/stimulus\";var u=class extends S{initialize(){this.updateAnchorValue&&this.anchor&&(this.indexValue=this.tabTargets.findIndex(t=>t.id===this.anchor))}connect(){this.showTab()}change(t){t.currentTarget.tagName===\"SELECT\"?this.indexValue=t.currentTarget.selectedIndex:t.currentTarget.dataset.index?this.indexValue=t.currentTarget.dataset.index:t.currentTarget.dataset.id?this.indexValue=this.tabTargets.findIndex(s=>s.id==t.currentTarget.dataset.id):this.indexValue=this.tabTargets.indexOf(t.currentTarget)}nextTab(){this.indexValue=Math.min(this.indexValue+1,this.tabsCount-1)}previousTab(){this.indexValue=Math.max(this.indexValue-1,0)}firstTab(){this.indexValue=0}lastTab(){this.indexValue=this.tabsCount-1}indexValueChanged(){if(this.showTab(),this.dispatch(\"tab-change\",{target:this.tabTargets[this.indexValue],detail:{activeIndex:this.indexValue}}),this.updateAnchorValue){let t=this.tabTargets[this.indexValue].id;if(this.scrollToAnchorValue)location.hash=t;else{let e=window.location.href.split(\"#\")[0]+\"#\"+t;typeof Turbo<\"u\"?Turbo.navigator.history.replace(new URL(e)):history.replaceState({},document.title,e)}}}showTab(){this.panelTargets.forEach((t,s)=>{let e=this.tabTargets[s];s===this.indexValue?(t.classList.remove(\"hidden\"),e.ariaSelected=\"true\",e.dataset.active=!0,this.hasInactiveTabClass&&e?.classList?.remove(...this.inactiveTabClasses),this.hasActiveTabClass&&e?.classList?.add(...this.activeTabClasses)):(t.classList.add(\"hidden\"),e.ariaSelected=null,delete e.dataset.active,this.hasActiveTabClass&&e?.classList?.remove(...this.activeTabClasses),this.hasInactiveTabClass&&e?.classList?.add(...this.inactiveTabClasses))}),this.hasSelectTarget&&(this.selectTarget.selectedIndex=this.indexValue),this.scrollActiveTabIntoViewValue&&this.scrollToActiveTab()}scrollToActiveTab(){let t=this.element.querySelector(\"[aria-selected]\");t&&t.scrollIntoView({inline:\"center\"})}get tabsCount(){return this.tabTargets.length}get anchor(){return document.URL.split(\"#\").length>1?document.URL.split(\"#\")[1]:null}};i(u,\"classes\",[\"activeTab\",\"inactiveTab\"]),i(u,\"targets\",[\"tab\",\"panel\",\"select\"]),i(u,\"values\",{index:0,updateAnchor:Boolean,scrollToAnchor:Boolean,scrollActiveTabIntoView:Boolean});import{Controller as N}from\"@hotwired/stimulus\";var p=class extends N{toggle(t){this.openValue=!this.openValue,this.animate()}toggleInput(t){this.openValue=t.target.checked,this.animate()}hide(){this.openValue=!1,this.animate()}show(){this.openValue=!0,this.animate()}animate(){this.toggleableTargets.forEach(t=>{n(t,this.openValue)})}};i(p,\"targets\",[\"toggleable\"]),i(p,\"values\",{open:{type:Boolean,default:!1}});export{g as Alert,h as Autosave,c as ColorPreview,l as Dropdown,d as Modal,f as Popover,m as Slideover,u as Tabs,p as Toggle,n as transition};\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: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\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: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\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\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\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      <span class='flatpickr-weekday'>\\n        \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n      </span>\\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", "/*\nStimulus 3.0.0\nCopyright © 2021 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    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())\n            .reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\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).sort().forEach(key => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName: matches[2],\n        eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n        identifier: matches[5],\n        methodName: matches[7]\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.split(\":\").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 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\nclass Action {\n    constructor(element, index, descriptor) {\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    }\n    static forToken(token) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content));\n    }\n    toString() {\n        const eventNameSuffix = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventNameSuffix}->${this.identifier}#${this.methodName}`;\n    }\n    get params() {\n        if (this.eventTarget instanceof Element) {\n            return this.getParamsFromEventTargetAttributes(this.eventTarget);\n        }\n        else {\n            return {};\n        }\n    }\n    getParamsFromEventTargetAttributes(eventTarget) {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`);\n        const attributes = Array.from(eventTarget.attributes);\n        attributes.forEach(({ name, value }) => {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                Object.assign(params, { [camelize(key)]: typecast(value) });\n            }\n        });\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n}\nconst defaultEventNames = {\n    \"a\": e => \"click\",\n    \"button\": e => \"click\",\n    \"form\": e => \"submit\",\n    \"input\": e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n    \"select\": e => \"change\",\n    \"textarea\": e => \"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        if (this.willBeInvokedByEvent(event)) {\n            this.invokeWithEvent(event);\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    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            const { params } = this.action;\n            const actionEvent = Object.assign(event, { params });\n            this.method.call(this.controller, actionEvent);\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 (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.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, { attributes: true, childList: true, subtree: 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            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(node, attributeName) {\n        const element = node;\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    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\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\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 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    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)\n            .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.trim().split(/\\s+/).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));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token);\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        this.invokeChangedCallbacksForDefaultValues();\n    }\n    start() {\n        this.stringMapObserver.start();\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            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    }\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        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            this.delegate.targetConnected(element, name);\n        }\n    }\n    disconnectTarget(element, name) {\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            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\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        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        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\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.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    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\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\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) => [\n            ...Object.getOwnPropertyNames(object),\n            ...Object.getOwnPropertySymbols(object)\n        ];\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 () { this.a.call(this); };\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\n            || this.findTarget(targetName)\n            || 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 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    }\n    findElement(selector) {\n        return this.element.matches(selector)\n            ? this.element\n            : 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}\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        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    }\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    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};\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    }\n    static start(element, schema) {\n        const application = new Application(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        if (controllerConstructor.shouldLoad) {\n            this.load({ identifier, controllerConstructor });\n        }\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach(definition => this.router.loadDefinition(definition));\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 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);\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) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair);\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]) {\n    return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array: return \"array\";\n        case Boolean: return \"boolean\";\n        case Number: return \"number\";\n        case Object: return \"object\";\n        case String: return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\": return \"boolean\";\n        case \"number\": return \"number\";\n        case \"string\": 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(typeObject) {\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    if (typeFromObject) {\n        const defaultValueType = parseValueTypeDefault(typeObject.default);\n        if (typeFromObject !== defaultValueType) {\n            throw new Error(`Type \"${typeFromObject}\" must match the type of the default value. Given default value: \"${typeObject.default}\" as \"${defaultValueType}\"`);\n        }\n        return typeFromObject;\n    }\n}\nfunction parseValueTypeDefinition(typeDefinition) {\n    const typeFromObject = parseValueTypeObject(typeDefinition);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    throw new Error(`Unknown value type \"${typeDefinition}\"`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const defaultValue = typeDefinition.default;\n    if (defaultValue !== undefined)\n        return defaultValue;\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(typeDefinition);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() { return defaultValueForDefinition(typeDefinition); },\n        get hasCustomDefaultValue() { return parseValueTypeDefault(typeDefinition) !== undefined; },\n        reader: readers[type],\n        writer: writers[type] || writers.default\n    };\n}\nconst defaultValuesByType = {\n    get array() { return []; },\n    boolean: false,\n    number: 0,\n    get object() { return {}; },\n    string: \"\"\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(\"Expected array\");\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || value == \"false\");\n    },\n    number(value) {\n        return Number(value);\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 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    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 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 = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "export const kebabCase = string =>\n  string\n    .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n    .replace(/[\\s_]+/g, \"-\")\n    .toLowerCase();\n\nexport const capitalize = string => {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n};\n", "const booleanOptions = [\n  'allowInput',\n  'altInput',\n  'animate',\n  'clickOpens',\n  'closeOnSelect',\n  'disableMobile',\n  'enableSeconds',\n  'enableTime',\n  'inline',\n  'noCalendar',\n  'shorthandCurrentMonth',\n  'static',\n  'time_24hr',\n  'weekNumbers',\n  'wrap'\n]\n\nconst stringOptions = [\n  'altInputClass',\n  'conjunction',\n  'mode',\n  'nextArrow',\n  'position',\n  'prevArrow',\n  'monthSelectorType'\n]\n\nconst numberOptions = [\n  'defaultHour',\n  'defaultMinute',\n  'defaultSeconds',\n  'hourIncrement',\n  'minuteIncrement',\n  'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n  string: stringOptions,\n  boolean: booleanOptions,\n  date: dateOptions,\n  array: arrayOptions,\n  number: numberOptions,\n  arrayOrString: arrayOrStringOptions\n}\n", "export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n", "export const elements = [\n  'calendarContainer',\n  'currentYearElement',\n  'days',\n  'daysContainer',\n  'input',\n  'nextMonthNav',\n  'monthNav',\n  'prevMonthNav',\n  'rContainer',\n  'selectedDateElem',\n  'todayDateElem',\n  'weekdayContainer'\n]\n", "export const mapping = {\n  '%Y': 'Y',\n  '%y': 'y',\n  '%C': 'Y',\n  '%m': 'm',\n  '%-m': 'n',\n  '%_m': 'n',\n  '%B': 'F',\n  '%^B': 'F',\n  '%b': 'M',\n  '%^b': 'M',\n  '%h': 'M',\n  '%^h': 'M',\n  '%d': 'd',\n  '%-d': 'j',\n  '%e': 'j',\n  '%H': 'H',\n  '%k': 'H',\n  '%I': 'h',\n  '%l': 'h',\n  '%-l': 'h',\n  '%P': 'K',\n  '%p': 'K',\n  '%M': 'i',\n  '%S': 'S',\n  '%A': 'l',\n  '%a': 'D',\n  '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n  Object.keys(mapping)\n    .join('|')\n    .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n  'g'\n)\n\nexport const convertDateFormat = (format) => {\n  return format.replace(strftimeRegex, (match) => {\n    return mapping[match]\n  })\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n  static targets = ['instance']\n\n  initialize() {\n    this.config = {}\n  }\n\n  connect() {\n    this._initializeEvents()\n    this._initializeOptions()\n    this._initializeDateFormats()\n\n    this.fp = flatpickr(this.flatpickrElement, {\n      ...this.config\n    })\n\n    this._initializeElements()\n  }\n\n  disconnect() {\n    const value = this.inputTarget.value\n    this.fp.destroy()\n    this.inputTarget.value = value\n  }\n\n  _initializeEvents() {\n    events.forEach((event) => {\n      if (this[event]) {\n        const hook = `on${capitalize(event)}`\n        this.config[hook] = this[event].bind(this)\n      }\n    })\n  }\n\n  _initializeOptions() {\n    Object.keys(options).forEach((optionType) => {\n      const optionsCamelCase = options[optionType]\n      optionsCamelCase.forEach((option) => {\n        const optionKebab = kebabCase(option)\n        if (this.data.has(optionKebab)) {\n          this.config[option] = this[`_${optionType}`](optionKebab)\n        }\n      })\n    })\n    this._handleDaysOfWeek()\n  }\n\n  _handleDaysOfWeek() {\n    if (this.config.disableDaysOfWeek) {\n      this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n      this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n    }\n\n    if (this.config.enableDaysOfWeek) {\n      this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n      this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n    }\n  }\n\n  _validateDaysOfWeek(days) {\n    if (Array.isArray(days)) {\n      return days.map((day) => parseInt(day))\n    } else {\n      console.error('days of week must be a valid array')\n      return []\n    }\n  }\n\n  _disable(date) {\n    const disabledDays = this.config.disableDaysOfWeek\n    return disabledDays.includes(date.getDay())\n  }\n\n  _enable(date) {\n    const enabledDays = this.config.enableDaysOfWeek\n    return enabledDays.includes(date.getDay())\n  }\n\n  _initializeDateFormats() {\n    dateFormats.forEach((dateFormat) => {\n      if (this.data.has(dateFormat)) {\n        this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n      }\n    })\n  }\n\n  _initializeElements() {\n    elements.forEach((element) => {\n      this[`${element}Target`] = this.fp[element]\n    })\n  }\n\n  _string(option) {\n    return this.data.get(option)\n  }\n\n  _date(option) {\n    return this.data.get(option)\n  }\n\n  _boolean(option) {\n    return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n  }\n\n  _array(option) {\n    return JSON.parse(this.data.get(option))\n  }\n\n  _number(option) {\n    return parseInt(this.data.get(option))\n  }\n\n  _arrayOrString(option) {\n    const val = this.data.get(option)\n    try {\n      return JSON.parse(val)\n    } catch (e) {\n      return val\n    }\n  }\n\n  get flatpickrElement() {\n    return (this.hasInstanceTarget && this.instanceTarget) || this.element\n  }\n}\n\nexport default StimulusFlatpickr\n", "/*!\nHotwireCombobox 0.3.2\n*/\nimport { Controller } from '@hotwired/stimulus';\n\nconst Combobox = {};\n\nCombobox.Actors = Base => class extends Base {\n  _initializeActors() {\n    this._actingListbox = this.listboxTarget;\n    this._actingCombobox = this.comboboxTarget;\n  }\n\n  _forAllComboboxes(callback) {\n    this._allComboboxes.forEach(callback);\n  }\n\n  get _actingListbox() {\n    return this.actingListbox\n  }\n\n  set _actingListbox(listbox) {\n    this.actingListbox = listbox;\n  }\n\n  get _actingCombobox() {\n    return this.actingCombobox\n  }\n\n  set _actingCombobox(combobox) {\n    this.actingCombobox = combobox;\n  }\n\n  get _allComboboxes() {\n    return [ this.comboboxTarget, this.dialogComboboxTarget ]\n  }\n};\n\nCombobox.Announcements = Base => class extends Base {\n  _announceToScreenReader(display, action) {\n    this.announcerTarget.innerText = `${display} ${action}`;\n  }\n};\n\nCombobox.AsyncLoading = Base => class extends Base {\n  get _isAsync() {\n    return this.hasAsyncSrcValue\n  }\n\n  get _isSync() {\n    return !this._isAsync\n  }\n};\n\nfunction Concerns(Base, ...mixins) {\n  return mixins.reduce((accumulator, current) => current(accumulator), Base)\n}\n\nfunction visible(target) {\n  return !(target.hidden || target.closest(\"[hidden]\"))\n}\n\nfunction wrapAroundAccess(array, index) {\n  const first = 0;\n  const last = array.length - 1;\n\n  if (index < first) return array[last]\n  if (index > last) return array[first]\n  return array[index]\n}\n\nfunction applyFilter(query, { matching }) {\n  return (target) => {\n    if (query) {\n      const value = target.getAttribute(matching) || \"\";\n      const match = value.toLowerCase().includes(query.toLowerCase());\n\n      target.hidden = !match;\n    } else {\n      target.hidden = false;\n    }\n  }\n}\n\nfunction cancel(event) {\n  event.stopPropagation();\n  event.preventDefault();\n}\n\nfunction startsWith(string, substring) {\n  return string.toLowerCase().startsWith(substring.toLowerCase())\n}\n\nfunction debounce(fn, delay = 150) {\n  let timeoutId = null;\n\n  return (...args) => {\n    const callback = () => fn.apply(this, args);\n    clearTimeout(timeoutId);\n    timeoutId = setTimeout(callback, delay);\n  }\n}\n\nfunction isDeleteEvent(event) {\n  return event.inputType === \"deleteContentBackward\" || event.inputType === \"deleteWordBackward\"\n}\n\nfunction sleep(ms) {\n  return new Promise(resolve => setTimeout(resolve, ms))\n}\n\nfunction unselectedPortion(element) {\n  if (element.selectionStart === element.selectionEnd) {\n    return element.value\n  } else {\n    return element.value.substring(0, element.selectionStart)\n  }\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n  const event = new CustomEvent(eventName, {\n    cancelable,\n    bubbles: true,\n    composed: true,\n    detail\n  });\n\n  if (target && target.isConnected) {\n    target.dispatchEvent(event);\n  } else {\n    document.documentElement.dispatchEvent(event);\n  }\n\n  return event\n}\n\nfunction nextRepaint() {\n  if (document.visibilityState === \"hidden\") {\n    return nextEventLoopTick()\n  } else {\n    return nextAnimationFrame()\n  }\n}\n\nfunction nextAnimationFrame() {\n  return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n  return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nCombobox.Autocomplete = Base => class extends Base {\n  _connectListAutocomplete() {\n    if (!this._autocompletesList) {\n      this._visuallyHideListbox();\n    }\n  }\n\n  _replaceFullQueryWithAutocompletedValue(option) {\n    const autocompletedValue = option.getAttribute(this.autocompletableAttributeValue);\n\n    this._fullQuery = autocompletedValue;\n    this._actingCombobox.setSelectionRange(autocompletedValue.length, autocompletedValue.length);\n  }\n\n  _autocompleteMissingPortion(option) {\n    const typedValue = this._typedQuery;\n    const autocompletedValue = option.getAttribute(this.autocompletableAttributeValue);\n\n    if (this._autocompletesInline && startsWith(autocompletedValue, typedValue)) {\n      this._fullQuery = autocompletedValue;\n      this._actingCombobox.setSelectionRange(typedValue.length, autocompletedValue.length);\n    }\n  }\n\n  // +visuallyHideListbox+ hides the listbox from the user,\n  // but makes it still searchable by JS.\n  _visuallyHideListbox() {\n    this.listboxTarget.style.display = \"none\";\n  }\n\n  get _isExactAutocompleteMatch() {\n    return this._immediatelyAutocompletableValue === this._fullQuery\n  }\n\n  // All `_isExactAutocompleteMatch` matches are `_isPartialAutocompleteMatch` matches\n  // but not all `_isPartialAutocompleteMatch` matches are `_isExactAutocompleteMatch` matches.\n  get _isPartialAutocompleteMatch() {\n    return !!this._immediatelyAutocompletableValue &&\n      startsWith(this._immediatelyAutocompletableValue, this._fullQuery)\n  }\n\n  get _autocompletesList() {\n    return this.autocompleteValue === \"both\" || this.autocompleteValue === \"list\"\n  }\n\n  get _autocompletesInline() {\n    return this.autocompleteValue === \"both\" || this.autocompleteValue === \"inline\"\n  }\n\n  get _immediatelyAutocompletableValue() {\n    return this._ensurableOption?.getAttribute(this.autocompletableAttributeValue)\n  }\n};\n\nconst MAX_CALLBACK_ATTEMPTS = 3;\n\nCombobox.Callbacks = Base => class extends Base {\n  _initializeCallbacks() {\n    this.callbackQueue = [];\n    this.callbackExecutionAttempts = {};\n  }\n\n  _enqueueCallback() {\n    const callbackId = crypto.randomUUID();\n    this.callbackQueue.push(callbackId);\n    return callbackId\n  }\n\n  _isNextCallback(callbackId) {\n    return this._nextCallback === callbackId\n  }\n\n  _callbackAttemptsExceeded(callbackId) {\n    return this._callbackAttempts(callbackId) > MAX_CALLBACK_ATTEMPTS\n  }\n\n  _callbackAttempts(callbackId) {\n    return this.callbackExecutionAttempts[callbackId] || 0\n  }\n\n  _recordCallbackAttempt(callbackId) {\n    this.callbackExecutionAttempts[callbackId] = this._callbackAttempts(callbackId) + 1;\n  }\n\n  _dequeueCallback(callbackId) {\n    this.callbackQueue = this.callbackQueue.filter(id => id !== callbackId);\n    this._forgetCallbackExecutionAttempts(callbackId);\n  }\n\n  _forgetCallbackExecutionAttempts(callbackId) {\n    delete this.callbackExecutionAttempts[callbackId];\n  }\n\n  get _nextCallback() {\n    return this.callbackQueue[0]\n  }\n};\n\nCombobox.Dialog = Base => class extends Base {\n  rerouteListboxStreamToDialog({ detail: { newStream } }) {\n    if (newStream.target == this.listboxTarget.id && this._dialogIsOpen) {\n      newStream.setAttribute(\"target\", this.dialogListboxTarget.id);\n    }\n  }\n\n  _connectDialog() {\n    if (window.visualViewport) {\n      window.visualViewport.addEventListener(\"resize\", this._resizeDialog);\n    }\n  }\n\n  _disconnectDialog() {\n    if (window.visualViewport) {\n      window.visualViewport.removeEventListener(\"resize\", this._resizeDialog);\n    }\n  }\n\n  _moveArtifactsToDialog() {\n    this.dialogComboboxTarget.value = this._fullQuery;\n\n    this._actingCombobox = this.dialogComboboxTarget;\n    this._actingListbox = this.dialogListboxTarget;\n\n    this.dialogListboxTarget.append(...this.listboxTarget.children);\n  }\n\n  _moveArtifactsInline() {\n    this.comboboxTarget.value = this._fullQuery;\n\n    this._actingCombobox = this.comboboxTarget;\n    this._actingListbox = this.listboxTarget;\n\n    this.listboxTarget.append(...this.dialogListboxTarget.children);\n  }\n\n  _resizeDialog = () => {\n    if (window.visualViewport) {\n      this.dialogTarget.style.setProperty(\n        \"--hw-visual-viewport-height\",\n        `${window.visualViewport.height}px`\n      );\n    }\n  }\n\n  // After closing a dialog, focus returns to the last focused element.\n  // +preventFocusingComboboxAfterClosingDialog+ focuses a placeholder element before opening\n  // the dialog, so that the combobox is not focused again after closing, which would reopen.\n  _preventFocusingComboboxAfterClosingDialog() {\n    this.dialogFocusTrapTarget.focus();\n  }\n\n  get _isSmallViewport() {\n    return window.matchMedia(`(max-width: ${this.smallViewportMaxWidthValue})`).matches\n  }\n\n  get _dialogIsOpen() {\n    return this.dialogTarget.open\n  }\n};\n\nCombobox.Events = Base => class extends Base {\n  _dispatchPreselectionEvent({ isNewAndAllowed, previousValue }) {\n    if (previousValue === this._incomingFieldValueString) return\n\n    dispatch(\"hw-combobox:preselection\", {\n      target: this.element,\n      detail: { ...this._eventableDetails, isNewAndAllowed, previousValue }\n    });\n  }\n\n  _dispatchSelectionEvent() {\n    dispatch(\"hw-combobox:selection\", {\n      target: this.element,\n      detail: this._eventableDetails\n    });\n  }\n\n  _dispatchRemovalEvent({ removedDisplay, removedValue }) {\n    dispatch(\"hw-combobox:removal\", {\n      target: this.element,\n      detail: { ...this._eventableDetails, removedDisplay, removedValue }\n    });\n  }\n\n  get _eventableDetails() {\n    return {\n      value: this._incomingFieldValueString,\n      display: this._fullQuery,\n      query: this._typedQuery,\n      fieldName: this._fieldName,\n      isValid: this._valueIsValid\n    }\n  }\n};\n\nclass FetchResponse {\n  constructor(response) {\n    this.response = response;\n  }\n  get statusCode() {\n    return this.response.status;\n  }\n  get redirected() {\n    return this.response.redirected;\n  }\n  get ok() {\n    return this.response.ok;\n  }\n  get unauthenticated() {\n    return this.statusCode === 401;\n  }\n  get unprocessableEntity() {\n    return this.statusCode === 422;\n  }\n  get authenticationURL() {\n    return this.response.headers.get(\"WWW-Authenticate\");\n  }\n  get contentType() {\n    const contentType = this.response.headers.get(\"Content-Type\") || \"\";\n    return contentType.replace(/;.*$/, \"\");\n  }\n  get headers() {\n    return this.response.headers;\n  }\n  get html() {\n    if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n      return this.text;\n    }\n    return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`));\n  }\n  get json() {\n    if (this.contentType.match(/^application\\/.*json$/)) {\n      return this.responseJson || (this.responseJson = this.response.json());\n    }\n    return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`));\n  }\n  get text() {\n    return this.responseText || (this.responseText = this.response.text());\n  }\n  get isTurboStream() {\n    return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/);\n  }\n  async renderTurboStream() {\n    if (this.isTurboStream) {\n      if (window.Turbo) {\n        await window.Turbo.renderStreamMessage(await this.text);\n      } else {\n        console.warn(\"You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js\");\n      }\n    } else {\n      return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`));\n    }\n  }\n}\n\nclass RequestInterceptor {\n  static register(interceptor) {\n    this.interceptor = interceptor;\n  }\n  static get() {\n    return this.interceptor;\n  }\n  static reset() {\n    this.interceptor = undefined;\n  }\n}\n\nfunction getCookie(name) {\n  const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n  const prefix = `${encodeURIComponent(name)}=`;\n  const cookie = cookies.find((cookie => cookie.startsWith(prefix)));\n  if (cookie) {\n    const value = cookie.split(\"=\").slice(1).join(\"=\");\n    if (value) {\n      return decodeURIComponent(value);\n    }\n  }\n}\n\nfunction compact(object) {\n  const result = {};\n  for (const key in object) {\n    const value = object[key];\n    if (value !== undefined) {\n      result[key] = value;\n    }\n  }\n  return result;\n}\n\nfunction metaContent(name) {\n  const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n  return element && element.content;\n}\n\nfunction stringEntriesFromFormData(formData) {\n  return [ ...formData ].reduce(((entries, [name, value]) => entries.concat(typeof value === \"string\" ? [ [ name, value ] ] : [])), []);\n}\n\nfunction mergeEntries(searchParams, entries) {\n  for (const [name, value] of entries) {\n    if (value instanceof window.File) continue;\n    if (searchParams.has(name) && !name.includes(\"[]\")) {\n      searchParams.delete(name);\n      searchParams.set(name, value);\n    } else {\n      searchParams.append(name, value);\n    }\n  }\n}\n\nclass FetchRequest {\n  constructor(method, url, options = {}) {\n    this.method = method;\n    this.options = options;\n    this.originalUrl = url.toString();\n  }\n  async perform() {\n    try {\n      const requestInterceptor = RequestInterceptor.get();\n      if (requestInterceptor) {\n        await requestInterceptor(this);\n      }\n    } catch (error) {\n      console.error(error);\n    }\n    const response = new FetchResponse(await window.fetch(this.url, this.fetchOptions));\n    if (response.unauthenticated && response.authenticationURL) {\n      return Promise.reject(window.location.href = response.authenticationURL);\n    }\n    const responseStatusIsTurboStreamable = response.ok || response.unprocessableEntity;\n    if (responseStatusIsTurboStreamable && response.isTurboStream) {\n      await response.renderTurboStream();\n    }\n    return response;\n  }\n  addHeader(key, value) {\n    const headers = this.additionalHeaders;\n    headers[key] = value;\n    this.options.headers = headers;\n  }\n  sameHostname() {\n    if (!this.originalUrl.startsWith(\"http:\")) {\n      return true;\n    }\n    try {\n      return new URL(this.originalUrl).hostname === window.location.hostname;\n    } catch (_) {\n      return true;\n    }\n  }\n  get fetchOptions() {\n    return {\n      method: this.method.toUpperCase(),\n      headers: this.headers,\n      body: this.formattedBody,\n      signal: this.signal,\n      credentials: this.credentials,\n      redirect: this.redirect\n    };\n  }\n  get headers() {\n    const baseHeaders = {\n      \"X-Requested-With\": \"XMLHttpRequest\",\n      \"Content-Type\": this.contentType,\n      Accept: this.accept\n    };\n    if (this.sameHostname()) {\n      baseHeaders[\"X-CSRF-Token\"] = this.csrfToken;\n    }\n    return compact(Object.assign(baseHeaders, this.additionalHeaders));\n  }\n  get csrfToken() {\n    return getCookie(metaContent(\"csrf-param\")) || metaContent(\"csrf-token\");\n  }\n  get contentType() {\n    if (this.options.contentType) {\n      return this.options.contentType;\n    } else if (this.body == null || this.body instanceof window.FormData) {\n      return undefined;\n    } else if (this.body instanceof window.File) {\n      return this.body.type;\n    }\n    return \"application/json\";\n  }\n  get accept() {\n    switch (this.responseKind) {\n     case \"html\":\n      return \"text/html, application/xhtml+xml\";\n\n     case \"turbo-stream\":\n      return \"text/vnd.turbo-stream.html, text/html, application/xhtml+xml\";\n\n     case \"json\":\n      return \"application/json, application/vnd.api+json\";\n\n     default:\n      return \"*/*\";\n    }\n  }\n  get body() {\n    return this.options.body;\n  }\n  get query() {\n    const originalQuery = (this.originalUrl.split(\"?\")[1] || \"\").split(\"#\")[0];\n    const params = new URLSearchParams(originalQuery);\n    let requestQuery = this.options.query;\n    if (requestQuery instanceof window.FormData) {\n      requestQuery = stringEntriesFromFormData(requestQuery);\n    } else if (requestQuery instanceof window.URLSearchParams) {\n      requestQuery = requestQuery.entries();\n    } else {\n      requestQuery = Object.entries(requestQuery || {});\n    }\n    mergeEntries(params, requestQuery);\n    const query = params.toString();\n    return query.length > 0 ? `?${query}` : \"\";\n  }\n  get url() {\n    return this.originalUrl.split(\"?\")[0].split(\"#\")[0] + this.query;\n  }\n  get responseKind() {\n    return this.options.responseKind || \"html\";\n  }\n  get signal() {\n    return this.options.signal;\n  }\n  get redirect() {\n    return this.options.redirect || \"follow\";\n  }\n  get credentials() {\n    return this.options.credentials || \"same-origin\";\n  }\n  get additionalHeaders() {\n    return this.options.headers || {};\n  }\n  get formattedBody() {\n    const bodyIsAString = Object.prototype.toString.call(this.body) === \"[object String]\";\n    const contentTypeIsJson = this.headers[\"Content-Type\"] === \"application/json\";\n    if (contentTypeIsJson && !bodyIsAString) {\n      return JSON.stringify(this.body);\n    }\n    return this.body;\n  }\n}\n\nasync function get(url, options) {\n  const request = new FetchRequest(\"get\", url, options);\n  return request.perform();\n}\n\nasync function post(url, options) {\n  const request = new FetchRequest(\"post\", url, options);\n  return request.perform();\n}\n\n// Copyright (c) 2021 Marcelo Lauxen\n\n// Permission is hereby granted, free of charge, to any person obtaining\n// a copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to\n// the following conditions:\n\n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nCombobox.Filtering = Base => class extends Base {\n  filterAndSelect({ inputType }) {\n    this._filter(inputType);\n\n    if (this._isSync) {\n      this._selectOnQuery(inputType);\n    }\n  }\n\n  clear(event) {\n    this._clearQuery();\n    this.chipDismisserTargets.forEach(el => el.click());\n    if (event && !event.defaultPrevented) event.target.focus();\n  }\n\n  _initializeFiltering() {\n    this._debouncedFilterAsync = debounce(this._debouncedFilterAsync.bind(this));\n  }\n\n  _filter(inputType) {\n    if (this._isAsync) {\n      this._debouncedFilterAsync(inputType);\n    } else {\n      this._filterSync();\n    }\n\n    this._markQueried();\n  }\n\n  _debouncedFilterAsync(inputType) {\n    this._filterAsync(inputType);\n  }\n\n  async _filterAsync(inputType) {\n    const query = {\n      q: this._fullQuery,\n      input_type: inputType,\n      for_id: this.element.dataset.asyncId,\n      callback_id: this._enqueueCallback()\n    };\n\n    await get(this.asyncSrcValue, { responseKind: \"turbo-stream\", query });\n  }\n\n  _filterSync() {\n    this._allFilterableOptionElements.forEach(\n      applyFilter(\n        this._fullQuery,\n        { matching: this.filterableAttributeValue }\n      )\n    );\n  }\n\n  _clearQuery() {\n    this._fullQuery = \"\";\n    this.filterAndSelect({ inputType: \"deleteContentBackward\" });\n  }\n\n  _markQueried() {\n    this._forAllComboboxes(el => el.toggleAttribute(\"data-queried\", this._isQueried));\n  }\n\n  get _isQueried() {\n    return this._fullQuery.length > 0\n  }\n\n  get _fullQuery() {\n    return this._actingCombobox.value\n  }\n\n  set _fullQuery(value) {\n    this._actingCombobox.value = value;\n  }\n\n  get _typedQuery() {\n    return unselectedPortion(this._actingCombobox)\n  }\n};\n\nCombobox.FormField = Base => class extends Base {\n  get _fieldValue() {\n    if (this._isMultiselect) {\n      const currentValue = this.hiddenFieldTarget.value;\n      const arrayFromValue = currentValue ? currentValue.split(\",\") : [];\n\n      return new Set(arrayFromValue)\n    } else {\n      return this.hiddenFieldTarget.value\n    }\n  }\n\n  get _fieldValueString() {\n    if (this._isMultiselect) {\n      return this._fieldValueArray.join(\",\")\n    } else {\n      return this.hiddenFieldTarget.value\n    }\n  }\n\n  get _incomingFieldValueString() {\n    if (this._isMultiselect) {\n      const array = this._fieldValueArray;\n\n      if (this.hiddenFieldTarget.dataset.valueForMultiselect) {\n        array.push(this.hiddenFieldTarget.dataset.valueForMultiselect);\n      }\n\n      return array.join(\",\")\n    } else {\n      return this.hiddenFieldTarget.value\n    }\n  }\n\n  get _fieldValueArray() {\n    if (this._isMultiselect) {\n      return Array.from(this._fieldValue)\n    } else {\n      return [ this.hiddenFieldTarget.value ]\n    }\n  }\n\n  set _fieldValue(value) {\n    if (this._isMultiselect) {\n      this.hiddenFieldTarget.dataset.valueForMultiselect = value?.replace(/,/g, \"\");\n      this.hiddenFieldTarget.dataset.displayForMultiselect = this._fullQuery;\n    } else {\n      this.hiddenFieldTarget.value = value;\n    }\n  }\n\n  get _hasEmptyFieldValue() {\n    if (this._isMultiselect) {\n      return this.hiddenFieldTarget.dataset.valueForMultiselect == \"\" ||\n        this.hiddenFieldTarget.dataset.valueForMultiselect == \"undefined\"\n    } else {\n      return this.hiddenFieldTarget.value === \"\"\n    }\n  }\n\n  get _hasFieldValue() {\n    return !this._hasEmptyFieldValue\n  }\n\n  get _fieldName() {\n    return this.hiddenFieldTarget.name\n  }\n\n  set _fieldName(value) {\n    this.hiddenFieldTarget.name = value;\n  }\n};\n\nCombobox.Multiselect = Base => class extends Base {\n  navigateChip(event) {\n    this._chipKeyHandlers[event.key]?.call(this, event);\n  }\n\n  removeChip({ currentTarget, params }) {\n    let display;\n    const option = this._optionElementWithValue(params.value);\n\n    if (option) {\n      display = option.getAttribute(this.autocompletableAttributeValue);\n      this._markNotSelected(option);\n      this._markNotMultiselected(option);\n    } else {\n      display = params.value; // for new options\n    }\n\n    this._removeFromFieldValue(params.value);\n    this._filter(\"hw:multiselectSync\");\n\n    currentTarget.closest(\"[data-hw-combobox-chip]\").remove();\n\n    if (!this._isSmallViewport) {\n      this.openByFocusing();\n    }\n\n    this._announceToScreenReader(display, \"removed\");\n    this._dispatchRemovalEvent({ removedDisplay: display, removedValue: params.value });\n  }\n\n  hideChipsForCache() {\n    this.element.querySelectorAll(\"[data-hw-combobox-chip]\").forEach(chip => chip.hidden = true);\n  }\n\n  _chipKeyHandlers = {\n    Backspace: (event) => {\n      this.removeChip(event);\n      cancel(event);\n    },\n    Enter: (event) => {\n      this.removeChip(event);\n      cancel(event);\n    },\n    Space: (event) => {\n      this.removeChip(event);\n      cancel(event);\n    },\n    Escape: (event) => {\n      this.openByFocusing();\n      cancel(event);\n    }\n  }\n\n  _connectMultiselect() {\n    if (!this._isMultiPreselected) {\n      this._preselectMultiple();\n      this._markMultiPreselected();\n    }\n  }\n\n  async _createChip(shouldReopen) {\n    if (!this._isMultiselect) return\n\n    this._beforeClearingMultiselectQuery(async (display, value) => {\n      this._fullQuery = \"\";\n      this._filter(\"hw:multiselectSync\");\n      this._requestChips(value);\n      this._addToFieldValue(value);\n      if (shouldReopen) {\n        await nextRepaint();\n        this.openByFocusing();\n      }\n      this._announceToScreenReader(display, \"multi-selected. Press Shift + Tab, then Enter to remove.\");\n    });\n  }\n\n  async _requestChips(values) {\n    await post(this.selectionChipSrcValue, {\n      responseKind: \"turbo-stream\",\n      query: {\n        for_id: this.element.dataset.asyncId,\n        combobox_values: values\n      }\n    });\n  }\n\n  _beforeClearingMultiselectQuery(callback) {\n    const display = this.hiddenFieldTarget.dataset.displayForMultiselect;\n    const value = this.hiddenFieldTarget.dataset.valueForMultiselect;\n\n    if (value && !this._fieldValue.has(value)) {\n      callback(display, value);\n    }\n\n    this.hiddenFieldTarget.dataset.displayForMultiselect = \"\";\n    this.hiddenFieldTarget.dataset.valueForMultiselect = \"\";\n  }\n\n  _resetMultiselectionMarks() {\n    if (!this._isMultiselect) return\n\n    this._fieldValueArray.forEach(value => {\n      const option = this._optionElementWithValue(value);\n\n      if (option) {\n        option.setAttribute(\"data-multiselected\", \"\");\n        option.hidden = true;\n      }\n    });\n  }\n\n  _markNotMultiselected(option) {\n    if (!this._isMultiselect) return\n\n    option.removeAttribute(\"data-multiselected\");\n    option.hidden = false;\n  }\n\n  _addToFieldValue(value) {\n    const newValue = this._fieldValue;\n\n    newValue.add(String(value));\n    this.hiddenFieldTarget.value = Array.from(newValue).join(\",\");\n\n    if (this._isSync) this._resetMultiselectionMarks();\n  }\n\n  _removeFromFieldValue(value) {\n    const newValue = this._fieldValue;\n\n    newValue.delete(String(value));\n    this.hiddenFieldTarget.value = Array.from(newValue).join(\",\");\n\n    if (this._isSync) this._resetMultiselectionMarks();\n  }\n\n  _focusLastChipDismisser() {\n    this.chipDismisserTargets[this.chipDismisserTargets.length - 1]?.focus();\n  }\n\n  _markMultiPreselected() {\n    this.element.dataset.multiPreselected = \"\";\n  }\n\n  get _isMultiselect() {\n    return this.hasSelectionChipSrcValue\n  }\n\n  get _isSingleSelect() {\n    return !this._isMultiselect\n  }\n\n  get _isMultiPreselected() {\n    return this.element.hasAttribute(\"data-multi-preselected\")\n  }\n};\n\nCombobox.Navigation = Base => class extends Base {\n  navigate(event) {\n    if (this._autocompletesList) {\n      this._navigationKeyHandlers[event.key]?.call(this, event);\n    }\n  }\n\n  _navigationKeyHandlers = {\n    ArrowUp: (event) => {\n      this._selectIndex(this._selectedOptionIndex - 1);\n      cancel(event);\n    },\n    ArrowDown: (event) => {\n      this._selectIndex(this._selectedOptionIndex + 1);\n\n      if (this._selectedOptionIndex === 0) {\n        this._actingListbox.scrollTop = 0;\n      }\n\n      cancel(event);\n    },\n    Home: (event) => {\n      this._selectIndex(0);\n      cancel(event);\n    },\n    End: (event) => {\n      this._selectIndex(this._visibleOptionElements.length - 1);\n      cancel(event);\n    },\n    Enter: (event) => {\n      this._closeAndBlur(\"hw:keyHandler:enter\");\n      cancel(event);\n    },\n    Escape: (event) => {\n      this._closeAndBlur(\"hw:keyHandler:escape\");\n      cancel(event);\n    },\n    Backspace: (event) => {\n      if (this._isMultiselect && !this._fullQuery) {\n        this._focusLastChipDismisser();\n        cancel(event);\n      }\n    }\n  }\n};\n\nCombobox.NewOptions = Base => class extends Base {\n  _shouldTreatAsNewOptionForFiltering(queryIsBeingRefined) {\n    if (queryIsBeingRefined) {\n      return this._isNewOptionWithNoPotentialMatches\n    } else {\n      return this._isNewOptionWithPotentialMatches\n    }\n  }\n\n  // If the user is going to keep refining the query, we can't be sure whether\n  // the option will end up being new or not unless there are no potential matches.\n  // +_isNewOptionWithNoPotentialMatches+ allows us to make our best guess\n  // while the state of the combobox is still in flux.\n  //\n  // It's okay for the combobox to say it's not new even if it will be eventually,\n  // as only the final state matters for submission purposes. This method exists\n  // as a best effort to keep the state accurate as often as we can.\n  //\n  // Note that the first visible option is automatically selected as you type.\n  // So if there's a partial match, it's not a new option at this point.\n  //\n  // The final state is locked-in upon closing the combobox via `_isNewOptionWithPotentialMatches`.\n  get _isNewOptionWithNoPotentialMatches() {\n    return this._isNewOptionWithPotentialMatches && !this._isPartialAutocompleteMatch\n  }\n\n  // If the query is finalized, we don't care that there are potential matches\n  // because new options can be substrings of existing options.\n  //\n  // We can't use `_isNewOptionWithNoPotentialMatches` because that would\n  // rule out new options that are partial matches.\n  get _isNewOptionWithPotentialMatches() {\n    return this._isQueried && this._allowNew && !this._isExactAutocompleteMatch\n  }\n};\n\nCombobox.Options = Base => class extends Base {\n  _resetOptionsSilently() {\n    this._resetOptions(this._deselect.bind(this));\n  }\n\n  _resetOptionsAndNotify() {\n    this._resetOptions(this._deselectAndNotify.bind(this));\n  }\n\n  _resetOptions(deselectionStrategy) {\n    this._fieldName = this.originalNameValue;\n    deselectionStrategy();\n  }\n\n  _optionElementWithValue(value) {\n    return this._actingListbox.querySelector(`[${this.filterableAttributeValue}][data-value='${value}']`)\n  }\n\n  _displayForOptionElement(element) {\n    return element.getAttribute(this.autocompletableAttributeValue)\n  }\n\n  get _allowNew() {\n    return !!this.nameWhenNewValue\n  }\n\n  get _allOptions() {\n    return Array.from(this._allFilterableOptionElements)\n  }\n\n  get _allFilterableOptionElements() {\n    return this._actingListbox.querySelectorAll(`[${this.filterableAttributeValue}]:not([data-multiselected])`)\n  }\n\n  get _visibleOptionElements() {\n    return [ ...this._allFilterableOptionElements ].filter(visible)\n  }\n\n  get _selectedOptionElement() {\n    return this._actingListbox.querySelector(\"[role=option][aria-selected=true]:not([data-multiselected])\")\n  }\n\n  get _multiselectedOptionElements() {\n    return this._actingListbox.querySelectorAll(\"[role=option][data-multiselected]\")\n  }\n\n  get _selectedOptionIndex() {\n    return [ ...this._visibleOptionElements ].indexOf(this._selectedOptionElement)\n  }\n\n  get _isUnjustifiablyBlank() {\n    const valueIsMissing = this._hasEmptyFieldValue;\n    const noBlankOptionSelected = !this._selectedOptionElement;\n\n    return valueIsMissing && noBlankOptionSelected\n  }\n};\n\nCombobox.Selection = Base => class extends Base {\n  selectOnClick({ currentTarget, inputType }) {\n    this._forceSelectionAndFilter(currentTarget, inputType);\n    this._closeAndBlur(\"hw:optionRoleClick\");\n  }\n\n  _connectSelection() {\n    if (this.hasPrefilledDisplayValue) {\n      this._fullQuery = this.prefilledDisplayValue;\n      this._markQueried();\n    }\n  }\n\n  _selectOnQuery(inputType) {\n    if (this._shouldTreatAsNewOptionForFiltering(!isDeleteEvent({ inputType: inputType }))) {\n      this._selectNew();\n    } else if (isDeleteEvent({ inputType: inputType })) {\n      this._deselect();\n    } else if (inputType === \"hw:lockInSelection\" && this._ensurableOption) {\n      this._selectAndAutocompleteMissingPortion(this._ensurableOption);\n    } else if (this._isOpen && this._visibleOptionElements[0]) {\n      this._selectAndAutocompleteMissingPortion(this._visibleOptionElements[0]);\n    } else if (this._isOpen) {\n      this._resetOptionsAndNotify();\n      this._markInvalid();\n    } else ;\n  }\n\n  _select(option, autocompleteStrategy) {\n    const previousValue = this._fieldValueString;\n\n    this._resetOptionsSilently();\n\n    autocompleteStrategy(option);\n\n    this._fieldValue = option.dataset.value;\n    this._markSelected(option);\n    this._markValid();\n    this._dispatchPreselectionEvent({ isNewAndAllowed: false, previousValue: previousValue });\n\n    option.scrollIntoView({ block: \"nearest\" });\n  }\n\n  _selectNew() {\n    const previousValue = this._fieldValueString;\n\n    this._resetOptionsSilently();\n    this._fieldValue = this._fullQuery;\n    this._fieldName = this.nameWhenNewValue;\n    this._markValid();\n    this._dispatchPreselectionEvent({ isNewAndAllowed: true, previousValue: previousValue });\n  }\n\n  _deselect() {\n    const previousValue = this._fieldValueString;\n\n    if (this._selectedOptionElement) {\n      this._markNotSelected(this._selectedOptionElement);\n    }\n\n    this._fieldValue = \"\";\n    this._setActiveDescendant(\"\");\n\n    return previousValue\n  }\n\n  _deselectAndNotify() {\n    const previousValue = this._deselect();\n    this._dispatchPreselectionEvent({ isNewAndAllowed: false, previousValue: previousValue });\n  }\n\n  _selectIndex(index) {\n    const option = wrapAroundAccess(this._visibleOptionElements, index);\n    this._forceSelectionWithoutFiltering(option);\n  }\n\n  _preselectSingle() {\n    if (this._isSingleSelect && this._hasValueButNoSelection && this._allOptions.length < 100) {\n      const option = this._optionElementWithValue(this._fieldValue);\n      if (option) this._markSelected(option);\n    }\n  }\n\n  _preselectMultiple() {\n    if (this._isMultiselect && this._hasValueButNoSelection) {\n      this._requestChips(this._fieldValueString);\n      this._resetMultiselectionMarks();\n    }\n  }\n\n  _selectAndAutocompleteMissingPortion(option) {\n    this._select(option, this._autocompleteMissingPortion.bind(this));\n  }\n\n  _selectAndAutocompleteFullQuery(option) {\n    this._select(option, this._replaceFullQueryWithAutocompletedValue.bind(this));\n  }\n\n  _forceSelectionAndFilter(option, inputType) {\n    this._forceSelectionWithoutFiltering(option);\n    this._filter(inputType);\n  }\n\n  _forceSelectionWithoutFiltering(option) {\n    this._selectAndAutocompleteFullQuery(option);\n  }\n\n  _lockInSelection() {\n    if (this._shouldLockInSelection) {\n      this._forceSelectionAndFilter(this._ensurableOption, \"hw:lockInSelection\");\n    }\n  }\n\n  _markSelected(option) {\n    if (this.hasSelectedClass) option.classList.add(this.selectedClass);\n    option.setAttribute(\"aria-selected\", true);\n    this._setActiveDescendant(option.id);\n  }\n\n  _markNotSelected(option) {\n    if (this.hasSelectedClass) option.classList.remove(this.selectedClass);\n    option.removeAttribute(\"aria-selected\");\n    this._removeActiveDescendant();\n  }\n\n  _setActiveDescendant(id) {\n    this._forAllComboboxes(el => el.setAttribute(\"aria-activedescendant\", id));\n  }\n\n  _removeActiveDescendant() {\n    this._setActiveDescendant(\"\");\n  }\n\n  get _hasValueButNoSelection() {\n    return this._hasFieldValue && !this._hasSelection\n  }\n\n  get _hasSelection() {\n    if (this._isSingleSelect) {\n      this._selectedOptionElement;\n    } else {\n      this._multiselectedOptionElements.length > 0;\n    }\n  }\n\n  get _shouldLockInSelection() {\n    return this._isQueried && !!this._ensurableOption && !this._isNewOptionWithPotentialMatches\n  }\n\n  get _ensurableOption() {\n    return this._selectedOptionElement || this._visibleOptionElements[0]\n  }\n};\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n  var passiveTestOptions = {\n    get passive() {\n      hasPassiveEvents = true;\n      return undefined;\n    }\n  };\n  window.addEventListener('testPassive', null, passiveTestOptions);\n  window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPosition = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n  return locks.some(function (lock) {\n    if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n      return true;\n    }\n\n    return false;\n  });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n  var e = rawEvent || window.event;\n\n  // For the case whereby consumers adds a touchmove event listener to document.\n  // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n  // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n  // the touchmove event on document will break.\n  if (allowTouchMove(e.target)) {\n    return true;\n  }\n\n  // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n  if (e.touches.length > 1) return true;\n\n  if (e.preventDefault) e.preventDefault();\n\n  return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n  // If previousBodyPaddingRight is already set, don't set it again.\n  if (previousBodyPaddingRight === undefined) {\n    var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n    var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n    if (_reserveScrollBarGap && scrollBarGap > 0) {\n      var computedBodyPaddingRight = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'), 10);\n      previousBodyPaddingRight = document.body.style.paddingRight;\n      document.body.style.paddingRight = computedBodyPaddingRight + scrollBarGap + 'px';\n    }\n  }\n\n  // If previousBodyOverflowSetting is already set, don't set it again.\n  if (previousBodyOverflowSetting === undefined) {\n    previousBodyOverflowSetting = document.body.style.overflow;\n    document.body.style.overflow = 'hidden';\n  }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n  if (previousBodyPaddingRight !== undefined) {\n    document.body.style.paddingRight = previousBodyPaddingRight;\n\n    // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n    // can be set again.\n    previousBodyPaddingRight = undefined;\n  }\n\n  if (previousBodyOverflowSetting !== undefined) {\n    document.body.style.overflow = previousBodyOverflowSetting;\n\n    // Restore previousBodyOverflowSetting to undefined\n    // so setOverflowHidden knows it can be set again.\n    previousBodyOverflowSetting = undefined;\n  }\n};\n\nvar setPositionFixed = function setPositionFixed() {\n  return window.requestAnimationFrame(function () {\n    // If previousBodyPosition is already set, don't set it again.\n    if (previousBodyPosition === undefined) {\n      previousBodyPosition = {\n        position: document.body.style.position,\n        top: document.body.style.top,\n        left: document.body.style.left\n      };\n\n      // Update the dom inside an animation frame\n      var _window = window,\n          scrollY = _window.scrollY,\n          scrollX = _window.scrollX,\n          innerHeight = _window.innerHeight;\n\n      document.body.style.position = 'fixed';\n      document.body.style.top = -scrollY + 'px';\n      document.body.style.left = -scrollX + 'px';\n\n      setTimeout(function () {\n        return window.requestAnimationFrame(function () {\n          // Attempt to check if the bottom bar appeared due to the position change\n          var bottomBarHeight = innerHeight - window.innerHeight;\n          if (bottomBarHeight && scrollY >= innerHeight) {\n            // Move the content further up so that the bottom bar doesn't hide it\n            document.body.style.top = -(scrollY + bottomBarHeight);\n          }\n        });\n      }, 300);\n    }\n  });\n};\n\nvar restorePositionSetting = function restorePositionSetting() {\n  if (previousBodyPosition !== undefined) {\n    // Convert the position from \"px\" to Int\n    var y = -parseInt(document.body.style.top, 10);\n    var x = -parseInt(document.body.style.left, 10);\n\n    // Restore styles\n    document.body.style.position = previousBodyPosition.position;\n    document.body.style.top = previousBodyPosition.top;\n    document.body.style.left = previousBodyPosition.left;\n\n    // Restore scroll\n    window.scrollTo(x, y);\n\n    previousBodyPosition = undefined;\n  }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n  return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n  var clientY = event.targetTouches[0].clientY - initialClientY;\n\n  if (allowTouchMove(event.target)) {\n    return false;\n  }\n\n  if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n    // element is at the top of its scroll.\n    return preventDefault(event);\n  }\n\n  if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n    // element is at the bottom of its scroll.\n    return preventDefault(event);\n  }\n\n  event.stopPropagation();\n  return true;\n};\n\nvar disableBodyScroll = function disableBodyScroll(targetElement, options) {\n  // targetElement must be provided\n  if (!targetElement) {\n    // eslint-disable-next-line no-console\n    console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n    return;\n  }\n\n  // disableBodyScroll must not have been called on this targetElement before\n  if (locks.some(function (lock) {\n    return lock.targetElement === targetElement;\n  })) {\n    return;\n  }\n\n  var lock = {\n    targetElement: targetElement,\n    options: options || {}\n  };\n\n  locks = [].concat(_toConsumableArray(locks), [lock]);\n\n  if (isIosDevice) {\n    setPositionFixed();\n  } else {\n    setOverflowHidden(options);\n  }\n\n  if (isIosDevice) {\n    targetElement.ontouchstart = function (event) {\n      if (event.targetTouches.length === 1) {\n        // detect single touch.\n        initialClientY = event.targetTouches[0].clientY;\n      }\n    };\n    targetElement.ontouchmove = function (event) {\n      if (event.targetTouches.length === 1) {\n        // detect single touch.\n        handleScroll(event, targetElement);\n      }\n    };\n\n    if (!documentListenerAdded) {\n      document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n      documentListenerAdded = true;\n    }\n  }\n};\n\nvar enableBodyScroll = function enableBodyScroll(targetElement) {\n  if (!targetElement) {\n    // eslint-disable-next-line no-console\n    console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n    return;\n  }\n\n  locks = locks.filter(function (lock) {\n    return lock.targetElement !== targetElement;\n  });\n\n  if (isIosDevice) {\n    targetElement.ontouchstart = null;\n    targetElement.ontouchmove = null;\n\n    if (documentListenerAdded && locks.length === 0) {\n      document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n      documentListenerAdded = false;\n    }\n  }\n\n  if (isIosDevice) {\n    restorePositionSetting();\n  } else {\n    restoreOverflowSetting();\n  }\n};\n\n// MIT License\n\n// Copyright (c) 2018 Will Po\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nCombobox.Toggle = Base => class extends Base {\n  open() {\n    this.expandedValue = true;\n  }\n\n  openByFocusing() {\n    this._actingCombobox.focus();\n  }\n\n  close(inputType) {\n    if (this._isOpen) {\n      const shouldReopen = this._isMultiselect &&\n        this._isSync &&\n        !this._isSmallViewport &&\n        inputType != \"hw:clickOutside\" &&\n        inputType != \"hw:focusOutside\" &&\n        inputType != \"hw:asyncCloser\";\n\n      this._lockInSelection();\n      this._clearInvalidQuery();\n\n      this.expandedValue = false;\n\n      this._dispatchSelectionEvent();\n\n      if (inputType != \"hw:keyHandler:escape\") {\n        this._createChip(shouldReopen);\n      }\n\n      if (this._isSingleSelect && this._selectedOptionElement) {\n        this._announceToScreenReader(this._displayForOptionElement(this._selectedOptionElement), \"selected\");\n      }\n    }\n  }\n\n  toggle() {\n    if (this.expandedValue) {\n      this._closeAndBlur(\"hw:toggle\");\n    } else {\n      this.openByFocusing();\n    }\n  }\n\n  closeOnClickOutside(event) {\n    const target = event.target;\n\n    if (!this._isOpen) return\n    if (this.mainWrapperTarget.contains(target) && !this._isDialogDismisser(target)) return\n    if (this._withinElementBounds(event)) return\n\n    this._closeAndBlur(\"hw:clickOutside\");\n  }\n\n  closeOnFocusOutside({ target }) {\n    if (!this._isOpen) return\n    if (this.element.contains(target)) return\n\n    this._closeAndBlur(\"hw:focusOutside\");\n  }\n\n  clearOrToggleOnHandleClick() {\n    if (this._isQueried) {\n      this._clearQuery();\n      this._actingCombobox.focus();\n    } else {\n      this.toggle();\n    }\n  }\n\n  _closeAndBlur(inputType) {\n    this.close(inputType);\n    this._actingCombobox.blur();\n  }\n\n  // Some browser extensions like 1Password overlay elements on top of the combobox.\n  // Hovering over these elements emits a click event for some reason.\n  // These events don't contain any telling information, so we use `_withinElementBounds`\n  // as an alternative to check whether the click is legitimate.\n  _withinElementBounds(event) {\n    const { left, right, top, bottom } = this.mainWrapperTarget.getBoundingClientRect();\n    const { clientX, clientY } = event;\n\n    return clientX >= left && clientX <= right && clientY >= top && clientY <= bottom\n  }\n\n  _isDialogDismisser(target) {\n    return target.closest(\"dialog\") && target.role != \"combobox\"\n  }\n\n  _expand() {\n    if (this._isSync) {\n      this._preselectSingle();\n    }\n\n    if (this._autocompletesList && this._isSmallViewport) {\n      this._openInDialog();\n    } else {\n      this._openInline();\n    }\n\n    this._actingCombobox.setAttribute(\"aria-expanded\", true); // needs to happen after setting acting combobox\n  }\n\n  // +._collapse()+ differs from `.close()` in that it might be called by stimulus on connect because\n  // it interprets a change in `expandedValue`\u00A0\u2014 whereas `.close()` is only called internally by us.\n  _collapse() {\n    this._actingCombobox.setAttribute(\"aria-expanded\", false); // needs to happen before resetting acting combobox\n\n    if (this._dialogIsOpen) {\n      this._closeInDialog();\n    } else {\n      this._closeInline();\n    }\n  }\n\n  _openInDialog() {\n    this._moveArtifactsToDialog();\n    this._preventFocusingComboboxAfterClosingDialog();\n    this._preventBodyScroll();\n    this.dialogTarget.showModal();\n  }\n\n  _openInline() {\n    this.listboxTarget.hidden = false;\n  }\n\n  _closeInDialog() {\n    this._moveArtifactsInline();\n    this.dialogTarget.close();\n    this._restoreBodyScroll();\n    this._actingCombobox.scrollIntoView({ block: \"center\" });\n  }\n\n  _closeInline() {\n    this.listboxTarget.hidden = true;\n  }\n\n  _preventBodyScroll() {\n    disableBodyScroll(this.dialogListboxTarget);\n  }\n\n  _restoreBodyScroll() {\n    enableBodyScroll(this.dialogListboxTarget);\n  }\n\n  _clearInvalidQuery() {\n    if (this._isUnjustifiablyBlank) {\n      this._deselect();\n      this._clearQuery();\n    }\n  }\n\n  get _isOpen() {\n    return this.expandedValue\n  }\n};\n\nCombobox.Validity = Base => class extends Base {\n  _markValid() {\n    if (this._valueIsInvalid) return\n\n    this._forAllComboboxes(combobox => {\n      if (this.hasInvalidClass) {\n        combobox.classList.remove(this.invalidClass);\n      }\n\n      combobox.removeAttribute(\"aria-invalid\");\n      combobox.removeAttribute(\"aria-errormessage\");\n    });\n  }\n\n  _markInvalid() {\n    if (this._valueIsValid) return\n\n    this._forAllComboboxes(combobox => {\n      if (this.hasInvalidClass) {\n        combobox.classList.add(this.invalidClass);\n      }\n\n      combobox.setAttribute(\"aria-invalid\", true);\n      combobox.setAttribute(\"aria-errormessage\", `Please select a valid option for ${combobox.name}`);\n    });\n  }\n\n  get _valueIsValid() {\n    return !this._valueIsInvalid\n  }\n\n  // +_valueIsInvalid+ only checks if `comboboxTarget` (and not `_actingCombobox`) is required\n  // because the `required` attribute is only forwarded to the `comboboxTarget` element\n  get _valueIsInvalid() {\n    const isRequiredAndEmpty = this.comboboxTarget.required && this._hasEmptyFieldValue;\n    return isRequiredAndEmpty\n  }\n};\n\nwindow.HOTWIRE_COMBOBOX_STREAM_DELAY = 0; // ms, for testing purposes\n\nconst concerns = [\n  Controller,\n  Combobox.Actors,\n  Combobox.Announcements,\n  Combobox.AsyncLoading,\n  Combobox.Autocomplete,\n  Combobox.Callbacks,\n  Combobox.Dialog,\n  Combobox.Events,\n  Combobox.Filtering,\n  Combobox.FormField,\n  Combobox.Multiselect,\n  Combobox.Navigation,\n  Combobox.NewOptions,\n  Combobox.Options,\n  Combobox.Selection,\n  Combobox.Toggle,\n  Combobox.Validity\n];\n\nclass HwComboboxController extends Concerns(...concerns) {\n  static classes = [\n    \"invalid\",\n    \"selected\"\n  ]\n\n  static targets = [\n    \"announcer\",\n    \"combobox\",\n    \"chipDismisser\",\n    \"closer\",\n    \"dialog\",\n    \"dialogCombobox\",\n    \"dialogFocusTrap\",\n    \"dialogListbox\",\n    \"endOfOptionsStream\",\n    \"handle\",\n    \"hiddenField\",\n    \"listbox\",\n    \"mainWrapper\"\n  ]\n\n  static values = {\n    asyncSrc: String,\n    autocompletableAttribute: String,\n    autocomplete: String,\n    expanded: Boolean,\n    filterableAttribute: String,\n    nameWhenNew: String,\n    originalName: String,\n    prefilledDisplay: String,\n    selectionChipSrc: String,\n    smallViewportMaxWidth: String\n  }\n\n  initialize() {\n    this._initializeActors();\n    this._initializeFiltering();\n    this._initializeCallbacks();\n  }\n\n  connect() {\n    this.idempotentConnect();\n  }\n\n  idempotentConnect() {\n    this._connectSelection();\n    this._connectMultiselect();\n    this._connectListAutocomplete();\n    this._connectDialog();\n  }\n\n  disconnect() {\n    this._disconnectDialog();\n  }\n\n  expandedValueChanged() {\n    if (this.expandedValue) {\n      this._expand();\n    } else {\n      this._collapse();\n    }\n  }\n\n  async endOfOptionsStreamTargetConnected(element) {\n    if (element.dataset.callbackId) {\n      this._runCallback(element);\n    } else {\n      this._preselectSingle();\n    }\n  }\n\n  async _runCallback(element) {\n    const callbackId = element.dataset.callbackId;\n\n    if (this._callbackAttemptsExceeded(callbackId)) {\n      this._dequeueCallback(callbackId);\n      return\n    } else {\n      this._recordCallbackAttempt(callbackId);\n    }\n\n    if (this._isNextCallback(callbackId)) {\n      const inputType = element.dataset.inputType;\n      const delay = window.HOTWIRE_COMBOBOX_STREAM_DELAY;\n\n      if (delay) await sleep(delay);\n      this._dequeueCallback(callbackId);\n      this._resetMultiselectionMarks();\n\n      if (inputType === \"hw:multiselectSync\") {\n        this.openByFocusing();\n      } else if (inputType !== \"hw:lockInSelection\") {\n        this._selectOnQuery(inputType);\n      }\n    } else {\n      await nextRepaint();\n      this._runCallback(element);\n    }\n  }\n\n  closerTargetConnected() {\n    this._closeAndBlur(\"hw:asyncCloser\");\n  }\n\n  // Use +_printStack+ for debugging purposes\n  _printStack() {\n    const err = new Error();\n    console.log(err.stack || err.stacktrace);\n  }\n}\n\nexport { HwComboboxController as default };\n", "// Load all the controllers within this directory and all subdirectories.\n// Controller files must be named *_controller.js.\n\nimport { application } from \"./application\"\n\n// Register each controller with Stimulus\nimport controllers from \"./**/*_controller.js\"\ncontrollers.forEach((controller) => {\n  application.register(controller.name, controller.module.default)\n})\n\nimport { Dropdown, Popover, Toggle, Slideover, Tabs } from \"tailwindcss-stimulus-components\"\napplication.register('dropdown', Dropdown)\n// application.register('modal', Modal)\n// Re-enabled Tabs controller for payment forms (scroll-tabs is our custom one for product pages)\napplication.register('tabs', Tabs)\napplication.register('popover', Popover)\napplication.register('toggle', Toggle)\napplication.register('slideover', Slideover)\n\nimport Flatpickr from 'stimulus-flatpickr'\napplication.register('flatpickr', Flatpickr)\n\nimport TurboController from \"./turbo_controller.js\"\napplication.register('turbo', TurboController)\n\nimport Modal from \"./modal_controller.js\"\napplication.register('modal', Modal)\n\nimport HwComboboxController from \"@josefarias/hotwire_combobox\";\napplication.register('hw-combobox', HwComboboxController)\n\nimport EtsyImportController from \"./etsy_import_controller.js\"\napplication.register('etsy-import', EtsyImportController)\n\nimport EtsyListingSyncController from \"./etsy_listing_sync_controller.js\"\napplication.register('etsy-listing-sync', EtsyListingSyncController)\n\nimport SearchFilterController from \"./search_filter_controller\";\napplication.register('search-filter', SearchFilterController);\n\nimport PersistentDropdownController from \"./persistent_dropdown_controller\";\napplication.register('persistent-dropdown', PersistentDropdownController);\n\nimport VariantPrintFilesController from \"./variant_print_files_controller\"\napplication.register(\"variant-print-files\", VariantPrintFilesController)\n\nimport FilterManagerController from \"./filter_manager_controller\"\napplication.register(\"filter-manager\", FilterManagerController)\n\nimport TaxonomySelectorController from \"./taxonomy_selector_controller\"\napplication.register(\"taxonomy-selector\", TaxonomySelectorController)\n\nimport ProductionDashboardController from \"./production_dashboard_controller\"\napplication.register(\"production-dashboard\", ProductionDashboardController)\n\nimport SupportTicketFilterController from \"./support_ticket_filter_controller\"\napplication.register(\"support-ticket-filter\", SupportTicketFilterController)\n\nimport SsVariantImportController from \"./ss_variant_import_controller\"\napplication.register(\"ss-variant-import\", SsVariantImportController)\n\nimport ColorSwatchController from \"./color_swatch_controller\"\napplication.register(\"color-swatch\", ColorSwatchController)\n\nimport SsRefreshController from \"./ss_refresh_controller\"\napplication.register(\"ss-refresh\", SsRefreshController)\n\nimport CatalogImagePreviewController from \"./catalog_image_preview_controller\"\napplication.register(\"catalog-image-preview\", CatalogImagePreviewController)\n\nimport OverlayEditorController from \"./overlay_editor_controller\"\napplication.register(\"overlay-editor\", OverlayEditorController)\n\nimport InlineEditController from \"./inline_edit_controller\"\napplication.register(\"inline-edit\", InlineEditController)\n\nimport SidebarController from \"./sidebar_controller\"\napplication.register(\"sidebar\", SidebarController)\n\nimport LineItemsController from \"./line_items_controller\"\napplication.register(\"line-items\", LineItemsController)\n\nimport PoLineItemTypeController from \"./po_line_item_type_controller\"\napplication.register(\"po-line-item-type\", PoLineItemTypeController)\n\nimport ManualOrderVariantController from \"./manual_order_variant_controller\"\napplication.register(\"manual-order-variant\", ManualOrderVariantController)\n\nimport SortableListController from \"./sortable_list_controller\"\napplication.register(\"sortable-list\", SortableListController)\n\nimport PickListFilterController from \"./pick_list_filter_controller\"\napplication.register(\"pick-list-filter\", PickListFilterController)\n\nimport ProductionStationController from \"./production_station_controller\"\napplication.register(\"production-station\", ProductionStationController)\n\nimport QcStationController from \"./qc_station_controller\"\napplication.register(\"qc-station\", QcStationController)\n\nimport PrintStationController from \"./print_station_controller\"\napplication.register(\"print-station\", PrintStationController)\n\nimport PackStationController from \"./pack_station_controller\"\napplication.register(\"pack-station\", PackStationController)\n\nimport GiftBoxPackingStationController from \"./gift_box_packing_station_controller\"\napplication.register(\"gift-box-packing-station\", GiftBoxPackingStationController)\n\nimport CatalogNavController from \"./catalog_nav_controller\"\napplication.register(\"catalog-nav\", CatalogNavController)\n\nimport PoFilterController from \"./po_filter_controller\"\napplication.register(\"po-filter\", PoFilterController)\n\nimport ListingBuilderController from \"./listing_builder_controller\"\napplication.register(\"listing-builder\", ListingBuilderController)\n\nimport PushStatusController from \"./push_status_controller\"\napplication.register(\"push-status\", PushStatusController)\n\nimport VariantCounterController from \"./variant_counter_controller\"\napplication.register(\"variant-counter\", VariantCounterController)\n\nimport VariantPriceEditController from \"./variant_price_edit_controller\"\napplication.register(\"variant-price-edit\", VariantPriceEditController)\n\nimport ProfileSyncController from \"./profile_sync_controller\"\napplication.register(\"profile-sync\", ProfileSyncController)\n\nimport SizePrefixPreviewController from \"./size_prefix_preview_controller\"\napplication.register(\"size-prefix-preview\", SizePrefixPreviewController)\n\nimport ListingValidatorController from \"./listing_validator_controller\"\napplication.register(\"listing-validator\", ListingValidatorController)\n\nimport ListingImagesController from \"./listing_images_controller\"\napplication.register(\"listing-images\", ListingImagesController)\n\nimport VariationLabelPickerController from \"./variation_label_picker_controller\"\napplication.register(\"variation-label-picker\", VariationLabelPickerController)\n\nimport VariationValuesController from \"./variation_values_controller\"\napplication.register(\"variation-values\", VariationValuesController)\n\nimport TurnstileController from \"./turnstile_controller\"\napplication.register(\"turnstile\", TurnstileController)\n\nimport GiftBoxFormController from \"./gift_box_form_controller\"\napplication.register(\"gift-box-form\", GiftBoxFormController)\n\nimport GiftBoxProductPickerController from \"./gift_box_product_picker_controller\"\napplication.register(\"gift-box-product-picker\", GiftBoxProductPickerController)\n\nimport EtsyProductMapPickerController from \"./etsy_product_map_picker_controller\"\napplication.register(\"etsy-product-map-picker\", EtsyProductMapPickerController)\n\nimport ReceivingStationController from \"./receiving_station_controller\"\napplication.register(\"receiving-station\", ReceivingStationController)\n\nimport SendEmailConfirmController from \"./send_email_confirm_controller\"\napplication.register(\"send-email-confirm\", SendEmailConfirmController)\n\nimport SubmitSpinnerController from \"./submit_spinner_controller\"\napplication.register(\"submit-spinner\", SubmitSpinnerController)\n\nimport ToastController from \"./toast_controller\"\napplication.register(\"toast\", ToastController)\n\nimport SectionNavController from \"./section_nav_controller\"\napplication.register(\"section-nav\", SectionNavController)\n\nimport PersonalizationQuestionsController from \"./personalization_questions_controller\"\napplication.register(\"personalization-questions\", PersonalizationQuestionsController)\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", "import Trix from \"trix\"\nimport \"@rails/actiontext\"\nimport { get, post } from \"@rails/request.js\"\n\nTrix.config.textAttributes.inlineCode = {\n  tagName: \"code\",\n  inheritable: true\n}\n\nTrix.config.blockAttributes.heading2 = {\n  tagName: \"h2\",\n  terminal: true,\n  breakOnReturn: true,\n  group: false\n}\n\nTrix.config.blockAttributes.heading3 = {\n  tagName: \"h3\",\n  terminal: true,\n  breakOnReturn: true,\n  group: false\n}\n\nclass EmbedController {\n  constructor(element) {\n    this.patterns = undefined\n    this.element = element\n    this.editor = element.editor\n    this.toolbar = element.toolbarElement\n\n    this.injectHTML()\n\n    this.hrefElement = this.toolbar.querySelector(\"[data-trix-input][name='href']\")\n    this.embedContainerElement = this.toolbar.querySelector(\"[data-behavior='embed_container']\")\n    this.embedElement = this.toolbar.querySelector(\"[data-behavior='embed_url']\")\n\n    this.reset()\n    this.installEventHandlers()\n  }\n\n  injectHTML() {\n    this.toolbar.querySelector('[data-trix-dialog=\"href\"]').insertAdjacentHTML('beforeend', `\n        <div data-behavior=\"embed_container\">\n          <div class=\"link_to_embed link_to_embed--new\">\n            Would you like to embed media from this site?\n            <input class=\"btn btn-tertiary btn-small btn-outline\" type=\"button\" data-behavior=\"embed_url\" value=\"Yes, embed it\">\n          </div>\n        </div>\n    `)\n  }\n\n  installEventHandlers() {\n    this.hrefElement.addEventListener(\"input\", this.didInput.bind(this))\n    this.hrefElement.addEventListener(\"focusin\", this.didInput.bind(this))\n    this.embedElement.addEventListener(\"click\", this.embed.bind(this))\n  }\n\n  didInput(event) {\n    let value = event.target.value.trim()\n\n    // Load patterns from server so we can dynamically update them\n    if (this.patterns === undefined) {\n      this.loadPatterns(value)\n\n    // When patterns are loaded, we can just fetch the embed code\n    } else if (this.match(value)) {\n      this.fetch(value)\n\n    // No embed code, just reset the form\n    } else {\n      this.reset()\n    }\n  }\n\n  async loadPatterns(value) {\n    const response = await get(\"/action_text/embeds/patterns.json\", { responseKind: \"json\" })\n    if (response.ok) {\n      const patterns = await response.json\n      this.patterns = patterns.map(pattern => new RegExp(pattern.source, pattern.options))\n      if (this.match(value)) {\n        this.fetch(value)\n      }\n    }\n  }\n\n  // Checks if a url matches an embed code format\n  match(value) {\n    return this.patterns.some(regex => regex.test(value))\n  }\n\n  async fetch(value) {\n    const response = await post(`/action_text/embeds?id=${encodeURIComponent(value)}`, { responseKind: \"json\" })\n    if (response.ok) {\n      this.showEmbed(await response.json)\n    } else {\n      this.reset()\n    }\n  }\n\n  embed(event) {\n    if (this.currentEmbed == null) { return }\n\n    let attachment = new Trix.Attachment(this.currentEmbed)\n    this.editor.insertAttachment(attachment)\n    this.element.focus()\n  }\n\n  showEmbed(embed) {\n    this.currentEmbed = embed\n    this.embedContainerElement.style.display = \"block\"\n  }\n\n  reset() {\n    this.embedContainerElement.style.display = \"none\"\n    this.currentEmbed = null\n  }\n}\n\nclass HeadingButtons {\n  constructor(element) {\n    if (!element.classList.contains(\"blog-editor\")) return\n\n    this.toolbar = element.toolbarElement\n    const h1Button = this.toolbar.querySelector(\"[data-trix-attribute=heading1]\")\n    if (!h1Button) return\n\n    this.addButton(h1Button, \"heading3\", \"H3\")\n    this.addButton(h1Button, \"heading2\", \"H2\")\n  }\n\n  addButton(afterElement, attribute, label) {\n    const button = document.createElement(\"button\")\n    button.type = \"button\"\n    button.classList.add(\"trix-button\")\n    button.dataset.trixAttribute = attribute\n    button.textContent = label\n    button.title = label\n    afterElement.insertAdjacentElement(\"afterend\", button)\n  }\n}\n\nclass InlineCode {\n  constructor(element) {\n    this.element = element\n    this.editor = element.editor\n    this.toolbar = element.toolbarElement\n\n    this.installEventHandlers()\n  }\n\n  installEventHandlers() {\n    const blockCodeButton = this.toolbar.querySelector(\"[data-trix-attribute=code]\")\n    const inlineCodeButton = blockCodeButton.cloneNode(true)\n\n    inlineCodeButton.hidden = true\n    inlineCodeButton.dataset.trixAttribute = \"inlineCode\"\n    blockCodeButton.insertAdjacentElement(\"afterend\", inlineCodeButton)\n\n    this.element.addEventListener(\"trix-selection-change\", _ => {\n      const type = this.getCodeFormattingType()\n      blockCodeButton.hidden = type == \"inline\"\n      inlineCodeButton.hidden = type == \"block\"\n    })\n  }\n\n  getCodeFormattingType() {\n    if (this.editor.attributeIsActive(\"code\")) return \"block\"\n    if (this.editor.attributeIsActive(\"inlineCode\")) return \"inline\"\n\n    const range = this.editor.getSelectedRange()\n    if (range[0] == range[1]) return \"block\"\n\n    const text = this.editor.getSelectedDocument().toString().trim()\n    return /\\n/.test(text) ? \"block\" : \"inline\"\n  }\n}\n\ndocument.addEventListener(\"trix-initialize\", function(event) {\n  new EmbedController(event.target)\n  new InlineCode(event.target)\n  new HeadingButtons(event.target)\n})\n", "\n        import * as module0 from '././src/actiontext.js';import * as module1 from '././src/confirm.js';import * as module2 from '././src/direct_uploads.js';import * as module3 from '././src/lazysrc.js';import * as module4 from '././src/pagy.mjs';import * as module5 from '././src/timezone.js';import * as module6 from '././src/turbo_native/bridge.js';import * as module7 from '././src/turbo_streams.js'\n        const modules = [{name: 'src--actiontext.js', module: module0, filename: './src/actiontext.js'},{name: 'src--confirm.js', module: module1, filename: './src/confirm.js'},{name: 'src--direct-uploads.js', module: module2, filename: './src/direct_uploads.js'},{name: 'src--lazysrc.js', module: module3, filename: './src/lazysrc.js'},{name: 'src--pagy.mjs', module: module4, filename: './src/pagy.mjs'},{name: 'src--timezone.js', module: module5, filename: './src/timezone.js'},{name: 'src--turbo-native--bridge.js', module: module6, filename: './src/turbo_native/bridge.js'},{name: 'src--turbo-streams.js', module: module7, filename: './src/turbo_streams.js'}]\n        export default modules;\n      ", "/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get (name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        jar[found] = converter.read(value, found);\n\n        if (name === found) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set,\n      get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n", "import Cookies from 'js-cookie'\nimport jstz from 'jstz'\n\n// Rails doesn't support every timezone that Intl supports\nexport function findTimeZone() {\n  const oldIntl = window.Intl\n  try {\n    window.Intl = undefined\n    const tz = jstz.determine().name()\n    window.Intl = oldIntl\n    return tz\n  } catch (e) {\n    // sometimes (on android) you can't override intl\n    return jstz.determine().name()\n  }\n}\n\ndocument.addEventListener(\"turbo:load\", () => {\n  Cookies.set(\"browser_time_zone\", findTimeZone(), { expires: 365, path: \"/\", secure: true, sameSite: 'strict' })\n})\n", "class Bridge {\n  // Toggles navbar visibility in browser from Native\n  static toggleNavBar() {\n    const event = new CustomEvent(\"toggle-nav-bar\")\n    window.dispatchEvent(event)\n  }\n\n  // Sets the notification count on the app icon and currently visible tab.\n  // Passing 0 will remove/clear the badge. Passing null will have no effect.\n  static setNotificationCount(icon, tab = icon) {\n    this.postMessage(\"showNotificationBadge\", {icon, tab})\n  }\n\n  // Sends a message to the native app, if active.\n  static postMessage(name, data = {}) {\n    // iOS\n    window.webkit?.messageHandlers?.nativeApp?.postMessage({name, ...data})\n\n    // Android\n    window.nativeApp?.postMessage(JSON.stringify({name, ...data}))\n  }\n}\n\n// Expose this on the window object so TurboNative can interact with it\nwindow.TurboNativeBridge = Bridge\nexport default Bridge\n", "// Add your own Custom Turbo StreamActions\n// Define Rails helpers in `app/helpers/turbo_stream_actions_helper.rb`\n//\n// These actions run in the context of a turbo-stream element. You have access to methods like the following:\n//\n//   this.action - The action attribute value (for example: \"append\")\n//   this.target - The target attribute value (the target element ID)\n//   this.targetElements - An array of target elements the template will be rendered to\n//   this.templateContent - The contents of the main `<template>`\n//\n// Source code for the stream element can be found here:\n// https://github.com/hotwired/turbo/blob/main/src/elements/stream_element.ts\n\nimport { StreamActions } from \"@hotwired/turbo\"\n\n// Remove elements after X milliseconds\n// <%= turbo_stream.remove_later, target: \"my-id\", after: \"2000\" %>\nStreamActions.remove_later = function() {\n  setTimeout(() => {\n    this.targetElements.forEach((element) => element.remove())\n  }, this.getAttribute(\"after\"))\n}\n\n// Resets a form\n// <%= turbo_stream.reset_form \"new_post\"\nStreamActions.reset_form = function() {\n  this.targetElements.forEach((element) => element.reset())\n}\n\n// Scrolls an element into view\n// <%= turbo_stream.scroll_to \"comment_1\"\nStreamActions.scroll_to = function() {\n  this.targetElements.forEach((element) => element.scrollIntoView({behavior: 'smooth'}))\n}\n", "// packages/alpinejs/src/scheduler.js\nvar flushPending = false;\nvar flushing = false;\nvar queue = [];\nvar lastFlushedIndex = -1;\nfunction scheduler(callback) {\n  queueJob(callback);\n}\nfunction queueJob(job) {\n  if (!queue.includes(job))\n    queue.push(job);\n  queueFlush();\n}\nfunction dequeueJob(job) {\n  let index = queue.indexOf(job);\n  if (index !== -1 && index > lastFlushedIndex)\n    queue.splice(index, 1);\n}\nfunction queueFlush() {\n  if (!flushing && !flushPending) {\n    flushPending = true;\n    queueMicrotask(flushJobs);\n  }\n}\nfunction flushJobs() {\n  flushPending = false;\n  flushing = true;\n  for (let i = 0; i < queue.length; i++) {\n    queue[i]();\n    lastFlushedIndex = i;\n  }\n  queue.length = 0;\n  lastFlushedIndex = -1;\n  flushing = false;\n}\n\n// packages/alpinejs/src/reactivity.js\nvar reactive;\nvar effect;\nvar release;\nvar raw;\nvar shouldSchedule = true;\nfunction disableEffectScheduling(callback) {\n  shouldSchedule = false;\n  callback();\n  shouldSchedule = true;\n}\nfunction setReactivityEngine(engine) {\n  reactive = engine.reactive;\n  release = engine.release;\n  effect = (callback) => engine.effect(callback, { scheduler: (task) => {\n    if (shouldSchedule) {\n      scheduler(task);\n    } else {\n      task();\n    }\n  } });\n  raw = engine.raw;\n}\nfunction overrideEffect(override) {\n  effect = override;\n}\nfunction elementBoundEffect(el) {\n  let cleanup2 = () => {\n  };\n  let wrappedEffect = (callback) => {\n    let effectReference = effect(callback);\n    if (!el._x_effects) {\n      el._x_effects = /* @__PURE__ */ new Set();\n      el._x_runEffects = () => {\n        el._x_effects.forEach((i) => i());\n      };\n    }\n    el._x_effects.add(effectReference);\n    cleanup2 = () => {\n      if (effectReference === void 0)\n        return;\n      el._x_effects.delete(effectReference);\n      release(effectReference);\n    };\n    return effectReference;\n  };\n  return [wrappedEffect, () => {\n    cleanup2();\n  }];\n}\nfunction watch(getter, callback) {\n  let firstTime = true;\n  let oldValue;\n  let effectReference = effect(() => {\n    let value = getter();\n    JSON.stringify(value);\n    if (!firstTime) {\n      queueMicrotask(() => {\n        callback(value, oldValue);\n        oldValue = value;\n      });\n    } else {\n      oldValue = value;\n    }\n    firstTime = false;\n  });\n  return () => release(effectReference);\n}\n\n// packages/alpinejs/src/mutation.js\nvar onAttributeAddeds = [];\nvar onElRemoveds = [];\nvar onElAddeds = [];\nfunction onElAdded(callback) {\n  onElAddeds.push(callback);\n}\nfunction onElRemoved(el, callback) {\n  if (typeof callback === \"function\") {\n    if (!el._x_cleanups)\n      el._x_cleanups = [];\n    el._x_cleanups.push(callback);\n  } else {\n    callback = el;\n    onElRemoveds.push(callback);\n  }\n}\nfunction onAttributesAdded(callback) {\n  onAttributeAddeds.push(callback);\n}\nfunction onAttributeRemoved(el, name, callback) {\n  if (!el._x_attributeCleanups)\n    el._x_attributeCleanups = {};\n  if (!el._x_attributeCleanups[name])\n    el._x_attributeCleanups[name] = [];\n  el._x_attributeCleanups[name].push(callback);\n}\nfunction cleanupAttributes(el, names) {\n  if (!el._x_attributeCleanups)\n    return;\n  Object.entries(el._x_attributeCleanups).forEach(([name, value]) => {\n    if (names === void 0 || names.includes(name)) {\n      value.forEach((i) => i());\n      delete el._x_attributeCleanups[name];\n    }\n  });\n}\nfunction cleanupElement(el) {\n  el._x_effects?.forEach(dequeueJob);\n  while (el._x_cleanups?.length)\n    el._x_cleanups.pop()();\n}\nvar observer = new MutationObserver(onMutate);\nvar currentlyObserving = false;\nfunction startObservingMutations() {\n  observer.observe(document, { subtree: true, childList: true, attributes: true, attributeOldValue: true });\n  currentlyObserving = true;\n}\nfunction stopObservingMutations() {\n  flushObserver();\n  observer.disconnect();\n  currentlyObserving = false;\n}\nvar queuedMutations = [];\nfunction flushObserver() {\n  let records = observer.takeRecords();\n  queuedMutations.push(() => records.length > 0 && onMutate(records));\n  let queueLengthWhenTriggered = queuedMutations.length;\n  queueMicrotask(() => {\n    if (queuedMutations.length === queueLengthWhenTriggered) {\n      while (queuedMutations.length > 0)\n        queuedMutations.shift()();\n    }\n  });\n}\nfunction mutateDom(callback) {\n  if (!currentlyObserving)\n    return callback();\n  stopObservingMutations();\n  let result = callback();\n  startObservingMutations();\n  return result;\n}\nvar isCollecting = false;\nvar deferredMutations = [];\nfunction deferMutations() {\n  isCollecting = true;\n}\nfunction flushAndStopDeferringMutations() {\n  isCollecting = false;\n  onMutate(deferredMutations);\n  deferredMutations = [];\n}\nfunction onMutate(mutations) {\n  if (isCollecting) {\n    deferredMutations = deferredMutations.concat(mutations);\n    return;\n  }\n  let addedNodes = [];\n  let removedNodes = /* @__PURE__ */ new Set();\n  let addedAttributes = /* @__PURE__ */ new Map();\n  let removedAttributes = /* @__PURE__ */ new Map();\n  for (let i = 0; i < mutations.length; i++) {\n    if (mutations[i].target._x_ignoreMutationObserver)\n      continue;\n    if (mutations[i].type === \"childList\") {\n      mutations[i].removedNodes.forEach((node) => {\n        if (node.nodeType !== 1)\n          return;\n        if (!node._x_marker)\n          return;\n        removedNodes.add(node);\n      });\n      mutations[i].addedNodes.forEach((node) => {\n        if (node.nodeType !== 1)\n          return;\n        if (removedNodes.has(node)) {\n          removedNodes.delete(node);\n          return;\n        }\n        if (node._x_marker)\n          return;\n        addedNodes.push(node);\n      });\n    }\n    if (mutations[i].type === \"attributes\") {\n      let el = mutations[i].target;\n      let name = mutations[i].attributeName;\n      let oldValue = mutations[i].oldValue;\n      let add2 = () => {\n        if (!addedAttributes.has(el))\n          addedAttributes.set(el, []);\n        addedAttributes.get(el).push({ name, value: el.getAttribute(name) });\n      };\n      let remove = () => {\n        if (!removedAttributes.has(el))\n          removedAttributes.set(el, []);\n        removedAttributes.get(el).push(name);\n      };\n      if (el.hasAttribute(name) && oldValue === null) {\n        add2();\n      } else if (el.hasAttribute(name)) {\n        remove();\n        add2();\n      } else {\n        remove();\n      }\n    }\n  }\n  removedAttributes.forEach((attrs, el) => {\n    cleanupAttributes(el, attrs);\n  });\n  addedAttributes.forEach((attrs, el) => {\n    onAttributeAddeds.forEach((i) => i(el, attrs));\n  });\n  for (let node of removedNodes) {\n    if (addedNodes.some((i) => i.contains(node)))\n      continue;\n    onElRemoveds.forEach((i) => i(node));\n  }\n  for (let node of addedNodes) {\n    if (!node.isConnected)\n      continue;\n    onElAddeds.forEach((i) => i(node));\n  }\n  addedNodes = null;\n  removedNodes = null;\n  addedAttributes = null;\n  removedAttributes = null;\n}\n\n// packages/alpinejs/src/scope.js\nfunction scope(node) {\n  return mergeProxies(closestDataStack(node));\n}\nfunction addScopeToNode(node, data2, referenceNode) {\n  node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)];\n  return () => {\n    node._x_dataStack = node._x_dataStack.filter((i) => i !== data2);\n  };\n}\nfunction closestDataStack(node) {\n  if (node._x_dataStack)\n    return node._x_dataStack;\n  if (typeof ShadowRoot === \"function\" && node instanceof ShadowRoot) {\n    return closestDataStack(node.host);\n  }\n  if (!node.parentNode) {\n    return [];\n  }\n  return closestDataStack(node.parentNode);\n}\nfunction mergeProxies(objects) {\n  return new Proxy({ objects }, mergeProxyTrap);\n}\nvar mergeProxyTrap = {\n  ownKeys({ objects }) {\n    return Array.from(\n      new Set(objects.flatMap((i) => Object.keys(i)))\n    );\n  },\n  has({ objects }, name) {\n    if (name == Symbol.unscopables)\n      return false;\n    return objects.some(\n      (obj) => Object.prototype.hasOwnProperty.call(obj, name) || Reflect.has(obj, name)\n    );\n  },\n  get({ objects }, name, thisProxy) {\n    if (name == \"toJSON\")\n      return collapseProxies;\n    return Reflect.get(\n      objects.find(\n        (obj) => Reflect.has(obj, name)\n      ) || {},\n      name,\n      thisProxy\n    );\n  },\n  set({ objects }, name, value, thisProxy) {\n    const target = objects.find(\n      (obj) => Object.prototype.hasOwnProperty.call(obj, name)\n    ) || objects[objects.length - 1];\n    const descriptor = Object.getOwnPropertyDescriptor(target, name);\n    if (descriptor?.set && descriptor?.get)\n      return descriptor.set.call(thisProxy, value) || true;\n    return Reflect.set(target, name, value);\n  }\n};\nfunction collapseProxies() {\n  let keys = Reflect.ownKeys(this);\n  return keys.reduce((acc, key) => {\n    acc[key] = Reflect.get(this, key);\n    return acc;\n  }, {});\n}\n\n// packages/alpinejs/src/interceptor.js\nfunction initInterceptors(data2) {\n  let isObject2 = (val) => typeof val === \"object\" && !Array.isArray(val) && val !== null;\n  let recurse = (obj, basePath = \"\") => {\n    Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value, enumerable }]) => {\n      if (enumerable === false || value === void 0)\n        return;\n      if (typeof value === \"object\" && value !== null && value.__v_skip)\n        return;\n      let path = basePath === \"\" ? key : `${basePath}.${key}`;\n      if (typeof value === \"object\" && value !== null && value._x_interceptor) {\n        obj[key] = value.initialize(data2, path, key);\n      } else {\n        if (isObject2(value) && value !== obj && !(value instanceof Element)) {\n          recurse(value, path);\n        }\n      }\n    });\n  };\n  return recurse(data2);\n}\nfunction interceptor(callback, mutateObj = () => {\n}) {\n  let obj = {\n    initialValue: void 0,\n    _x_interceptor: true,\n    initialize(data2, path, key) {\n      return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key);\n    }\n  };\n  mutateObj(obj);\n  return (initialValue) => {\n    if (typeof initialValue === \"object\" && initialValue !== null && initialValue._x_interceptor) {\n      let initialize = obj.initialize.bind(obj);\n      obj.initialize = (data2, path, key) => {\n        let innerValue = initialValue.initialize(data2, path, key);\n        obj.initialValue = innerValue;\n        return initialize(data2, path, key);\n      };\n    } else {\n      obj.initialValue = initialValue;\n    }\n    return obj;\n  };\n}\nfunction get(obj, path) {\n  return path.split(\".\").reduce((carry, segment) => carry[segment], obj);\n}\nfunction set(obj, path, value) {\n  if (typeof path === \"string\")\n    path = path.split(\".\");\n  if (path.length === 1)\n    obj[path[0]] = value;\n  else if (path.length === 0)\n    throw error;\n  else {\n    if (obj[path[0]])\n      return set(obj[path[0]], path.slice(1), value);\n    else {\n      obj[path[0]] = {};\n      return set(obj[path[0]], path.slice(1), value);\n    }\n  }\n}\n\n// packages/alpinejs/src/magics.js\nvar magics = {};\nfunction magic(name, callback) {\n  magics[name] = callback;\n}\nfunction injectMagics(obj, el) {\n  let memoizedUtilities = getUtilities(el);\n  Object.entries(magics).forEach(([name, callback]) => {\n    Object.defineProperty(obj, `$${name}`, {\n      get() {\n        return callback(el, memoizedUtilities);\n      },\n      enumerable: false\n    });\n  });\n  return obj;\n}\nfunction getUtilities(el) {\n  let [utilities, cleanup2] = getElementBoundUtilities(el);\n  let utils = { interceptor, ...utilities };\n  onElRemoved(el, cleanup2);\n  return utils;\n}\n\n// packages/alpinejs/src/utils/error.js\nfunction tryCatch(el, expression, callback, ...args) {\n  try {\n    return callback(...args);\n  } catch (e) {\n    handleError(e, el, expression);\n  }\n}\nfunction handleError(error2, el, expression = void 0) {\n  error2 = Object.assign(\n    error2 ?? { message: \"No error message given.\" },\n    { el, expression }\n  );\n  console.warn(`Alpine Expression Error: ${error2.message}\n\n${expression ? 'Expression: \"' + expression + '\"\\n\\n' : \"\"}`, el);\n  setTimeout(() => {\n    throw error2;\n  }, 0);\n}\n\n// packages/alpinejs/src/evaluator.js\nvar shouldAutoEvaluateFunctions = true;\nfunction dontAutoEvaluateFunctions(callback) {\n  let cache = shouldAutoEvaluateFunctions;\n  shouldAutoEvaluateFunctions = false;\n  let result = callback();\n  shouldAutoEvaluateFunctions = cache;\n  return result;\n}\nfunction evaluate(el, expression, extras = {}) {\n  let result;\n  evaluateLater(el, expression)((value) => result = value, extras);\n  return result;\n}\nfunction evaluateLater(...args) {\n  return theEvaluatorFunction(...args);\n}\nvar theEvaluatorFunction = normalEvaluator;\nfunction setEvaluator(newEvaluator) {\n  theEvaluatorFunction = newEvaluator;\n}\nfunction normalEvaluator(el, expression) {\n  let overriddenMagics = {};\n  injectMagics(overriddenMagics, el);\n  let dataStack = [overriddenMagics, ...closestDataStack(el)];\n  let evaluator = typeof expression === \"function\" ? generateEvaluatorFromFunction(dataStack, expression) : generateEvaluatorFromString(dataStack, expression, el);\n  return tryCatch.bind(null, el, expression, evaluator);\n}\nfunction generateEvaluatorFromFunction(dataStack, func) {\n  return (receiver = () => {\n  }, { scope: scope2 = {}, params = [] } = {}) => {\n    let result = func.apply(mergeProxies([scope2, ...dataStack]), params);\n    runIfTypeOfFunction(receiver, result);\n  };\n}\nvar evaluatorMemo = {};\nfunction generateFunctionFromString(expression, el) {\n  if (evaluatorMemo[expression]) {\n    return evaluatorMemo[expression];\n  }\n  let AsyncFunction = Object.getPrototypeOf(async function() {\n  }).constructor;\n  let rightSideSafeExpression = /^[\\n\\s]*if.*\\(.*\\)/.test(expression.trim()) || /^(let|const)\\s/.test(expression.trim()) ? `(async()=>{ ${expression} })()` : expression;\n  const safeAsyncFunction = () => {\n    try {\n      let func2 = new AsyncFunction(\n        [\"__self\", \"scope\"],\n        `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`\n      );\n      Object.defineProperty(func2, \"name\", {\n        value: `[Alpine] ${expression}`\n      });\n      return func2;\n    } catch (error2) {\n      handleError(error2, el, expression);\n      return Promise.resolve();\n    }\n  };\n  let func = safeAsyncFunction();\n  evaluatorMemo[expression] = func;\n  return func;\n}\nfunction generateEvaluatorFromString(dataStack, expression, el) {\n  let func = generateFunctionFromString(expression, el);\n  return (receiver = () => {\n  }, { scope: scope2 = {}, params = [] } = {}) => {\n    func.result = void 0;\n    func.finished = false;\n    let completeScope = mergeProxies([scope2, ...dataStack]);\n    if (typeof func === \"function\") {\n      let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression));\n      if (func.finished) {\n        runIfTypeOfFunction(receiver, func.result, completeScope, params, el);\n        func.result = void 0;\n      } else {\n        promise.then((result) => {\n          runIfTypeOfFunction(receiver, result, completeScope, params, el);\n        }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0);\n      }\n    }\n  };\n}\nfunction runIfTypeOfFunction(receiver, value, scope2, params, el) {\n  if (shouldAutoEvaluateFunctions && typeof value === \"function\") {\n    let result = value.apply(scope2, params);\n    if (result instanceof Promise) {\n      result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value));\n    } else {\n      receiver(result);\n    }\n  } else if (typeof value === \"object\" && value instanceof Promise) {\n    value.then((i) => receiver(i));\n  } else {\n    receiver(value);\n  }\n}\n\n// packages/alpinejs/src/directives.js\nvar prefixAsString = \"x-\";\nfunction prefix(subject = \"\") {\n  return prefixAsString + subject;\n}\nfunction setPrefix(newPrefix) {\n  prefixAsString = newPrefix;\n}\nvar directiveHandlers = {};\nfunction directive(name, callback) {\n  directiveHandlers[name] = callback;\n  return {\n    before(directive2) {\n      if (!directiveHandlers[directive2]) {\n        console.warn(String.raw`Cannot find directive \\`${directive2}\\`. \\`${name}\\` will use the default order of execution`);\n        return;\n      }\n      const pos = directiveOrder.indexOf(directive2);\n      directiveOrder.splice(pos >= 0 ? pos : directiveOrder.indexOf(\"DEFAULT\"), 0, name);\n    }\n  };\n}\nfunction directiveExists(name) {\n  return Object.keys(directiveHandlers).includes(name);\n}\nfunction directives(el, attributes, originalAttributeOverride) {\n  attributes = Array.from(attributes);\n  if (el._x_virtualDirectives) {\n    let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({ name, value }));\n    let staticAttributes = attributesOnly(vAttributes);\n    vAttributes = vAttributes.map((attribute) => {\n      if (staticAttributes.find((attr) => attr.name === attribute.name)) {\n        return {\n          name: `x-bind:${attribute.name}`,\n          value: `\"${attribute.value}\"`\n        };\n      }\n      return attribute;\n    });\n    attributes = attributes.concat(vAttributes);\n  }\n  let transformedAttributeMap = {};\n  let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority);\n  return directives2.map((directive2) => {\n    return getDirectiveHandler(el, directive2);\n  });\n}\nfunction attributesOnly(attributes) {\n  return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr));\n}\nvar isDeferringHandlers = false;\nvar directiveHandlerStacks = /* @__PURE__ */ new Map();\nvar currentHandlerStackKey = Symbol();\nfunction deferHandlingDirectives(callback) {\n  isDeferringHandlers = true;\n  let key = Symbol();\n  currentHandlerStackKey = key;\n  directiveHandlerStacks.set(key, []);\n  let flushHandlers = () => {\n    while (directiveHandlerStacks.get(key).length)\n      directiveHandlerStacks.get(key).shift()();\n    directiveHandlerStacks.delete(key);\n  };\n  let stopDeferring = () => {\n    isDeferringHandlers = false;\n    flushHandlers();\n  };\n  callback(flushHandlers);\n  stopDeferring();\n}\nfunction getElementBoundUtilities(el) {\n  let cleanups = [];\n  let cleanup2 = (callback) => cleanups.push(callback);\n  let [effect3, cleanupEffect] = elementBoundEffect(el);\n  cleanups.push(cleanupEffect);\n  let utilities = {\n    Alpine: alpine_default,\n    effect: effect3,\n    cleanup: cleanup2,\n    evaluateLater: evaluateLater.bind(evaluateLater, el),\n    evaluate: evaluate.bind(evaluate, el)\n  };\n  let doCleanup = () => cleanups.forEach((i) => i());\n  return [utilities, doCleanup];\n}\nfunction getDirectiveHandler(el, directive2) {\n  let noop = () => {\n  };\n  let handler4 = directiveHandlers[directive2.type] || noop;\n  let [utilities, cleanup2] = getElementBoundUtilities(el);\n  onAttributeRemoved(el, directive2.original, cleanup2);\n  let fullHandler = () => {\n    if (el._x_ignore || el._x_ignoreSelf)\n      return;\n    handler4.inline && handler4.inline(el, directive2, utilities);\n    handler4 = handler4.bind(handler4, el, directive2, utilities);\n    isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler4) : handler4();\n  };\n  fullHandler.runCleanups = cleanup2;\n  return fullHandler;\n}\nvar startingWith = (subject, replacement) => ({ name, value }) => {\n  if (name.startsWith(subject))\n    name = name.replace(subject, replacement);\n  return { name, value };\n};\nvar into = (i) => i;\nfunction toTransformedAttributes(callback = () => {\n}) {\n  return ({ name, value }) => {\n    let { name: newName, value: newValue } = attributeTransformers.reduce((carry, transform) => {\n      return transform(carry);\n    }, { name, value });\n    if (newName !== name)\n      callback(newName, name);\n    return { name: newName, value: newValue };\n  };\n}\nvar attributeTransformers = [];\nfunction mapAttributes(callback) {\n  attributeTransformers.push(callback);\n}\nfunction outNonAlpineAttributes({ name }) {\n  return alpineAttributeRegex().test(name);\n}\nvar alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\\\b`);\nfunction toParsedDirectives(transformedAttributeMap, originalAttributeOverride) {\n  return ({ name, value }) => {\n    let typeMatch = name.match(alpineAttributeRegex());\n    let valueMatch = name.match(/:([a-zA-Z0-9\\-_:]+)/);\n    let modifiers = name.match(/\\.[^.\\]]+(?=[^\\]]*$)/g) || [];\n    let original = originalAttributeOverride || transformedAttributeMap[name] || name;\n    return {\n      type: typeMatch ? typeMatch[1] : null,\n      value: valueMatch ? valueMatch[1] : null,\n      modifiers: modifiers.map((i) => i.replace(\".\", \"\")),\n      expression: value,\n      original\n    };\n  };\n}\nvar DEFAULT = \"DEFAULT\";\nvar directiveOrder = [\n  \"ignore\",\n  \"ref\",\n  \"data\",\n  \"id\",\n  \"anchor\",\n  \"bind\",\n  \"init\",\n  \"for\",\n  \"model\",\n  \"modelable\",\n  \"transition\",\n  \"show\",\n  \"if\",\n  DEFAULT,\n  \"teleport\"\n];\nfunction byPriority(a, b) {\n  let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type;\n  let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type;\n  return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);\n}\n\n// packages/alpinejs/src/utils/dispatch.js\nfunction dispatch(el, name, detail = {}) {\n  el.dispatchEvent(\n    new CustomEvent(name, {\n      detail,\n      bubbles: true,\n      // Allows events to pass the shadow DOM barrier.\n      composed: true,\n      cancelable: true\n    })\n  );\n}\n\n// packages/alpinejs/src/utils/walk.js\nfunction walk(el, callback) {\n  if (typeof ShadowRoot === \"function\" && el instanceof ShadowRoot) {\n    Array.from(el.children).forEach((el2) => walk(el2, callback));\n    return;\n  }\n  let skip = false;\n  callback(el, () => skip = true);\n  if (skip)\n    return;\n  let node = el.firstElementChild;\n  while (node) {\n    walk(node, callback, false);\n    node = node.nextElementSibling;\n  }\n}\n\n// packages/alpinejs/src/utils/warn.js\nfunction warn(message, ...args) {\n  console.warn(`Alpine Warning: ${message}`, ...args);\n}\n\n// packages/alpinejs/src/lifecycle.js\nvar started = false;\nfunction start() {\n  if (started)\n    warn(\"Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.\");\n  started = true;\n  if (!document.body)\n    warn(\"Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?\");\n  dispatch(document, \"alpine:init\");\n  dispatch(document, \"alpine:initializing\");\n  startObservingMutations();\n  onElAdded((el) => initTree(el, walk));\n  onElRemoved((el) => destroyTree(el));\n  onAttributesAdded((el, attrs) => {\n    directives(el, attrs).forEach((handle) => handle());\n  });\n  let outNestedComponents = (el) => !closestRoot(el.parentElement, true);\n  Array.from(document.querySelectorAll(allSelectors().join(\",\"))).filter(outNestedComponents).forEach((el) => {\n    initTree(el);\n  });\n  dispatch(document, \"alpine:initialized\");\n  setTimeout(() => {\n    warnAboutMissingPlugins();\n  });\n}\nvar rootSelectorCallbacks = [];\nvar initSelectorCallbacks = [];\nfunction rootSelectors() {\n  return rootSelectorCallbacks.map((fn) => fn());\n}\nfunction allSelectors() {\n  return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn) => fn());\n}\nfunction addRootSelector(selectorCallback) {\n  rootSelectorCallbacks.push(selectorCallback);\n}\nfunction addInitSelector(selectorCallback) {\n  initSelectorCallbacks.push(selectorCallback);\n}\nfunction closestRoot(el, includeInitSelectors = false) {\n  return findClosest(el, (element) => {\n    const selectors = includeInitSelectors ? allSelectors() : rootSelectors();\n    if (selectors.some((selector) => element.matches(selector)))\n      return true;\n  });\n}\nfunction findClosest(el, callback) {\n  if (!el)\n    return;\n  if (callback(el))\n    return el;\n  if (el._x_teleportBack)\n    el = el._x_teleportBack;\n  if (!el.parentElement)\n    return;\n  return findClosest(el.parentElement, callback);\n}\nfunction isRoot(el) {\n  return rootSelectors().some((selector) => el.matches(selector));\n}\nvar initInterceptors2 = [];\nfunction interceptInit(callback) {\n  initInterceptors2.push(callback);\n}\nvar markerDispenser = 1;\nfunction initTree(el, walker = walk, intercept = () => {\n}) {\n  if (findClosest(el, (i) => i._x_ignore))\n    return;\n  deferHandlingDirectives(() => {\n    walker(el, (el2, skip) => {\n      if (el2._x_marker)\n        return;\n      intercept(el2, skip);\n      initInterceptors2.forEach((i) => i(el2, skip));\n      directives(el2, el2.attributes).forEach((handle) => handle());\n      if (!el2._x_ignore)\n        el2._x_marker = markerDispenser++;\n      el2._x_ignore && skip();\n    });\n  });\n}\nfunction destroyTree(root, walker = walk) {\n  walker(root, (el) => {\n    cleanupElement(el);\n    cleanupAttributes(el);\n    delete el._x_marker;\n  });\n}\nfunction warnAboutMissingPlugins() {\n  let pluginDirectives = [\n    [\"ui\", \"dialog\", [\"[x-dialog], [x-popover]\"]],\n    [\"anchor\", \"anchor\", [\"[x-anchor]\"]],\n    [\"sort\", \"sort\", [\"[x-sort]\"]]\n  ];\n  pluginDirectives.forEach(([plugin2, directive2, selectors]) => {\n    if (directiveExists(directive2))\n      return;\n    selectors.some((selector) => {\n      if (document.querySelector(selector)) {\n        warn(`found \"${selector}\", but missing ${plugin2} plugin`);\n        return true;\n      }\n    });\n  });\n}\n\n// packages/alpinejs/src/nextTick.js\nvar tickStack = [];\nvar isHolding = false;\nfunction nextTick(callback = () => {\n}) {\n  queueMicrotask(() => {\n    isHolding || setTimeout(() => {\n      releaseNextTicks();\n    });\n  });\n  return new Promise((res) => {\n    tickStack.push(() => {\n      callback();\n      res();\n    });\n  });\n}\nfunction releaseNextTicks() {\n  isHolding = false;\n  while (tickStack.length)\n    tickStack.shift()();\n}\nfunction holdNextTicks() {\n  isHolding = true;\n}\n\n// packages/alpinejs/src/utils/classes.js\nfunction setClasses(el, value) {\n  if (Array.isArray(value)) {\n    return setClassesFromString(el, value.join(\" \"));\n  } else if (typeof value === \"object\" && value !== null) {\n    return setClassesFromObject(el, value);\n  } else if (typeof value === \"function\") {\n    return setClasses(el, value());\n  }\n  return setClassesFromString(el, value);\n}\nfunction setClassesFromString(el, classString) {\n  let split = (classString2) => classString2.split(\" \").filter(Boolean);\n  let missingClasses = (classString2) => classString2.split(\" \").filter((i) => !el.classList.contains(i)).filter(Boolean);\n  let addClassesAndReturnUndo = (classes) => {\n    el.classList.add(...classes);\n    return () => {\n      el.classList.remove(...classes);\n    };\n  };\n  classString = classString === true ? classString = \"\" : classString || \"\";\n  return addClassesAndReturnUndo(missingClasses(classString));\n}\nfunction setClassesFromObject(el, classObject) {\n  let split = (classString) => classString.split(\" \").filter(Boolean);\n  let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? split(classString) : false).filter(Boolean);\n  let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => !bool ? split(classString) : false).filter(Boolean);\n  let added = [];\n  let removed = [];\n  forRemove.forEach((i) => {\n    if (el.classList.contains(i)) {\n      el.classList.remove(i);\n      removed.push(i);\n    }\n  });\n  forAdd.forEach((i) => {\n    if (!el.classList.contains(i)) {\n      el.classList.add(i);\n      added.push(i);\n    }\n  });\n  return () => {\n    removed.forEach((i) => el.classList.add(i));\n    added.forEach((i) => el.classList.remove(i));\n  };\n}\n\n// packages/alpinejs/src/utils/styles.js\nfunction setStyles(el, value) {\n  if (typeof value === \"object\" && value !== null) {\n    return setStylesFromObject(el, value);\n  }\n  return setStylesFromString(el, value);\n}\nfunction setStylesFromObject(el, value) {\n  let previousStyles = {};\n  Object.entries(value).forEach(([key, value2]) => {\n    previousStyles[key] = el.style[key];\n    if (!key.startsWith(\"--\")) {\n      key = kebabCase(key);\n    }\n    el.style.setProperty(key, value2);\n  });\n  setTimeout(() => {\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  });\n  return () => {\n    setStyles(el, previousStyles);\n  };\n}\nfunction setStylesFromString(el, value) {\n  let cache = el.getAttribute(\"style\", value);\n  el.setAttribute(\"style\", value);\n  return () => {\n    el.setAttribute(\"style\", cache || \"\");\n  };\n}\nfunction kebabCase(subject) {\n  return subject.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\n// packages/alpinejs/src/utils/once.js\nfunction once(callback, fallback = () => {\n}) {\n  let called = false;\n  return function() {\n    if (!called) {\n      called = true;\n      callback.apply(this, arguments);\n    } else {\n      fallback.apply(this, arguments);\n    }\n  };\n}\n\n// packages/alpinejs/src/directives/x-transition.js\ndirective(\"transition\", (el, { value, modifiers, expression }, { evaluate: evaluate2 }) => {\n  if (typeof expression === \"function\")\n    expression = evaluate2(expression);\n  if (expression === false)\n    return;\n  if (!expression || typeof expression === \"boolean\") {\n    registerTransitionsFromHelper(el, modifiers, value);\n  } else {\n    registerTransitionsFromClassString(el, expression, value);\n  }\n});\nfunction registerTransitionsFromClassString(el, classString, stage) {\n  registerTransitionObject(el, setClasses, \"\");\n  let directiveStorageMap = {\n    \"enter\": (classes) => {\n      el._x_transition.enter.during = classes;\n    },\n    \"enter-start\": (classes) => {\n      el._x_transition.enter.start = classes;\n    },\n    \"enter-end\": (classes) => {\n      el._x_transition.enter.end = classes;\n    },\n    \"leave\": (classes) => {\n      el._x_transition.leave.during = classes;\n    },\n    \"leave-start\": (classes) => {\n      el._x_transition.leave.start = classes;\n    },\n    \"leave-end\": (classes) => {\n      el._x_transition.leave.end = classes;\n    }\n  };\n  directiveStorageMap[stage](classString);\n}\nfunction registerTransitionsFromHelper(el, modifiers, stage) {\n  registerTransitionObject(el, setStyles);\n  let doesntSpecify = !modifiers.includes(\"in\") && !modifiers.includes(\"out\") && !stage;\n  let transitioningIn = doesntSpecify || modifiers.includes(\"in\") || [\"enter\"].includes(stage);\n  let transitioningOut = doesntSpecify || modifiers.includes(\"out\") || [\"leave\"].includes(stage);\n  if (modifiers.includes(\"in\") && !doesntSpecify) {\n    modifiers = modifiers.filter((i, index) => index < modifiers.indexOf(\"out\"));\n  }\n  if (modifiers.includes(\"out\") && !doesntSpecify) {\n    modifiers = modifiers.filter((i, index) => index > modifiers.indexOf(\"out\"));\n  }\n  let wantsAll = !modifiers.includes(\"opacity\") && !modifiers.includes(\"scale\");\n  let wantsOpacity = wantsAll || modifiers.includes(\"opacity\");\n  let wantsScale = wantsAll || modifiers.includes(\"scale\");\n  let opacityValue = wantsOpacity ? 0 : 1;\n  let scaleValue = wantsScale ? modifierValue(modifiers, \"scale\", 95) / 100 : 1;\n  let delay = modifierValue(modifiers, \"delay\", 0) / 1e3;\n  let origin = modifierValue(modifiers, \"origin\", \"center\");\n  let property = \"opacity, transform\";\n  let durationIn = modifierValue(modifiers, \"duration\", 150) / 1e3;\n  let durationOut = modifierValue(modifiers, \"duration\", 75) / 1e3;\n  let easing = `cubic-bezier(0.4, 0.0, 0.2, 1)`;\n  if (transitioningIn) {\n    el._x_transition.enter.during = {\n      transformOrigin: origin,\n      transitionDelay: `${delay}s`,\n      transitionProperty: property,\n      transitionDuration: `${durationIn}s`,\n      transitionTimingFunction: easing\n    };\n    el._x_transition.enter.start = {\n      opacity: opacityValue,\n      transform: `scale(${scaleValue})`\n    };\n    el._x_transition.enter.end = {\n      opacity: 1,\n      transform: `scale(1)`\n    };\n  }\n  if (transitioningOut) {\n    el._x_transition.leave.during = {\n      transformOrigin: origin,\n      transitionDelay: `${delay}s`,\n      transitionProperty: property,\n      transitionDuration: `${durationOut}s`,\n      transitionTimingFunction: easing\n    };\n    el._x_transition.leave.start = {\n      opacity: 1,\n      transform: `scale(1)`\n    };\n    el._x_transition.leave.end = {\n      opacity: opacityValue,\n      transform: `scale(${scaleValue})`\n    };\n  }\n}\nfunction registerTransitionObject(el, setFunction, defaultValue = {}) {\n  if (!el._x_transition)\n    el._x_transition = {\n      enter: { during: defaultValue, start: defaultValue, end: defaultValue },\n      leave: { during: defaultValue, start: defaultValue, end: defaultValue },\n      in(before = () => {\n      }, after = () => {\n      }) {\n        transition(el, setFunction, {\n          during: this.enter.during,\n          start: this.enter.start,\n          end: this.enter.end\n        }, before, after);\n      },\n      out(before = () => {\n      }, after = () => {\n      }) {\n        transition(el, setFunction, {\n          during: this.leave.during,\n          start: this.leave.start,\n          end: this.leave.end\n        }, before, after);\n      }\n    };\n}\nwindow.Element.prototype._x_toggleAndCascadeWithTransitions = function(el, value, show, hide) {\n  const nextTick2 = document.visibilityState === \"visible\" ? requestAnimationFrame : setTimeout;\n  let clickAwayCompatibleShow = () => nextTick2(show);\n  if (value) {\n    if (el._x_transition && (el._x_transition.enter || el._x_transition.leave)) {\n      el._x_transition.enter && (Object.entries(el._x_transition.enter.during).length || Object.entries(el._x_transition.enter.start).length || Object.entries(el._x_transition.enter.end).length) ? el._x_transition.in(show) : clickAwayCompatibleShow();\n    } else {\n      el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow();\n    }\n    return;\n  }\n  el._x_hidePromise = el._x_transition ? new Promise((resolve, reject) => {\n    el._x_transition.out(() => {\n    }, () => resolve(hide));\n    el._x_transitioning && el._x_transitioning.beforeCancel(() => reject({ isFromCancelledTransition: true }));\n  }) : Promise.resolve(hide);\n  queueMicrotask(() => {\n    let closest = closestHide(el);\n    if (closest) {\n      if (!closest._x_hideChildren)\n        closest._x_hideChildren = [];\n      closest._x_hideChildren.push(el);\n    } else {\n      nextTick2(() => {\n        let hideAfterChildren = (el2) => {\n          let carry = Promise.all([\n            el2._x_hidePromise,\n            ...(el2._x_hideChildren || []).map(hideAfterChildren)\n          ]).then(([i]) => i?.());\n          delete el2._x_hidePromise;\n          delete el2._x_hideChildren;\n          return carry;\n        };\n        hideAfterChildren(el).catch((e) => {\n          if (!e.isFromCancelledTransition)\n            throw e;\n        });\n      });\n    }\n  });\n};\nfunction closestHide(el) {\n  let parent = el.parentNode;\n  if (!parent)\n    return;\n  return parent._x_hidePromise ? parent : closestHide(parent);\n}\nfunction transition(el, setFunction, { during, start: start2, end } = {}, before = () => {\n}, after = () => {\n}) {\n  if (el._x_transitioning)\n    el._x_transitioning.cancel();\n  if (Object.keys(during).length === 0 && Object.keys(start2).length === 0 && Object.keys(end).length === 0) {\n    before();\n    after();\n    return;\n  }\n  let undoStart, undoDuring, undoEnd;\n  performTransition(el, {\n    start() {\n      undoStart = setFunction(el, start2);\n    },\n    during() {\n      undoDuring = setFunction(el, during);\n    },\n    before,\n    end() {\n      undoStart();\n      undoEnd = setFunction(el, end);\n    },\n    after,\n    cleanup() {\n      undoDuring();\n      undoEnd();\n    }\n  });\n}\nfunction performTransition(el, stages) {\n  let interrupted, reachedBefore, reachedEnd;\n  let finish = once(() => {\n    mutateDom(() => {\n      interrupted = true;\n      if (!reachedBefore)\n        stages.before();\n      if (!reachedEnd) {\n        stages.end();\n        releaseNextTicks();\n      }\n      stages.after();\n      if (el.isConnected)\n        stages.cleanup();\n      delete el._x_transitioning;\n    });\n  });\n  el._x_transitioning = {\n    beforeCancels: [],\n    beforeCancel(callback) {\n      this.beforeCancels.push(callback);\n    },\n    cancel: once(function() {\n      while (this.beforeCancels.length) {\n        this.beforeCancels.shift()();\n      }\n      ;\n      finish();\n    }),\n    finish\n  };\n  mutateDom(() => {\n    stages.start();\n    stages.during();\n  });\n  holdNextTicks();\n  requestAnimationFrame(() => {\n    if (interrupted)\n      return;\n    let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, \"\").replace(\"s\", \"\")) * 1e3;\n    let delay = Number(getComputedStyle(el).transitionDelay.replace(/,.*/, \"\").replace(\"s\", \"\")) * 1e3;\n    if (duration === 0)\n      duration = Number(getComputedStyle(el).animationDuration.replace(\"s\", \"\")) * 1e3;\n    mutateDom(() => {\n      stages.before();\n    });\n    reachedBefore = true;\n    requestAnimationFrame(() => {\n      if (interrupted)\n        return;\n      mutateDom(() => {\n        stages.end();\n      });\n      releaseNextTicks();\n      setTimeout(el._x_transitioning.finish, duration + delay);\n      reachedEnd = true;\n    });\n  });\n}\nfunction modifierValue(modifiers, key, fallback) {\n  if (modifiers.indexOf(key) === -1)\n    return fallback;\n  const rawValue = modifiers[modifiers.indexOf(key) + 1];\n  if (!rawValue)\n    return fallback;\n  if (key === \"scale\") {\n    if (isNaN(rawValue))\n      return fallback;\n  }\n  if (key === \"duration\" || key === \"delay\") {\n    let match = rawValue.match(/([0-9]+)ms/);\n    if (match)\n      return match[1];\n  }\n  if (key === \"origin\") {\n    if ([\"top\", \"right\", \"left\", \"center\", \"bottom\"].includes(modifiers[modifiers.indexOf(key) + 2])) {\n      return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(\" \");\n    }\n  }\n  return rawValue;\n}\n\n// packages/alpinejs/src/clone.js\nvar isCloning = false;\nfunction skipDuringClone(callback, fallback = () => {\n}) {\n  return (...args) => isCloning ? fallback(...args) : callback(...args);\n}\nfunction onlyDuringClone(callback) {\n  return (...args) => isCloning && callback(...args);\n}\nvar interceptors = [];\nfunction interceptClone(callback) {\n  interceptors.push(callback);\n}\nfunction cloneNode(from, to) {\n  interceptors.forEach((i) => i(from, to));\n  isCloning = true;\n  dontRegisterReactiveSideEffects(() => {\n    initTree(to, (el, callback) => {\n      callback(el, () => {\n      });\n    });\n  });\n  isCloning = false;\n}\nvar isCloningLegacy = false;\nfunction clone(oldEl, newEl) {\n  if (!newEl._x_dataStack)\n    newEl._x_dataStack = oldEl._x_dataStack;\n  isCloning = true;\n  isCloningLegacy = true;\n  dontRegisterReactiveSideEffects(() => {\n    cloneTree(newEl);\n  });\n  isCloning = false;\n  isCloningLegacy = false;\n}\nfunction cloneTree(el) {\n  let hasRunThroughFirstEl = false;\n  let shallowWalker = (el2, callback) => {\n    walk(el2, (el3, skip) => {\n      if (hasRunThroughFirstEl && isRoot(el3))\n        return skip();\n      hasRunThroughFirstEl = true;\n      callback(el3, skip);\n    });\n  };\n  initTree(el, shallowWalker);\n}\nfunction dontRegisterReactiveSideEffects(callback) {\n  let cache = effect;\n  overrideEffect((callback2, el) => {\n    let storedEffect = cache(callback2);\n    release(storedEffect);\n    return () => {\n    };\n  });\n  callback();\n  overrideEffect(cache);\n}\n\n// packages/alpinejs/src/utils/bind.js\nfunction bind(el, name, value, modifiers = []) {\n  if (!el._x_bindings)\n    el._x_bindings = reactive({});\n  el._x_bindings[name] = value;\n  name = modifiers.includes(\"camel\") ? camelCase(name) : name;\n  switch (name) {\n    case \"value\":\n      bindInputValue(el, value);\n      break;\n    case \"style\":\n      bindStyles(el, value);\n      break;\n    case \"class\":\n      bindClasses(el, value);\n      break;\n    case \"selected\":\n    case \"checked\":\n      bindAttributeAndProperty(el, name, value);\n      break;\n    default:\n      bindAttribute(el, name, value);\n      break;\n  }\n}\nfunction bindInputValue(el, value) {\n  if (isRadio(el)) {\n    if (el.attributes.value === void 0) {\n      el.value = value;\n    }\n    if (window.fromModel) {\n      if (typeof value === \"boolean\") {\n        el.checked = safeParseBoolean(el.value) === value;\n      } else {\n        el.checked = checkedAttrLooseCompare(el.value, value);\n      }\n    }\n  } else if (isCheckbox(el)) {\n    if (Number.isInteger(value)) {\n      el.value = value;\n    } else if (!Array.isArray(value) && typeof value !== \"boolean\" && ![null, void 0].includes(value)) {\n      el.value = String(value);\n    } else {\n      if (Array.isArray(value)) {\n        el.checked = value.some((val) => checkedAttrLooseCompare(val, el.value));\n      } else {\n        el.checked = !!value;\n      }\n    }\n  } else if (el.tagName === \"SELECT\") {\n    updateSelect(el, value);\n  } else {\n    if (el.value === value)\n      return;\n    el.value = value === void 0 ? \"\" : value;\n  }\n}\nfunction bindClasses(el, value) {\n  if (el._x_undoAddedClasses)\n    el._x_undoAddedClasses();\n  el._x_undoAddedClasses = setClasses(el, value);\n}\nfunction bindStyles(el, value) {\n  if (el._x_undoAddedStyles)\n    el._x_undoAddedStyles();\n  el._x_undoAddedStyles = setStyles(el, value);\n}\nfunction bindAttributeAndProperty(el, name, value) {\n  bindAttribute(el, name, value);\n  setPropertyIfChanged(el, name, value);\n}\nfunction bindAttribute(el, name, value) {\n  if ([null, void 0, false].includes(value) && attributeShouldntBePreservedIfFalsy(name)) {\n    el.removeAttribute(name);\n  } else {\n    if (isBooleanAttr(name))\n      value = name;\n    setIfChanged(el, name, value);\n  }\n}\nfunction setIfChanged(el, attrName, value) {\n  if (el.getAttribute(attrName) != value) {\n    el.setAttribute(attrName, value);\n  }\n}\nfunction setPropertyIfChanged(el, propName, value) {\n  if (el[propName] !== value) {\n    el[propName] = value;\n  }\n}\nfunction updateSelect(el, value) {\n  const arrayWrappedValue = [].concat(value).map((value2) => {\n    return value2 + \"\";\n  });\n  Array.from(el.options).forEach((option) => {\n    option.selected = arrayWrappedValue.includes(option.value);\n  });\n}\nfunction camelCase(subject) {\n  return subject.toLowerCase().replace(/-(\\w)/g, (match, char) => char.toUpperCase());\n}\nfunction checkedAttrLooseCompare(valueA, valueB) {\n  return valueA == valueB;\n}\nfunction safeParseBoolean(rawValue) {\n  if ([1, \"1\", \"true\", \"on\", \"yes\", true].includes(rawValue)) {\n    return true;\n  }\n  if ([0, \"0\", \"false\", \"off\", \"no\", false].includes(rawValue)) {\n    return false;\n  }\n  return rawValue ? Boolean(rawValue) : null;\n}\nvar booleanAttributes = /* @__PURE__ */ new Set([\n  \"allowfullscreen\",\n  \"async\",\n  \"autofocus\",\n  \"autoplay\",\n  \"checked\",\n  \"controls\",\n  \"default\",\n  \"defer\",\n  \"disabled\",\n  \"formnovalidate\",\n  \"inert\",\n  \"ismap\",\n  \"itemscope\",\n  \"loop\",\n  \"multiple\",\n  \"muted\",\n  \"nomodule\",\n  \"novalidate\",\n  \"open\",\n  \"playsinline\",\n  \"readonly\",\n  \"required\",\n  \"reversed\",\n  \"selected\",\n  \"shadowrootclonable\",\n  \"shadowrootdelegatesfocus\",\n  \"shadowrootserializable\"\n]);\nfunction isBooleanAttr(attrName) {\n  return booleanAttributes.has(attrName);\n}\nfunction attributeShouldntBePreservedIfFalsy(name) {\n  return ![\"aria-pressed\", \"aria-checked\", \"aria-expanded\", \"aria-selected\"].includes(name);\n}\nfunction getBinding(el, name, fallback) {\n  if (el._x_bindings && el._x_bindings[name] !== void 0)\n    return el._x_bindings[name];\n  return getAttributeBinding(el, name, fallback);\n}\nfunction extractProp(el, name, fallback, extract = true) {\n  if (el._x_bindings && el._x_bindings[name] !== void 0)\n    return el._x_bindings[name];\n  if (el._x_inlineBindings && el._x_inlineBindings[name] !== void 0) {\n    let binding = el._x_inlineBindings[name];\n    binding.extract = extract;\n    return dontAutoEvaluateFunctions(() => {\n      return evaluate(el, binding.expression);\n    });\n  }\n  return getAttributeBinding(el, name, fallback);\n}\nfunction getAttributeBinding(el, name, fallback) {\n  let attr = el.getAttribute(name);\n  if (attr === null)\n    return typeof fallback === \"function\" ? fallback() : fallback;\n  if (attr === \"\")\n    return true;\n  if (isBooleanAttr(name)) {\n    return !![name, \"true\"].includes(attr);\n  }\n  return attr;\n}\nfunction isCheckbox(el) {\n  return el.type === \"checkbox\" || el.localName === \"ui-checkbox\" || el.localName === \"ui-switch\";\n}\nfunction isRadio(el) {\n  return el.type === \"radio\" || el.localName === \"ui-radio\";\n}\n\n// packages/alpinejs/src/utils/debounce.js\nfunction debounce(func, wait) {\n  var timeout;\n  return function() {\n    var context = this, args = arguments;\n    var later = function() {\n      timeout = null;\n      func.apply(context, args);\n    };\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n  };\n}\n\n// packages/alpinejs/src/utils/throttle.js\nfunction throttle(func, limit) {\n  let inThrottle;\n  return function() {\n    let context = this, args = arguments;\n    if (!inThrottle) {\n      func.apply(context, args);\n      inThrottle = true;\n      setTimeout(() => inThrottle = false, limit);\n    }\n  };\n}\n\n// packages/alpinejs/src/entangle.js\nfunction entangle({ get: outerGet, set: outerSet }, { get: innerGet, set: innerSet }) {\n  let firstRun = true;\n  let outerHash;\n  let innerHash;\n  let reference = effect(() => {\n    let outer = outerGet();\n    let inner = innerGet();\n    if (firstRun) {\n      innerSet(cloneIfObject(outer));\n      firstRun = false;\n    } else {\n      let outerHashLatest = JSON.stringify(outer);\n      let innerHashLatest = JSON.stringify(inner);\n      if (outerHashLatest !== outerHash) {\n        innerSet(cloneIfObject(outer));\n      } else if (outerHashLatest !== innerHashLatest) {\n        outerSet(cloneIfObject(inner));\n      } else {\n      }\n    }\n    outerHash = JSON.stringify(outerGet());\n    innerHash = JSON.stringify(innerGet());\n  });\n  return () => {\n    release(reference);\n  };\n}\nfunction cloneIfObject(value) {\n  return typeof value === \"object\" ? JSON.parse(JSON.stringify(value)) : value;\n}\n\n// packages/alpinejs/src/plugin.js\nfunction plugin(callback) {\n  let callbacks = Array.isArray(callback) ? callback : [callback];\n  callbacks.forEach((i) => i(alpine_default));\n}\n\n// packages/alpinejs/src/store.js\nvar stores = {};\nvar isReactive = false;\nfunction store(name, value) {\n  if (!isReactive) {\n    stores = reactive(stores);\n    isReactive = true;\n  }\n  if (value === void 0) {\n    return stores[name];\n  }\n  stores[name] = value;\n  initInterceptors(stores[name]);\n  if (typeof value === \"object\" && value !== null && value.hasOwnProperty(\"init\") && typeof value.init === \"function\") {\n    stores[name].init();\n  }\n}\nfunction getStores() {\n  return stores;\n}\n\n// packages/alpinejs/src/binds.js\nvar binds = {};\nfunction bind2(name, bindings) {\n  let getBindings = typeof bindings !== \"function\" ? () => bindings : bindings;\n  if (name instanceof Element) {\n    return applyBindingsObject(name, getBindings());\n  } else {\n    binds[name] = getBindings;\n  }\n  return () => {\n  };\n}\nfunction injectBindingProviders(obj) {\n  Object.entries(binds).forEach(([name, callback]) => {\n    Object.defineProperty(obj, name, {\n      get() {\n        return (...args) => {\n          return callback(...args);\n        };\n      }\n    });\n  });\n  return obj;\n}\nfunction applyBindingsObject(el, obj, original) {\n  let cleanupRunners = [];\n  while (cleanupRunners.length)\n    cleanupRunners.pop()();\n  let attributes = Object.entries(obj).map(([name, value]) => ({ name, value }));\n  let staticAttributes = attributesOnly(attributes);\n  attributes = attributes.map((attribute) => {\n    if (staticAttributes.find((attr) => attr.name === attribute.name)) {\n      return {\n        name: `x-bind:${attribute.name}`,\n        value: `\"${attribute.value}\"`\n      };\n    }\n    return attribute;\n  });\n  directives(el, attributes, original).map((handle) => {\n    cleanupRunners.push(handle.runCleanups);\n    handle();\n  });\n  return () => {\n    while (cleanupRunners.length)\n      cleanupRunners.pop()();\n  };\n}\n\n// packages/alpinejs/src/datas.js\nvar datas = {};\nfunction data(name, callback) {\n  datas[name] = callback;\n}\nfunction injectDataProviders(obj, context) {\n  Object.entries(datas).forEach(([name, callback]) => {\n    Object.defineProperty(obj, name, {\n      get() {\n        return (...args) => {\n          return callback.bind(context)(...args);\n        };\n      },\n      enumerable: false\n    });\n  });\n  return obj;\n}\n\n// packages/alpinejs/src/alpine.js\nvar Alpine = {\n  get reactive() {\n    return reactive;\n  },\n  get release() {\n    return release;\n  },\n  get effect() {\n    return effect;\n  },\n  get raw() {\n    return raw;\n  },\n  version: \"3.14.8\",\n  flushAndStopDeferringMutations,\n  dontAutoEvaluateFunctions,\n  disableEffectScheduling,\n  startObservingMutations,\n  stopObservingMutations,\n  setReactivityEngine,\n  onAttributeRemoved,\n  onAttributesAdded,\n  closestDataStack,\n  skipDuringClone,\n  onlyDuringClone,\n  addRootSelector,\n  addInitSelector,\n  interceptClone,\n  addScopeToNode,\n  deferMutations,\n  mapAttributes,\n  evaluateLater,\n  interceptInit,\n  setEvaluator,\n  mergeProxies,\n  extractProp,\n  findClosest,\n  onElRemoved,\n  closestRoot,\n  destroyTree,\n  interceptor,\n  // INTERNAL: not public API and is subject to change without major release.\n  transition,\n  // INTERNAL\n  setStyles,\n  // INTERNAL\n  mutateDom,\n  directive,\n  entangle,\n  throttle,\n  debounce,\n  evaluate,\n  initTree,\n  nextTick,\n  prefixed: prefix,\n  prefix: setPrefix,\n  plugin,\n  magic,\n  store,\n  start,\n  clone,\n  // INTERNAL\n  cloneNode,\n  // INTERNAL\n  bound: getBinding,\n  $data: scope,\n  watch,\n  walk,\n  data,\n  bind: bind2\n};\nvar alpine_default = Alpine;\n\n// node_modules/@vue/shared/dist/shared.esm-bundler.js\nfunction makeMap(str, expectsLowerCase) {\n  const map = /* @__PURE__ */ Object.create(null);\n  const list = str.split(\",\");\n  for (let i = 0; i < list.length; i++) {\n    map[list[i]] = true;\n  }\n  return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nvar specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nvar isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`);\nvar EMPTY_OBJ = true ? Object.freeze({}) : {};\nvar EMPTY_ARR = true ? Object.freeze([]) : [];\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hasOwn = (val, key) => hasOwnProperty.call(val, key);\nvar isArray = Array.isArray;\nvar isMap = (val) => toTypeString(val) === \"[object Map]\";\nvar isString = (val) => typeof val === \"string\";\nvar isSymbol = (val) => typeof val === \"symbol\";\nvar isObject = (val) => val !== null && typeof val === \"object\";\nvar objectToString = Object.prototype.toString;\nvar toTypeString = (value) => objectToString.call(value);\nvar toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nvar isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nvar cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nvar capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\nvar toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\nvar hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue);\n\n// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js\nvar targetMap = /* @__PURE__ */ new WeakMap();\nvar effectStack = [];\nvar activeEffect;\nvar ITERATE_KEY = Symbol(true ? \"iterate\" : \"\");\nvar MAP_KEY_ITERATE_KEY = Symbol(true ? \"Map key iterate\" : \"\");\nfunction isEffect(fn) {\n  return fn && fn._isEffect === true;\n}\nfunction effect2(fn, options = EMPTY_OBJ) {\n  if (isEffect(fn)) {\n    fn = fn.raw;\n  }\n  const effect3 = createReactiveEffect(fn, options);\n  if (!options.lazy) {\n    effect3();\n  }\n  return effect3;\n}\nfunction stop(effect3) {\n  if (effect3.active) {\n    cleanup(effect3);\n    if (effect3.options.onStop) {\n      effect3.options.onStop();\n    }\n    effect3.active = false;\n  }\n}\nvar uid = 0;\nfunction createReactiveEffect(fn, options) {\n  const effect3 = function reactiveEffect() {\n    if (!effect3.active) {\n      return fn();\n    }\n    if (!effectStack.includes(effect3)) {\n      cleanup(effect3);\n      try {\n        enableTracking();\n        effectStack.push(effect3);\n        activeEffect = effect3;\n        return fn();\n      } finally {\n        effectStack.pop();\n        resetTracking();\n        activeEffect = effectStack[effectStack.length - 1];\n      }\n    }\n  };\n  effect3.id = uid++;\n  effect3.allowRecurse = !!options.allowRecurse;\n  effect3._isEffect = true;\n  effect3.active = true;\n  effect3.raw = fn;\n  effect3.deps = [];\n  effect3.options = options;\n  return effect3;\n}\nfunction cleanup(effect3) {\n  const { deps } = effect3;\n  if (deps.length) {\n    for (let i = 0; i < deps.length; i++) {\n      deps[i].delete(effect3);\n    }\n    deps.length = 0;\n  }\n}\nvar shouldTrack = true;\nvar trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction enableTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = true;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction track(target, type, key) {\n  if (!shouldTrack || activeEffect === void 0) {\n    return;\n  }\n  let depsMap = targetMap.get(target);\n  if (!depsMap) {\n    targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n  }\n  let dep = depsMap.get(key);\n  if (!dep) {\n    depsMap.set(key, dep = /* @__PURE__ */ new Set());\n  }\n  if (!dep.has(activeEffect)) {\n    dep.add(activeEffect);\n    activeEffect.deps.push(dep);\n    if (activeEffect.options.onTrack) {\n      activeEffect.options.onTrack({\n        effect: activeEffect,\n        target,\n        type,\n        key\n      });\n    }\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    return;\n  }\n  const effects = /* @__PURE__ */ new Set();\n  const add2 = (effectsToAdd) => {\n    if (effectsToAdd) {\n      effectsToAdd.forEach((effect3) => {\n        if (effect3 !== activeEffect || effect3.allowRecurse) {\n          effects.add(effect3);\n        }\n      });\n    }\n  };\n  if (type === \"clear\") {\n    depsMap.forEach(add2);\n  } else if (key === \"length\" && isArray(target)) {\n    depsMap.forEach((dep, key2) => {\n      if (key2 === \"length\" || key2 >= newValue) {\n        add2(dep);\n      }\n    });\n  } else {\n    if (key !== void 0) {\n      add2(depsMap.get(key));\n    }\n    switch (type) {\n      case \"add\":\n        if (!isArray(target)) {\n          add2(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            add2(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        } else if (isIntegerKey(key)) {\n          add2(depsMap.get(\"length\"));\n        }\n        break;\n      case \"delete\":\n        if (!isArray(target)) {\n          add2(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            add2(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        }\n        break;\n      case \"set\":\n        if (isMap(target)) {\n          add2(depsMap.get(ITERATE_KEY));\n        }\n        break;\n    }\n  }\n  const run = (effect3) => {\n    if (effect3.options.onTrigger) {\n      effect3.options.onTrigger({\n        effect: effect3,\n        target,\n        key,\n        type,\n        newValue,\n        oldValue,\n        oldTarget\n      });\n    }\n    if (effect3.options.scheduler) {\n      effect3.options.scheduler(effect3);\n    } else {\n      effect3();\n    }\n  };\n  effects.forEach(run);\n}\nvar isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nvar builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol));\nvar get2 = /* @__PURE__ */ createGetter();\nvar readonlyGet = /* @__PURE__ */ createGetter(true);\nvar arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n  const instrumentations = {};\n  [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      const arr = toRaw(this);\n      for (let i = 0, l = this.length; i < l; i++) {\n        track(arr, \"get\", i + \"\");\n      }\n      const res = arr[key](...args);\n      if (res === -1 || res === false) {\n        return arr[key](...args.map(toRaw));\n      } else {\n        return res;\n      }\n    };\n  });\n  [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      pauseTracking();\n      const res = toRaw(this)[key].apply(this, args);\n      resetTracking();\n      return res;\n    };\n  });\n  return instrumentations;\n}\nfunction createGetter(isReadonly = false, shallow = false) {\n  return function get3(target, key, receiver) {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly;\n    } else if (key === \"__v_raw\" && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {\n      return target;\n    }\n    const targetIsArray = isArray(target);\n    if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\n      return Reflect.get(arrayInstrumentations, key, receiver);\n    }\n    const res = Reflect.get(target, key, receiver);\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly) {\n      track(target, \"get\", key);\n    }\n    if (shallow) {\n      return res;\n    }\n    if (isRef(res)) {\n      const shouldUnwrap = !targetIsArray || !isIntegerKey(key);\n      return shouldUnwrap ? res.value : res;\n    }\n    if (isObject(res)) {\n      return isReadonly ? readonly(res) : reactive2(res);\n    }\n    return res;\n  };\n}\nvar set2 = /* @__PURE__ */ createSetter();\nfunction createSetter(shallow = false) {\n  return function set3(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (!shallow) {\n      value = toRaw(value);\n      oldValue = toRaw(oldValue);\n      if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n        oldValue.value = value;\n        return true;\n      }\n    }\n    const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n    const result = Reflect.set(target, key, value, receiver);\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged(value, oldValue)) {\n        trigger(target, \"set\", key, value, oldValue);\n      }\n    }\n    return result;\n  };\n}\nfunction deleteProperty(target, key) {\n  const hadKey = hasOwn(target, key);\n  const oldValue = target[key];\n  const result = Reflect.deleteProperty(target, key);\n  if (result && hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction has(target, key) {\n  const result = Reflect.has(target, key);\n  if (!isSymbol(key) || !builtInSymbols.has(key)) {\n    track(target, \"has\", key);\n  }\n  return result;\n}\nfunction ownKeys(target) {\n  track(target, \"iterate\", isArray(target) ? \"length\" : ITERATE_KEY);\n  return Reflect.ownKeys(target);\n}\nvar mutableHandlers = {\n  get: get2,\n  set: set2,\n  deleteProperty,\n  has,\n  ownKeys\n};\nvar readonlyHandlers = {\n  get: readonlyGet,\n  set(target, key) {\n    if (true) {\n      console.warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n    }\n    return true;\n  },\n  deleteProperty(target, key) {\n    if (true) {\n      console.warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n    }\n    return true;\n  }\n};\nvar toReactive = (value) => isObject(value) ? reactive2(value) : value;\nvar toReadonly = (value) => isObject(value) ? readonly(value) : value;\nvar toShallow = (value) => value;\nvar getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n  target = target[\n    \"__v_raw\"\n    /* RAW */\n  ];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (key !== rawKey) {\n    !isReadonly && track(rawTarget, \"get\", key);\n  }\n  !isReadonly && track(rawTarget, \"get\", rawKey);\n  const { has: has2 } = getProto(rawTarget);\n  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n  if (has2.call(rawTarget, key)) {\n    return wrap(target.get(key));\n  } else if (has2.call(rawTarget, rawKey)) {\n    return wrap(target.get(rawKey));\n  } else if (target !== rawTarget) {\n    target.get(key);\n  }\n}\nfunction has$1(key, isReadonly = false) {\n  const target = this[\n    \"__v_raw\"\n    /* RAW */\n  ];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (key !== rawKey) {\n    !isReadonly && track(rawTarget, \"has\", key);\n  }\n  !isReadonly && track(rawTarget, \"has\", rawKey);\n  return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n  target = target[\n    \"__v_raw\"\n    /* RAW */\n  ];\n  !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n  return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const proto = getProto(target);\n  const hadKey = proto.has.call(target, value);\n  if (!hadKey) {\n    target.add(value);\n    trigger(target, \"add\", value, value);\n  }\n  return this;\n}\nfunction set$1(key, value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const { has: has2, get: get3 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (true) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get3.call(target, key);\n  target.set(key, value);\n  if (!hadKey) {\n    trigger(target, \"add\", key, value);\n  } else if (hasChanged(value, oldValue)) {\n    trigger(target, \"set\", key, value, oldValue);\n  }\n  return this;\n}\nfunction deleteEntry(key) {\n  const target = toRaw(this);\n  const { has: has2, get: get3 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (true) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get3 ? get3.call(target, key) : void 0;\n  const result = target.delete(key);\n  if (hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction clear() {\n  const target = toRaw(this);\n  const hadItems = target.size !== 0;\n  const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n  const result = target.clear();\n  if (hadItems) {\n    trigger(target, \"clear\", void 0, void 0, oldTarget);\n  }\n  return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n  return function forEach(callback, thisArg) {\n    const observed = this;\n    const target = observed[\n      \"__v_raw\"\n      /* RAW */\n    ];\n    const rawTarget = toRaw(target);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n    return target.forEach((value, key) => {\n      return callback.call(thisArg, wrap(value), wrap(key), observed);\n    });\n  };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n  return function(...args) {\n    const target = this[\n      \"__v_raw\"\n      /* RAW */\n    ];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(rawTarget, \"iterate\", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n    return {\n      // iterator protocol\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      // iterable protocol\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    if (true) {\n      const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n      console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n    }\n    return type === \"delete\" ? false : this;\n  };\n}\nfunction createInstrumentations() {\n  const mutableInstrumentations2 = {\n    get(key) {\n      return get$1(this, key);\n    },\n    get size() {\n      return size(this);\n    },\n    has: has$1,\n    add,\n    set: set$1,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, false)\n  };\n  const shallowInstrumentations2 = {\n    get(key) {\n      return get$1(this, key, false, true);\n    },\n    get size() {\n      return size(this);\n    },\n    has: has$1,\n    add,\n    set: set$1,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, true)\n  };\n  const readonlyInstrumentations2 = {\n    get(key) {\n      return get$1(this, key, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has$1.call(this, key, true);\n    },\n    add: createReadonlyMethod(\n      \"add\"\n      /* ADD */\n    ),\n    set: createReadonlyMethod(\n      \"set\"\n      /* SET */\n    ),\n    delete: createReadonlyMethod(\n      \"delete\"\n      /* DELETE */\n    ),\n    clear: createReadonlyMethod(\n      \"clear\"\n      /* CLEAR */\n    ),\n    forEach: createForEach(true, false)\n  };\n  const shallowReadonlyInstrumentations2 = {\n    get(key) {\n      return get$1(this, key, true, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has$1.call(this, key, true);\n    },\n    add: createReadonlyMethod(\n      \"add\"\n      /* ADD */\n    ),\n    set: createReadonlyMethod(\n      \"set\"\n      /* SET */\n    ),\n    delete: createReadonlyMethod(\n      \"delete\"\n      /* DELETE */\n    ),\n    clear: createReadonlyMethod(\n      \"clear\"\n      /* CLEAR */\n    ),\n    forEach: createForEach(true, true)\n  };\n  const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n  iteratorMethods.forEach((method) => {\n    mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n    readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n    shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n    shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);\n  });\n  return [\n    mutableInstrumentations2,\n    readonlyInstrumentations2,\n    shallowInstrumentations2,\n    shallowReadonlyInstrumentations2\n  ];\n}\nvar [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n  const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);\n  };\n}\nvar mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nvar readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nfunction checkIdentityKeys(target, has2, key) {\n  const rawKey = toRaw(key);\n  if (rawKey !== key && has2.call(target, rawKey)) {\n    const type = toRawType(target);\n    console.warn(`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`);\n  }\n}\nvar reactiveMap = /* @__PURE__ */ new WeakMap();\nvar shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nvar readonlyMap = /* @__PURE__ */ new WeakMap();\nvar shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getTargetType(value) {\n  return value[\n    \"__v_skip\"\n    /* SKIP */\n  ] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));\n}\nfunction reactive2(target) {\n  if (target && target[\n    \"__v_isReadonly\"\n    /* IS_READONLY */\n  ]) {\n    return target;\n  }\n  return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\nfunction readonly(target) {\n  return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject(target)) {\n    if (true) {\n      console.warn(`value cannot be made reactive: ${String(target)}`);\n    }\n    return target;\n  }\n  if (target[\n    \"__v_raw\"\n    /* RAW */\n  ] && !(isReadonly && target[\n    \"__v_isReactive\"\n    /* IS_REACTIVE */\n  ])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0) {\n    return target;\n  }\n  const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction toRaw(observed) {\n  return observed && toRaw(observed[\n    \"__v_raw\"\n    /* RAW */\n  ]) || observed;\n}\nfunction isRef(r) {\n  return Boolean(r && r.__v_isRef === true);\n}\n\n// packages/alpinejs/src/magics/$nextTick.js\nmagic(\"nextTick\", () => nextTick);\n\n// packages/alpinejs/src/magics/$dispatch.js\nmagic(\"dispatch\", (el) => dispatch.bind(dispatch, el));\n\n// packages/alpinejs/src/magics/$watch.js\nmagic(\"watch\", (el, { evaluateLater: evaluateLater2, cleanup: cleanup2 }) => (key, callback) => {\n  let evaluate2 = evaluateLater2(key);\n  let getter = () => {\n    let value;\n    evaluate2((i) => value = i);\n    return value;\n  };\n  let unwatch = watch(getter, callback);\n  cleanup2(unwatch);\n});\n\n// packages/alpinejs/src/magics/$store.js\nmagic(\"store\", getStores);\n\n// packages/alpinejs/src/magics/$data.js\nmagic(\"data\", (el) => scope(el));\n\n// packages/alpinejs/src/magics/$root.js\nmagic(\"root\", (el) => closestRoot(el));\n\n// packages/alpinejs/src/magics/$refs.js\nmagic(\"refs\", (el) => {\n  if (el._x_refs_proxy)\n    return el._x_refs_proxy;\n  el._x_refs_proxy = mergeProxies(getArrayOfRefObject(el));\n  return el._x_refs_proxy;\n});\nfunction getArrayOfRefObject(el) {\n  let refObjects = [];\n  findClosest(el, (i) => {\n    if (i._x_refs)\n      refObjects.push(i._x_refs);\n  });\n  return refObjects;\n}\n\n// packages/alpinejs/src/ids.js\nvar globalIdMemo = {};\nfunction findAndIncrementId(name) {\n  if (!globalIdMemo[name])\n    globalIdMemo[name] = 0;\n  return ++globalIdMemo[name];\n}\nfunction closestIdRoot(el, name) {\n  return findClosest(el, (element) => {\n    if (element._x_ids && element._x_ids[name])\n      return true;\n  });\n}\nfunction setIdRoot(el, name) {\n  if (!el._x_ids)\n    el._x_ids = {};\n  if (!el._x_ids[name])\n    el._x_ids[name] = findAndIncrementId(name);\n}\n\n// packages/alpinejs/src/magics/$id.js\nmagic(\"id\", (el, { cleanup: cleanup2 }) => (name, key = null) => {\n  let cacheKey = `${name}${key ? `-${key}` : \"\"}`;\n  return cacheIdByNameOnElement(el, cacheKey, cleanup2, () => {\n    let root = closestIdRoot(el, name);\n    let id = root ? root._x_ids[name] : findAndIncrementId(name);\n    return key ? `${name}-${id}-${key}` : `${name}-${id}`;\n  });\n});\ninterceptClone((from, to) => {\n  if (from._x_id) {\n    to._x_id = from._x_id;\n  }\n});\nfunction cacheIdByNameOnElement(el, cacheKey, cleanup2, callback) {\n  if (!el._x_id)\n    el._x_id = {};\n  if (el._x_id[cacheKey])\n    return el._x_id[cacheKey];\n  let output = callback();\n  el._x_id[cacheKey] = output;\n  cleanup2(() => {\n    delete el._x_id[cacheKey];\n  });\n  return output;\n}\n\n// packages/alpinejs/src/magics/$el.js\nmagic(\"el\", (el) => el);\n\n// packages/alpinejs/src/magics/index.js\nwarnMissingPluginMagic(\"Focus\", \"focus\", \"focus\");\nwarnMissingPluginMagic(\"Persist\", \"persist\", \"persist\");\nfunction warnMissingPluginMagic(name, magicName, slug) {\n  magic(magicName, (el) => warn(`You can't use [$${magicName}] without first installing the \"${name}\" plugin here: https://alpinejs.dev/plugins/${slug}`, el));\n}\n\n// packages/alpinejs/src/directives/x-modelable.js\ndirective(\"modelable\", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => {\n  let func = evaluateLater2(expression);\n  let innerGet = () => {\n    let result;\n    func((i) => result = i);\n    return result;\n  };\n  let evaluateInnerSet = evaluateLater2(`${expression} = __placeholder`);\n  let innerSet = (val) => evaluateInnerSet(() => {\n  }, { scope: { \"__placeholder\": val } });\n  let initialValue = innerGet();\n  innerSet(initialValue);\n  queueMicrotask(() => {\n    if (!el._x_model)\n      return;\n    el._x_removeModelListeners[\"default\"]();\n    let outerGet = el._x_model.get;\n    let outerSet = el._x_model.set;\n    let releaseEntanglement = entangle(\n      {\n        get() {\n          return outerGet();\n        },\n        set(value) {\n          outerSet(value);\n        }\n      },\n      {\n        get() {\n          return innerGet();\n        },\n        set(value) {\n          innerSet(value);\n        }\n      }\n    );\n    cleanup2(releaseEntanglement);\n  });\n});\n\n// packages/alpinejs/src/directives/x-teleport.js\ndirective(\"teleport\", (el, { modifiers, expression }, { cleanup: cleanup2 }) => {\n  if (el.tagName.toLowerCase() !== \"template\")\n    warn(\"x-teleport can only be used on a <template> tag\", el);\n  let target = getTarget(expression);\n  let clone2 = el.content.cloneNode(true).firstElementChild;\n  el._x_teleport = clone2;\n  clone2._x_teleportBack = el;\n  el.setAttribute(\"data-teleport-template\", true);\n  clone2.setAttribute(\"data-teleport-target\", true);\n  if (el._x_forwardEvents) {\n    el._x_forwardEvents.forEach((eventName) => {\n      clone2.addEventListener(eventName, (e) => {\n        e.stopPropagation();\n        el.dispatchEvent(new e.constructor(e.type, e));\n      });\n    });\n  }\n  addScopeToNode(clone2, {}, el);\n  let placeInDom = (clone3, target2, modifiers2) => {\n    if (modifiers2.includes(\"prepend\")) {\n      target2.parentNode.insertBefore(clone3, target2);\n    } else if (modifiers2.includes(\"append\")) {\n      target2.parentNode.insertBefore(clone3, target2.nextSibling);\n    } else {\n      target2.appendChild(clone3);\n    }\n  };\n  mutateDom(() => {\n    placeInDom(clone2, target, modifiers);\n    skipDuringClone(() => {\n      initTree(clone2);\n    })();\n  });\n  el._x_teleportPutBack = () => {\n    let target2 = getTarget(expression);\n    mutateDom(() => {\n      placeInDom(el._x_teleport, target2, modifiers);\n    });\n  };\n  cleanup2(\n    () => mutateDom(() => {\n      clone2.remove();\n      destroyTree(clone2);\n    })\n  );\n});\nvar teleportContainerDuringClone = document.createElement(\"div\");\nfunction getTarget(expression) {\n  let target = skipDuringClone(() => {\n    return document.querySelector(expression);\n  }, () => {\n    return teleportContainerDuringClone;\n  })();\n  if (!target)\n    warn(`Cannot find x-teleport element for selector: \"${expression}\"`);\n  return target;\n}\n\n// packages/alpinejs/src/directives/x-ignore.js\nvar handler = () => {\n};\nhandler.inline = (el, { modifiers }, { cleanup: cleanup2 }) => {\n  modifiers.includes(\"self\") ? el._x_ignoreSelf = true : el._x_ignore = true;\n  cleanup2(() => {\n    modifiers.includes(\"self\") ? delete el._x_ignoreSelf : delete el._x_ignore;\n  });\n};\ndirective(\"ignore\", handler);\n\n// packages/alpinejs/src/directives/x-effect.js\ndirective(\"effect\", skipDuringClone((el, { expression }, { effect: effect3 }) => {\n  effect3(evaluateLater(el, expression));\n}));\n\n// packages/alpinejs/src/utils/on.js\nfunction on(el, event, modifiers, callback) {\n  let listenerTarget = el;\n  let handler4 = (e) => callback(e);\n  let options = {};\n  let wrapHandler = (callback2, wrapper) => (e) => wrapper(callback2, e);\n  if (modifiers.includes(\"dot\"))\n    event = dotSyntax(event);\n  if (modifiers.includes(\"camel\"))\n    event = camelCase2(event);\n  if (modifiers.includes(\"passive\"))\n    options.passive = true;\n  if (modifiers.includes(\"capture\"))\n    options.capture = true;\n  if (modifiers.includes(\"window\"))\n    listenerTarget = window;\n  if (modifiers.includes(\"document\"))\n    listenerTarget = document;\n  if (modifiers.includes(\"debounce\")) {\n    let nextModifier = modifiers[modifiers.indexOf(\"debounce\") + 1] || \"invalid-wait\";\n    let wait = isNumeric(nextModifier.split(\"ms\")[0]) ? Number(nextModifier.split(\"ms\")[0]) : 250;\n    handler4 = debounce(handler4, wait);\n  }\n  if (modifiers.includes(\"throttle\")) {\n    let nextModifier = modifiers[modifiers.indexOf(\"throttle\") + 1] || \"invalid-wait\";\n    let wait = isNumeric(nextModifier.split(\"ms\")[0]) ? Number(nextModifier.split(\"ms\")[0]) : 250;\n    handler4 = throttle(handler4, wait);\n  }\n  if (modifiers.includes(\"prevent\"))\n    handler4 = wrapHandler(handler4, (next, e) => {\n      e.preventDefault();\n      next(e);\n    });\n  if (modifiers.includes(\"stop\"))\n    handler4 = wrapHandler(handler4, (next, e) => {\n      e.stopPropagation();\n      next(e);\n    });\n  if (modifiers.includes(\"once\")) {\n    handler4 = wrapHandler(handler4, (next, e) => {\n      next(e);\n      listenerTarget.removeEventListener(event, handler4, options);\n    });\n  }\n  if (modifiers.includes(\"away\") || modifiers.includes(\"outside\")) {\n    listenerTarget = document;\n    handler4 = wrapHandler(handler4, (next, e) => {\n      if (el.contains(e.target))\n        return;\n      if (e.target.isConnected === false)\n        return;\n      if (el.offsetWidth < 1 && el.offsetHeight < 1)\n        return;\n      if (el._x_isShown === false)\n        return;\n      next(e);\n    });\n  }\n  if (modifiers.includes(\"self\"))\n    handler4 = wrapHandler(handler4, (next, e) => {\n      e.target === el && next(e);\n    });\n  if (isKeyEvent(event) || isClickEvent(event)) {\n    handler4 = wrapHandler(handler4, (next, e) => {\n      if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) {\n        return;\n      }\n      next(e);\n    });\n  }\n  listenerTarget.addEventListener(event, handler4, options);\n  return () => {\n    listenerTarget.removeEventListener(event, handler4, options);\n  };\n}\nfunction dotSyntax(subject) {\n  return subject.replace(/-/g, \".\");\n}\nfunction camelCase2(subject) {\n  return subject.toLowerCase().replace(/-(\\w)/g, (match, char) => char.toUpperCase());\n}\nfunction isNumeric(subject) {\n  return !Array.isArray(subject) && !isNaN(subject);\n}\nfunction kebabCase2(subject) {\n  if ([\" \", \"_\"].includes(\n    subject\n  ))\n    return subject;\n  return subject.replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[_\\s]/, \"-\").toLowerCase();\n}\nfunction isKeyEvent(event) {\n  return [\"keydown\", \"keyup\"].includes(event);\n}\nfunction isClickEvent(event) {\n  return [\"contextmenu\", \"click\", \"mouse\"].some((i) => event.includes(i));\n}\nfunction isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {\n  let keyModifiers = modifiers.filter((i) => {\n    return ![\"window\", \"document\", \"prevent\", \"stop\", \"once\", \"capture\", \"self\", \"away\", \"outside\", \"passive\"].includes(i);\n  });\n  if (keyModifiers.includes(\"debounce\")) {\n    let debounceIndex = keyModifiers.indexOf(\"debounce\");\n    keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || \"invalid-wait\").split(\"ms\")[0]) ? 2 : 1);\n  }\n  if (keyModifiers.includes(\"throttle\")) {\n    let debounceIndex = keyModifiers.indexOf(\"throttle\");\n    keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || \"invalid-wait\").split(\"ms\")[0]) ? 2 : 1);\n  }\n  if (keyModifiers.length === 0)\n    return false;\n  if (keyModifiers.length === 1 && keyToModifiers(e.key).includes(keyModifiers[0]))\n    return false;\n  const systemKeyModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\", \"cmd\", \"super\"];\n  const selectedSystemKeyModifiers = systemKeyModifiers.filter((modifier) => keyModifiers.includes(modifier));\n  keyModifiers = keyModifiers.filter((i) => !selectedSystemKeyModifiers.includes(i));\n  if (selectedSystemKeyModifiers.length > 0) {\n    const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter((modifier) => {\n      if (modifier === \"cmd\" || modifier === \"super\")\n        modifier = \"meta\";\n      return e[`${modifier}Key`];\n    });\n    if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {\n      if (isClickEvent(e.type))\n        return false;\n      if (keyToModifiers(e.key).includes(keyModifiers[0]))\n        return false;\n    }\n  }\n  return true;\n}\nfunction keyToModifiers(key) {\n  if (!key)\n    return [];\n  key = kebabCase2(key);\n  let modifierToKeyMap = {\n    \"ctrl\": \"control\",\n    \"slash\": \"/\",\n    \"space\": \" \",\n    \"spacebar\": \" \",\n    \"cmd\": \"meta\",\n    \"esc\": \"escape\",\n    \"up\": \"arrow-up\",\n    \"down\": \"arrow-down\",\n    \"left\": \"arrow-left\",\n    \"right\": \"arrow-right\",\n    \"period\": \".\",\n    \"comma\": \",\",\n    \"equal\": \"=\",\n    \"minus\": \"-\",\n    \"underscore\": \"_\"\n  };\n  modifierToKeyMap[key] = key;\n  return Object.keys(modifierToKeyMap).map((modifier) => {\n    if (modifierToKeyMap[modifier] === key)\n      return modifier;\n  }).filter((modifier) => modifier);\n}\n\n// packages/alpinejs/src/directives/x-model.js\ndirective(\"model\", (el, { modifiers, expression }, { effect: effect3, cleanup: cleanup2 }) => {\n  let scopeTarget = el;\n  if (modifiers.includes(\"parent\")) {\n    scopeTarget = el.parentNode;\n  }\n  let evaluateGet = evaluateLater(scopeTarget, expression);\n  let evaluateSet;\n  if (typeof expression === \"string\") {\n    evaluateSet = evaluateLater(scopeTarget, `${expression} = __placeholder`);\n  } else if (typeof expression === \"function\" && typeof expression() === \"string\") {\n    evaluateSet = evaluateLater(scopeTarget, `${expression()} = __placeholder`);\n  } else {\n    evaluateSet = () => {\n    };\n  }\n  let getValue = () => {\n    let result;\n    evaluateGet((value) => result = value);\n    return isGetterSetter(result) ? result.get() : result;\n  };\n  let setValue = (value) => {\n    let result;\n    evaluateGet((value2) => result = value2);\n    if (isGetterSetter(result)) {\n      result.set(value);\n    } else {\n      evaluateSet(() => {\n      }, {\n        scope: { \"__placeholder\": value }\n      });\n    }\n  };\n  if (typeof expression === \"string\" && el.type === \"radio\") {\n    mutateDom(() => {\n      if (!el.hasAttribute(\"name\"))\n        el.setAttribute(\"name\", expression);\n    });\n  }\n  var event = el.tagName.toLowerCase() === \"select\" || [\"checkbox\", \"radio\"].includes(el.type) || modifiers.includes(\"lazy\") ? \"change\" : \"input\";\n  let removeListener = isCloning ? () => {\n  } : on(el, event, modifiers, (e) => {\n    setValue(getInputValue(el, modifiers, e, getValue()));\n  });\n  if (modifiers.includes(\"fill\")) {\n    if ([void 0, null, \"\"].includes(getValue()) || isCheckbox(el) && Array.isArray(getValue()) || el.tagName.toLowerCase() === \"select\" && el.multiple) {\n      setValue(\n        getInputValue(el, modifiers, { target: el }, getValue())\n      );\n    }\n  }\n  if (!el._x_removeModelListeners)\n    el._x_removeModelListeners = {};\n  el._x_removeModelListeners[\"default\"] = removeListener;\n  cleanup2(() => el._x_removeModelListeners[\"default\"]());\n  if (el.form) {\n    let removeResetListener = on(el.form, \"reset\", [], (e) => {\n      nextTick(() => el._x_model && el._x_model.set(getInputValue(el, modifiers, { target: el }, getValue())));\n    });\n    cleanup2(() => removeResetListener());\n  }\n  el._x_model = {\n    get() {\n      return getValue();\n    },\n    set(value) {\n      setValue(value);\n    }\n  };\n  el._x_forceModelUpdate = (value) => {\n    if (value === void 0 && typeof expression === \"string\" && expression.match(/\\./))\n      value = \"\";\n    window.fromModel = true;\n    mutateDom(() => bind(el, \"value\", value));\n    delete window.fromModel;\n  };\n  effect3(() => {\n    let value = getValue();\n    if (modifiers.includes(\"unintrusive\") && document.activeElement.isSameNode(el))\n      return;\n    el._x_forceModelUpdate(value);\n  });\n});\nfunction getInputValue(el, modifiers, event, currentValue) {\n  return mutateDom(() => {\n    if (event instanceof CustomEvent && event.detail !== void 0)\n      return event.detail !== null && event.detail !== void 0 ? event.detail : event.target.value;\n    else if (isCheckbox(el)) {\n      if (Array.isArray(currentValue)) {\n        let newValue = null;\n        if (modifiers.includes(\"number\")) {\n          newValue = safeParseNumber(event.target.value);\n        } else if (modifiers.includes(\"boolean\")) {\n          newValue = safeParseBoolean(event.target.value);\n        } else {\n          newValue = event.target.value;\n        }\n        return event.target.checked ? currentValue.includes(newValue) ? currentValue : currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));\n      } else {\n        return event.target.checked;\n      }\n    } else if (el.tagName.toLowerCase() === \"select\" && el.multiple) {\n      if (modifiers.includes(\"number\")) {\n        return Array.from(event.target.selectedOptions).map((option) => {\n          let rawValue = option.value || option.text;\n          return safeParseNumber(rawValue);\n        });\n      } else if (modifiers.includes(\"boolean\")) {\n        return Array.from(event.target.selectedOptions).map((option) => {\n          let rawValue = option.value || option.text;\n          return safeParseBoolean(rawValue);\n        });\n      }\n      return Array.from(event.target.selectedOptions).map((option) => {\n        return option.value || option.text;\n      });\n    } else {\n      let newValue;\n      if (isRadio(el)) {\n        if (event.target.checked) {\n          newValue = event.target.value;\n        } else {\n          newValue = currentValue;\n        }\n      } else {\n        newValue = event.target.value;\n      }\n      if (modifiers.includes(\"number\")) {\n        return safeParseNumber(newValue);\n      } else if (modifiers.includes(\"boolean\")) {\n        return safeParseBoolean(newValue);\n      } else if (modifiers.includes(\"trim\")) {\n        return newValue.trim();\n      } else {\n        return newValue;\n      }\n    }\n  });\n}\nfunction safeParseNumber(rawValue) {\n  let number = rawValue ? parseFloat(rawValue) : null;\n  return isNumeric2(number) ? number : rawValue;\n}\nfunction checkedAttrLooseCompare2(valueA, valueB) {\n  return valueA == valueB;\n}\nfunction isNumeric2(subject) {\n  return !Array.isArray(subject) && !isNaN(subject);\n}\nfunction isGetterSetter(value) {\n  return value !== null && typeof value === \"object\" && typeof value.get === \"function\" && typeof value.set === \"function\";\n}\n\n// packages/alpinejs/src/directives/x-cloak.js\ndirective(\"cloak\", (el) => queueMicrotask(() => mutateDom(() => el.removeAttribute(prefix(\"cloak\")))));\n\n// packages/alpinejs/src/directives/x-init.js\naddInitSelector(() => `[${prefix(\"init\")}]`);\ndirective(\"init\", skipDuringClone((el, { expression }, { evaluate: evaluate2 }) => {\n  if (typeof expression === \"string\") {\n    return !!expression.trim() && evaluate2(expression, {}, false);\n  }\n  return evaluate2(expression, {}, false);\n}));\n\n// packages/alpinejs/src/directives/x-text.js\ndirective(\"text\", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {\n  let evaluate2 = evaluateLater2(expression);\n  effect3(() => {\n    evaluate2((value) => {\n      mutateDom(() => {\n        el.textContent = value;\n      });\n    });\n  });\n});\n\n// packages/alpinejs/src/directives/x-html.js\ndirective(\"html\", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {\n  let evaluate2 = evaluateLater2(expression);\n  effect3(() => {\n    evaluate2((value) => {\n      mutateDom(() => {\n        el.innerHTML = value;\n        el._x_ignoreSelf = true;\n        initTree(el);\n        delete el._x_ignoreSelf;\n      });\n    });\n  });\n});\n\n// packages/alpinejs/src/directives/x-bind.js\nmapAttributes(startingWith(\":\", into(prefix(\"bind:\"))));\nvar handler2 = (el, { value, modifiers, expression, original }, { effect: effect3, cleanup: cleanup2 }) => {\n  if (!value) {\n    let bindingProviders = {};\n    injectBindingProviders(bindingProviders);\n    let getBindings = evaluateLater(el, expression);\n    getBindings((bindings) => {\n      applyBindingsObject(el, bindings, original);\n    }, { scope: bindingProviders });\n    return;\n  }\n  if (value === \"key\")\n    return storeKeyForXFor(el, expression);\n  if (el._x_inlineBindings && el._x_inlineBindings[value] && el._x_inlineBindings[value].extract) {\n    return;\n  }\n  let evaluate2 = evaluateLater(el, expression);\n  effect3(() => evaluate2((result) => {\n    if (result === void 0 && typeof expression === \"string\" && expression.match(/\\./)) {\n      result = \"\";\n    }\n    mutateDom(() => bind(el, value, result, modifiers));\n  }));\n  cleanup2(() => {\n    el._x_undoAddedClasses && el._x_undoAddedClasses();\n    el._x_undoAddedStyles && el._x_undoAddedStyles();\n  });\n};\nhandler2.inline = (el, { value, modifiers, expression }) => {\n  if (!value)\n    return;\n  if (!el._x_inlineBindings)\n    el._x_inlineBindings = {};\n  el._x_inlineBindings[value] = { expression, extract: false };\n};\ndirective(\"bind\", handler2);\nfunction storeKeyForXFor(el, expression) {\n  el._x_keyExpression = expression;\n}\n\n// packages/alpinejs/src/directives/x-data.js\naddRootSelector(() => `[${prefix(\"data\")}]`);\ndirective(\"data\", (el, { expression }, { cleanup: cleanup2 }) => {\n  if (shouldSkipRegisteringDataDuringClone(el))\n    return;\n  expression = expression === \"\" ? \"{}\" : expression;\n  let magicContext = {};\n  injectMagics(magicContext, el);\n  let dataProviderContext = {};\n  injectDataProviders(dataProviderContext, magicContext);\n  let data2 = evaluate(el, expression, { scope: dataProviderContext });\n  if (data2 === void 0 || data2 === true)\n    data2 = {};\n  injectMagics(data2, el);\n  let reactiveData = reactive(data2);\n  initInterceptors(reactiveData);\n  let undo = addScopeToNode(el, reactiveData);\n  reactiveData[\"init\"] && evaluate(el, reactiveData[\"init\"]);\n  cleanup2(() => {\n    reactiveData[\"destroy\"] && evaluate(el, reactiveData[\"destroy\"]);\n    undo();\n  });\n});\ninterceptClone((from, to) => {\n  if (from._x_dataStack) {\n    to._x_dataStack = from._x_dataStack;\n    to.setAttribute(\"data-has-alpine-state\", true);\n  }\n});\nfunction shouldSkipRegisteringDataDuringClone(el) {\n  if (!isCloning)\n    return false;\n  if (isCloningLegacy)\n    return true;\n  return el.hasAttribute(\"data-has-alpine-state\");\n}\n\n// packages/alpinejs/src/directives/x-show.js\ndirective(\"show\", (el, { modifiers, expression }, { effect: effect3 }) => {\n  let evaluate2 = evaluateLater(el, expression);\n  if (!el._x_doHide)\n    el._x_doHide = () => {\n      mutateDom(() => {\n        el.style.setProperty(\"display\", \"none\", modifiers.includes(\"important\") ? \"important\" : void 0);\n      });\n    };\n  if (!el._x_doShow)\n    el._x_doShow = () => {\n      mutateDom(() => {\n        if (el.style.length === 1 && el.style.display === \"none\") {\n          el.removeAttribute(\"style\");\n        } else {\n          el.style.removeProperty(\"display\");\n        }\n      });\n    };\n  let hide = () => {\n    el._x_doHide();\n    el._x_isShown = false;\n  };\n  let show = () => {\n    el._x_doShow();\n    el._x_isShown = true;\n  };\n  let clickAwayCompatibleShow = () => setTimeout(show);\n  let toggle = once(\n    (value) => value ? show() : hide(),\n    (value) => {\n      if (typeof el._x_toggleAndCascadeWithTransitions === \"function\") {\n        el._x_toggleAndCascadeWithTransitions(el, value, show, hide);\n      } else {\n        value ? clickAwayCompatibleShow() : hide();\n      }\n    }\n  );\n  let oldValue;\n  let firstTime = true;\n  effect3(() => evaluate2((value) => {\n    if (!firstTime && value === oldValue)\n      return;\n    if (modifiers.includes(\"immediate\"))\n      value ? clickAwayCompatibleShow() : hide();\n    toggle(value);\n    oldValue = value;\n    firstTime = false;\n  }));\n});\n\n// packages/alpinejs/src/directives/x-for.js\ndirective(\"for\", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {\n  let iteratorNames = parseForExpression(expression);\n  let evaluateItems = evaluateLater(el, iteratorNames.items);\n  let evaluateKey = evaluateLater(\n    el,\n    // the x-bind:key expression is stored for our use instead of evaluated.\n    el._x_keyExpression || \"index\"\n  );\n  el._x_prevKeys = [];\n  el._x_lookup = {};\n  effect3(() => loop(el, iteratorNames, evaluateItems, evaluateKey));\n  cleanup2(() => {\n    Object.values(el._x_lookup).forEach((el2) => mutateDom(\n      () => {\n        destroyTree(el2);\n        el2.remove();\n      }\n    ));\n    delete el._x_prevKeys;\n    delete el._x_lookup;\n  });\n});\nfunction loop(el, iteratorNames, evaluateItems, evaluateKey) {\n  let isObject2 = (i) => typeof i === \"object\" && !Array.isArray(i);\n  let templateEl = el;\n  evaluateItems((items) => {\n    if (isNumeric3(items) && items >= 0) {\n      items = Array.from(Array(items).keys(), (i) => i + 1);\n    }\n    if (items === void 0)\n      items = [];\n    let lookup = el._x_lookup;\n    let prevKeys = el._x_prevKeys;\n    let scopes = [];\n    let keys = [];\n    if (isObject2(items)) {\n      items = Object.entries(items).map(([key, value]) => {\n        let scope2 = getIterationScopeVariables(iteratorNames, value, key, items);\n        evaluateKey((value2) => {\n          if (keys.includes(value2))\n            warn(\"Duplicate key on x-for\", el);\n          keys.push(value2);\n        }, { scope: { index: key, ...scope2 } });\n        scopes.push(scope2);\n      });\n    } else {\n      for (let i = 0; i < items.length; i++) {\n        let scope2 = getIterationScopeVariables(iteratorNames, items[i], i, items);\n        evaluateKey((value) => {\n          if (keys.includes(value))\n            warn(\"Duplicate key on x-for\", el);\n          keys.push(value);\n        }, { scope: { index: i, ...scope2 } });\n        scopes.push(scope2);\n      }\n    }\n    let adds = [];\n    let moves = [];\n    let removes = [];\n    let sames = [];\n    for (let i = 0; i < prevKeys.length; i++) {\n      let key = prevKeys[i];\n      if (keys.indexOf(key) === -1)\n        removes.push(key);\n    }\n    prevKeys = prevKeys.filter((key) => !removes.includes(key));\n    let lastKey = \"template\";\n    for (let i = 0; i < keys.length; i++) {\n      let key = keys[i];\n      let prevIndex = prevKeys.indexOf(key);\n      if (prevIndex === -1) {\n        prevKeys.splice(i, 0, key);\n        adds.push([lastKey, i]);\n      } else if (prevIndex !== i) {\n        let keyInSpot = prevKeys.splice(i, 1)[0];\n        let keyForSpot = prevKeys.splice(prevIndex - 1, 1)[0];\n        prevKeys.splice(i, 0, keyForSpot);\n        prevKeys.splice(prevIndex, 0, keyInSpot);\n        moves.push([keyInSpot, keyForSpot]);\n      } else {\n        sames.push(key);\n      }\n      lastKey = key;\n    }\n    for (let i = 0; i < removes.length; i++) {\n      let key = removes[i];\n      if (!(key in lookup))\n        continue;\n      mutateDom(() => {\n        destroyTree(lookup[key]);\n        lookup[key].remove();\n      });\n      delete lookup[key];\n    }\n    for (let i = 0; i < moves.length; i++) {\n      let [keyInSpot, keyForSpot] = moves[i];\n      let elInSpot = lookup[keyInSpot];\n      let elForSpot = lookup[keyForSpot];\n      let marker = document.createElement(\"div\");\n      mutateDom(() => {\n        if (!elForSpot)\n          warn(`x-for \":key\" is undefined or invalid`, templateEl, keyForSpot, lookup);\n        elForSpot.after(marker);\n        elInSpot.after(elForSpot);\n        elForSpot._x_currentIfEl && elForSpot.after(elForSpot._x_currentIfEl);\n        marker.before(elInSpot);\n        elInSpot._x_currentIfEl && elInSpot.after(elInSpot._x_currentIfEl);\n        marker.remove();\n      });\n      elForSpot._x_refreshXForScope(scopes[keys.indexOf(keyForSpot)]);\n    }\n    for (let i = 0; i < adds.length; i++) {\n      let [lastKey2, index] = adds[i];\n      let lastEl = lastKey2 === \"template\" ? templateEl : lookup[lastKey2];\n      if (lastEl._x_currentIfEl)\n        lastEl = lastEl._x_currentIfEl;\n      let scope2 = scopes[index];\n      let key = keys[index];\n      let clone2 = document.importNode(templateEl.content, true).firstElementChild;\n      let reactiveScope = reactive(scope2);\n      addScopeToNode(clone2, reactiveScope, templateEl);\n      clone2._x_refreshXForScope = (newScope) => {\n        Object.entries(newScope).forEach(([key2, value]) => {\n          reactiveScope[key2] = value;\n        });\n      };\n      mutateDom(() => {\n        lastEl.after(clone2);\n        skipDuringClone(() => initTree(clone2))();\n      });\n      if (typeof key === \"object\") {\n        warn(\"x-for key cannot be an object, it must be a string or an integer\", templateEl);\n      }\n      lookup[key] = clone2;\n    }\n    for (let i = 0; i < sames.length; i++) {\n      lookup[sames[i]]._x_refreshXForScope(scopes[keys.indexOf(sames[i])]);\n    }\n    templateEl._x_prevKeys = keys;\n  });\n}\nfunction parseForExpression(expression) {\n  let forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\n  let stripParensRE = /^\\s*\\(|\\)\\s*$/g;\n  let forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\n  let inMatch = expression.match(forAliasRE);\n  if (!inMatch)\n    return;\n  let res = {};\n  res.items = inMatch[2].trim();\n  let item = inMatch[1].replace(stripParensRE, \"\").trim();\n  let iteratorMatch = item.match(forIteratorRE);\n  if (iteratorMatch) {\n    res.item = item.replace(forIteratorRE, \"\").trim();\n    res.index = iteratorMatch[1].trim();\n    if (iteratorMatch[2]) {\n      res.collection = iteratorMatch[2].trim();\n    }\n  } else {\n    res.item = item;\n  }\n  return res;\n}\nfunction getIterationScopeVariables(iteratorNames, item, index, items) {\n  let scopeVariables = {};\n  if (/^\\[.*\\]$/.test(iteratorNames.item) && Array.isArray(item)) {\n    let names = iteratorNames.item.replace(\"[\", \"\").replace(\"]\", \"\").split(\",\").map((i) => i.trim());\n    names.forEach((name, i) => {\n      scopeVariables[name] = item[i];\n    });\n  } else if (/^\\{.*\\}$/.test(iteratorNames.item) && !Array.isArray(item) && typeof item === \"object\") {\n    let names = iteratorNames.item.replace(\"{\", \"\").replace(\"}\", \"\").split(\",\").map((i) => i.trim());\n    names.forEach((name) => {\n      scopeVariables[name] = item[name];\n    });\n  } else {\n    scopeVariables[iteratorNames.item] = item;\n  }\n  if (iteratorNames.index)\n    scopeVariables[iteratorNames.index] = index;\n  if (iteratorNames.collection)\n    scopeVariables[iteratorNames.collection] = items;\n  return scopeVariables;\n}\nfunction isNumeric3(subject) {\n  return !Array.isArray(subject) && !isNaN(subject);\n}\n\n// packages/alpinejs/src/directives/x-ref.js\nfunction handler3() {\n}\nhandler3.inline = (el, { expression }, { cleanup: cleanup2 }) => {\n  let root = closestRoot(el);\n  if (!root._x_refs)\n    root._x_refs = {};\n  root._x_refs[expression] = el;\n  cleanup2(() => delete root._x_refs[expression]);\n};\ndirective(\"ref\", handler3);\n\n// packages/alpinejs/src/directives/x-if.js\ndirective(\"if\", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {\n  if (el.tagName.toLowerCase() !== \"template\")\n    warn(\"x-if can only be used on a <template> tag\", el);\n  let evaluate2 = evaluateLater(el, expression);\n  let show = () => {\n    if (el._x_currentIfEl)\n      return el._x_currentIfEl;\n    let clone2 = el.content.cloneNode(true).firstElementChild;\n    addScopeToNode(clone2, {}, el);\n    mutateDom(() => {\n      el.after(clone2);\n      skipDuringClone(() => initTree(clone2))();\n    });\n    el._x_currentIfEl = clone2;\n    el._x_undoIf = () => {\n      mutateDom(() => {\n        destroyTree(clone2);\n        clone2.remove();\n      });\n      delete el._x_currentIfEl;\n    };\n    return clone2;\n  };\n  let hide = () => {\n    if (!el._x_undoIf)\n      return;\n    el._x_undoIf();\n    delete el._x_undoIf;\n  };\n  effect3(() => evaluate2((value) => {\n    value ? show() : hide();\n  }));\n  cleanup2(() => el._x_undoIf && el._x_undoIf());\n});\n\n// packages/alpinejs/src/directives/x-id.js\ndirective(\"id\", (el, { expression }, { evaluate: evaluate2 }) => {\n  let names = evaluate2(expression);\n  names.forEach((name) => setIdRoot(el, name));\n});\ninterceptClone((from, to) => {\n  if (from._x_ids) {\n    to._x_ids = from._x_ids;\n  }\n});\n\n// packages/alpinejs/src/directives/x-on.js\nmapAttributes(startingWith(\"@\", into(prefix(\"on:\"))));\ndirective(\"on\", skipDuringClone((el, { value, modifiers, expression }, { cleanup: cleanup2 }) => {\n  let evaluate2 = expression ? evaluateLater(el, expression) : () => {\n  };\n  if (el.tagName.toLowerCase() === \"template\") {\n    if (!el._x_forwardEvents)\n      el._x_forwardEvents = [];\n    if (!el._x_forwardEvents.includes(value))\n      el._x_forwardEvents.push(value);\n  }\n  let removeListener = on(el, value, modifiers, (e) => {\n    evaluate2(() => {\n    }, { scope: { \"$event\": e }, params: [e] });\n  });\n  cleanup2(() => removeListener());\n}));\n\n// packages/alpinejs/src/directives/index.js\nwarnMissingPluginDirective(\"Collapse\", \"collapse\", \"collapse\");\nwarnMissingPluginDirective(\"Intersect\", \"intersect\", \"intersect\");\nwarnMissingPluginDirective(\"Focus\", \"trap\", \"focus\");\nwarnMissingPluginDirective(\"Mask\", \"mask\", \"mask\");\nfunction warnMissingPluginDirective(name, directiveName, slug) {\n  directive(directiveName, (el) => warn(`You can't use [x-${directiveName}] without first installing the \"${name}\" plugin here: https://alpinejs.dev/plugins/${slug}`, el));\n}\n\n// packages/alpinejs/src/index.js\nalpine_default.setEvaluator(normalEvaluator);\nalpine_default.setReactivityEngine({ reactive: reactive2, effect: effect2, release: stop, raw: toRaw });\nvar src_default = alpine_default;\n\n// packages/alpinejs/builds/module.js\nvar module_default = src_default;\nexport {\n  src_default as Alpine,\n  module_default as default\n};\n", "/*!\n * ApexCharts v4.5.0\n * (c) 2018-2025 ApexCharts\n * Released under the MIT License.\n */\nfunction t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=Array(e);i<e;i++)a[i]=t[i];return a}function e(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function a(t,e){for(var i=0;i<e.length;i++){var a=e[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(t,x(a.key),a)}}function s(t,e,i){return e&&a(t.prototype,e),i&&a(t,i),Object.defineProperty(t,\"prototype\",{writable:!1}),t}function r(t,e){var i=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!i){if(Array.isArray(t)||(i=m(t))||e&&t&&\"number\"==typeof t.length){i&&(t=i);var a=0,s=function(){};return{s:s,n:function(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function(t){throw t},f:s}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var r,n=!0,o=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return n=t.done,t},e:function(t){o=!0,r=t},f:function(){try{n||null==i.return||i.return()}finally{if(o)throw r}}}}function n(t){var i=c();return function(){var a,s=l(t);if(i){var r=l(this).constructor;a=Reflect.construct(s,arguments,r)}else a=s.apply(this,arguments);return function(t,i){if(i&&(\"object\"==typeof i||\"function\"==typeof i))return i;if(void 0!==i)throw new TypeError(\"Derived constructors may only return object or undefined\");return e(t)}(this,a)}}function o(t,e,i){return(e=x(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function h(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&g(t,e)}function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}function d(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function u(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?d(Object(i),!0).forEach((function(e){o(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):d(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function g(t,e){return g=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},g(t,e)}function p(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=i){var a,s,r,n,o=[],l=!0,h=!1;try{if(r=(i=i.call(t)).next,0===e){if(Object(i)!==i)return;l=!1}else for(;!(l=(a=r.call(i)).done)&&(o.push(a.value),o.length!==e);l=!0);}catch(t){h=!0,s=t}finally{try{if(!l&&null!=i.return&&(n=i.return(),Object(n)!==n))return}finally{if(h)throw s}}return o}}(t,e)||m(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function f(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(e)||m(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function x(t){var e=function(t,e){if(\"object\"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var a=i.call(t,e||\"default\");if(\"object\"!=typeof a)return a;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===e?String:Number)(t)}(t,\"string\");return\"symbol\"==typeof e?e:e+\"\"}function b(t){return b=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},b(t)}function m(e,i){if(e){if(\"string\"==typeof e)return t(e,i);var a={}.toString.call(e).slice(8,-1);return\"Object\"===a&&e.constructor&&(a=e.constructor.name),\"Map\"===a||\"Set\"===a?Array.from(e):\"Arguments\"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?t(e,i):void 0}}var v=function(){function t(){i(this,t)}return s(t,[{key:\"shadeRGBColor\",value:function(t,e){var i=e.split(\",\"),a=t<0?0:255,s=t<0?-1*t:t,r=parseInt(i[0].slice(4),10),n=parseInt(i[1],10),o=parseInt(i[2],10);return\"rgb(\"+(Math.round((a-r)*s)+r)+\",\"+(Math.round((a-n)*s)+n)+\",\"+(Math.round((a-o)*s)+o)+\")\"}},{key:\"shadeHexColor\",value:function(t,e){var i=parseInt(e.slice(1),16),a=t<0?0:255,s=t<0?-1*t:t,r=i>>16,n=i>>8&255,o=255&i;return\"#\"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-n)*s)+n)+(Math.round((a-o)*s)+o)).toString(16).slice(1)}},{key:\"shadeColor\",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}],[{key:\"bind\",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:\"isObject\",value:function(t){return t&&\"object\"===b(t)&&!Array.isArray(t)&&null!=t}},{key:\"is\",value:function(t,e){return Object.prototype.toString.call(e)===\"[object \"+t+\"]\"}},{key:\"listToArray\",value:function(t){var e,i=[];for(e=0;e<t.length;e++)i[e]=t[e];return i}},{key:\"extend\",value:function(t,e){var i=this;\"function\"!=typeof Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),i=1;i<arguments.length;i++){var a=arguments[i];if(null!=a)for(var s in a)a.hasOwnProperty(s)&&(e[s]=a[s])}return e});var a=Object.assign({},t);return this.isObject(t)&&this.isObject(e)&&Object.keys(e).forEach((function(s){i.isObject(e[s])&&s in t?a[s]=i.extend(t[s],e[s]):Object.assign(a,o({},s,e[s]))})),a}},{key:\"extendArray\",value:function(e,i){var a=[];return e.map((function(e){a.push(t.extend(i,e))})),e=a}},{key:\"monthMod\",value:function(t){return t%12}},{key:\"clone\",value:function(t){var e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if(null===t||\"object\"!==b(t))return t;if(i.has(t))return i.get(t);if(Array.isArray(t)){e=[],i.set(t,e);for(var a=0;a<t.length;a++)e[a]=this.clone(t[a],i)}else if(t instanceof Date)e=new Date(t.getTime());else for(var s in e={},i.set(t,e),t)t.hasOwnProperty(s)&&(e[s]=this.clone(t[s],i));return e}},{key:\"log10\",value:function(t){return Math.log(t)/Math.LN10}},{key:\"roundToBase10\",value:function(t){return Math.pow(10,Math.floor(Math.log10(t)))}},{key:\"roundToBase\",value:function(t,e){return Math.pow(e,Math.floor(Math.log(t)/Math.log(e)))}},{key:\"parseNumber\",value:function(t){return null===t?t:parseFloat(t)}},{key:\"stripNumber\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return Number.isInteger(t)?t:parseFloat(t.toPrecision(e))}},{key:\"randomId\",value:function(){return(Math.random()+1).toString(36).substring(4)}},{key:\"noExponents\",value:function(t){return t.toString().includes(\"e\")?Math.round(t):t}},{key:\"elementExists\",value:function(t){return!(!t||!t.isConnected)}},{key:\"getDimensions\",value:function(t){var e=getComputedStyle(t,null),i=t.clientHeight,a=t.clientWidth;return i-=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),[a-=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),i]}},{key:\"getBoundingClientRect\",value:function(t){var e=t.getBoundingClientRect();return{top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:t.clientWidth,height:t.clientHeight,x:e.left,y:e.top}}},{key:\"getLargestStringFromArr\",value:function(t){return t.reduce((function(t,e){return Array.isArray(e)&&(e=e.reduce((function(t,e){return t.length>e.length?t:e}))),t.length>e.length?t:e}),0)}},{key:\"hexToRgba\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"#999999\",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;\"#\"!==t.substring(0,1)&&(t=\"#999999\");var i=t.replace(\"#\",\"\");i=i.match(new RegExp(\"(.{\"+i.length/3+\"})\",\"g\"));for(var a=0;a<i.length;a++)i[a]=parseInt(1===i[a].length?i[a]+i[a]:i[a],16);return void 0!==e&&i.push(e),\"rgba(\"+i.join(\",\")+\")\"}},{key:\"getOpacityFromRGBA\",value:function(t){return parseFloat(t.replace(/^.*,(.+)\\)/,\"$1\"))}},{key:\"rgb2hex\",value:function(t){return(t=t.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i))&&4===t.length?\"#\"+(\"0\"+parseInt(t[1],10).toString(16)).slice(-2)+(\"0\"+parseInt(t[2],10).toString(16)).slice(-2)+(\"0\"+parseInt(t[3],10).toString(16)).slice(-2):\"\"}},{key:\"isColorHex\",value:function(t){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)|(^#[0-9A-F]{8}$)/i.test(t)}},{key:\"getPolygonPos\",value:function(t,e){for(var i=[],a=2*Math.PI/e,s=0;s<e;s++){var r={};r.x=t*Math.sin(s*a),r.y=-t*Math.cos(s*a),i.push(r)}return i}},{key:\"polarToCartesian\",value:function(t,e,i,a){var s=(a-90)*Math.PI/180;return{x:t+i*Math.cos(s),y:e+i*Math.sin(s)}}},{key:\"escapeString\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"x\",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\\=?;:'\",.<>{}[\\]\\\\/]/gi,e)}},{key:\"negToZero\",value:function(t){return t<0?0:t}},{key:\"moveIndexInArray\",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:\"extractNumber\",value:function(t){return parseFloat(t.replace(/[^\\d.]*/g,\"\"))}},{key:\"findAncestor\",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:\"setELstyles\",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:\"preciseAddition\",value:function(t,e){var i=(String(t).split(\".\")[1]||\"\").length,a=(String(e).split(\".\")[1]||\"\").length,s=Math.pow(10,Math.max(i,a));return(Math.round(t*s)+Math.round(e*s))/s}},{key:\"isNumber\",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:\"isFloat\",value:function(t){return Number(t)===t&&t%1!=0}},{key:\"isMsEdge\",value:function(){var t=window.navigator.userAgent,e=t.indexOf(\"Edge/\");return e>0&&parseInt(t.substring(e+5,t.indexOf(\".\",e)),10)}},{key:\"getGCD\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));for(t=Math.round(Math.abs(t)*a),e=Math.round(Math.abs(e)*a);e;){var s=e;e=t%e,t=s}return t/a}},{key:\"getPrimeFactors\",value:function(t){for(var e=[],i=2;t>=2;)t%i==0?(e.push(i),t/=i):i++;return e}},{key:\"mod\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));return(t=Math.round(Math.abs(t)*a))%(e=Math.round(Math.abs(e)*a))/a}}]),t}(),y=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"animateLine\",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:\"animateMarker\",value:function(t,e,i,a){t.attr({opacity:0}).animate(e).attr({opacity:1}).after((function(){a()}))}},{key:\"animateRect\",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).after((function(){return s()}))}},{key:\"animatePathsGradually\",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,n=t.pathTo,o=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&\"bar\"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,\"line\"!==h.config.chart.type||h.globals.comboCharts?s:\"stroke\",r,n,o,l*c)}},{key:\"showDelayedElements\",value:function(){this.w.globals.delayedElements.forEach((function(t){var e=t.el;e.classList.remove(\"apexcharts-element-hidden\"),e.classList.add(\"apexcharts-hidden-element-shown\")}))}},{key:\"animationCompleted\",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),\"function\"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:\"morphSVG\",value:function(t,e,i,a,s,r,n,o){var l=this,h=this.w;s||(s=t.attr(\"pathFrom\")),r||(r=t.attr(\"pathTo\"));var c=function(t){return\"radar\"===h.config.chart.type&&(n=1),\"M 0 \".concat(h.globals.gridHeight)};(!s||s.indexOf(\"undefined\")>-1||s.indexOf(\"NaN\")>-1)&&(s=c()),(!r.trim()||r.indexOf(\"undefined\")>-1||r.indexOf(\"NaN\")>-1)&&(r=c()),h.globals.shouldAnimate||(n=1),t.plot(s).animate(1,o).plot(s).animate(n,o).plot(r).after((function(){v.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):\"none\"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}();const w={},k=[];function A(t,e){if(Array.isArray(t))for(const i of t)A(i,e);else if(\"object\"!=typeof t)S(Object.getOwnPropertyNames(e)),w[t]=Object.assign(w[t]||{},e);else for(const e in t)A(e,t[e])}function C(t){return w[t]||{}}function S(t){k.push(...t)}function L(t,e){let i;const a=t.length,s=[];for(i=0;i<a;i++)s.push(e(t[i]));return s}function M(t){return t%360*Math.PI/180}function P(t){return t.charAt(0).toUpperCase()+t.slice(1)}function I(t,e,i,a){return null!=e&&null!=i||(a=a||t.bbox(),null==e?e=a.width/a.height*i:null==i&&(i=a.height/a.width*e)),{width:e,height:i}}function T(t,e){const i=t.origin;let a=null!=t.ox?t.ox:null!=t.originX?t.originX:\"center\",s=null!=t.oy?t.oy:null!=t.originY?t.originY:\"center\";null!=i&&([a,s]=Array.isArray(i)?i:\"object\"==typeof i?[i.x,i.y]:[i,i]);const r=\"string\"==typeof a,n=\"string\"==typeof s;if(r||n){const{height:t,width:i,x:o,y:l}=e.bbox();r&&(a=a.includes(\"left\")?o:a.includes(\"right\")?o+i:o+i/2),n&&(s=s.includes(\"top\")?l:s.includes(\"bottom\")?l+t:l+t/2)}return[a,s]}const z=new Set([\"desc\",\"metadata\",\"title\"]),X=t=>z.has(t.nodeName),R=(t,e,i={})=>{const a={...e};for(const t in a)a[t].valueOf()===i[t]&&delete a[t];Object.keys(a).length?t.node.setAttribute(\"data-svgjs\",JSON.stringify(a)):(t.node.removeAttribute(\"data-svgjs\"),t.node.removeAttribute(\"svgjs:data\"))},E=\"http://www.w3.org/2000/svg\",Y=\"http://www.w3.org/2000/xmlns/\",H=\"http://www.w3.org/1999/xlink\",O={window:\"undefined\"==typeof window?null:window,document:\"undefined\"==typeof document?null:document};function F(){return O.window}let D=class{};const _={},N=\"___SYMBOL___ROOT___\";function W(t,e=E){return O.document.createElementNS(e,t)}function B(t,e=!1){if(t instanceof D)return t;if(\"object\"==typeof t)return U(t);if(null==t)return new _[N];if(\"string\"==typeof t&&\"<\"!==t.charAt(0))return U(O.document.querySelector(t));const i=e?O.document.createElement(\"div\"):W(\"svg\");return i.innerHTML=t,t=U(i.firstChild),i.removeChild(i.firstChild),t}function G(t,e){return e&&(e instanceof O.window.Node||e.ownerDocument&&e instanceof e.ownerDocument.defaultView.Node)?e:W(t)}function V(t){if(!t)return null;if(t.instance instanceof D)return t.instance;if(\"#document-fragment\"===t.nodeName)return new _.Fragment(t);let e=P(t.nodeName||\"Dom\");return\"LinearGradient\"===e||\"RadialGradient\"===e?e=\"Gradient\":_[e]||(e=\"Dom\"),new _[e](t)}let U=V;function q(t,e=t.name,i=!1){return _[e]=t,i&&(_[N]=t),S(Object.getOwnPropertyNames(t.prototype)),t}let Z=1e3;function $(t){return\"Svgjs\"+P(t)+Z++}function J(t){for(let e=t.children.length-1;e>=0;e--)J(t.children[e]);return t.id?(t.id=$(t.nodeName),t):t}function Q(t,e){let i,a;for(a=(t=Array.isArray(t)?t:[t]).length-1;a>=0;a--)for(i in e)t[a].prototype[i]=e[i]}function K(t){return function(...e){const i=e[e.length-1];return!i||i.constructor!==Object||i instanceof Array?t.apply(this,e):t.apply(this,e.slice(0,-1)).attr(i)}}A(\"Dom\",{siblings:function(){return this.parent().children()},position:function(){return this.parent().index(this)},next:function(){return this.siblings()[this.position()+1]},prev:function(){return this.siblings()[this.position()-1]},forward:function(){const t=this.position();return this.parent().add(this.remove(),t+1),this},backward:function(){const t=this.position();return this.parent().add(this.remove(),t?t-1:0),this},front:function(){return this.parent().add(this.remove()),this},back:function(){return this.parent().add(this.remove(),0),this},before:function(t){(t=B(t)).remove();const e=this.position();return this.parent().add(t,e),this},after:function(t){(t=B(t)).remove();const e=this.position();return this.parent().add(t,e+1),this},insertBefore:function(t){return(t=B(t)).before(this),this},insertAfter:function(t){return(t=B(t)).after(this),this}});const tt=/^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i,et=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,it=/rgb\\((\\d+),(\\d+),(\\d+)\\)/,at=/(#[a-z_][a-z0-9\\-_]*)/i,st=/\\)\\s*,?\\s*/,rt=/\\s/g,nt=/^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i,ot=/^rgb\\(/,lt=/^(\\s+)?$/,ht=/^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,ct=/\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i,dt=/[\\s,]+/,ut=/[MLHVCSQTAZ]/i;function gt(t){const e=Math.round(t),i=Math.max(0,Math.min(255,e)).toString(16);return 1===i.length?\"0\"+i:i}function pt(t,e){for(let i=e.length;i--;)if(null==t[e[i]])return!1;return!0}function ft(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}A(\"Dom\",{classes:function(){const t=this.attr(\"class\");return null==t?[]:t.trim().split(dt)},hasClass:function(t){return-1!==this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){const e=this.classes();e.push(t),this.attr(\"class\",e.join(\" \"))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr(\"class\",this.classes().filter((function(e){return e!==t})).join(\" \")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)}}),A(\"Dom\",{css:function(t,e){const i={};if(0===arguments.length)return this.node.style.cssText.split(/\\s*;\\s*/).filter((function(t){return!!t.length})).forEach((function(t){const e=t.split(/\\s*:\\s*/);i[e[0]]=e[1]})),i;if(arguments.length<2){if(Array.isArray(t)){for(const e of t){const t=e;i[e]=this.node.style.getPropertyValue(t)}return i}if(\"string\"==typeof t)return this.node.style.getPropertyValue(t);if(\"object\"==typeof t)for(const e in t)this.node.style.setProperty(e,null==t[e]||lt.test(t[e])?\"\":t[e])}return 2===arguments.length&&this.node.style.setProperty(t,null==e||lt.test(e)?\"\":e),this},show:function(){return this.css(\"display\",\"\")},hide:function(){return this.css(\"display\",\"none\")},visible:function(){return\"none\"!==this.css(\"display\")}}),A(\"Dom\",{data:function(t,e,i){if(null==t)return this.data(L(function(t,e){let i;const a=t.length,s=[];for(i=0;i<a;i++)e(t[i])&&s.push(t[i]);return s}(this.node.attributes,(t=>0===t.nodeName.indexOf(\"data-\"))),(t=>t.nodeName.slice(5))));if(t instanceof Array){const e={};for(const i of t)e[i]=this.data(i);return e}if(\"object\"==typeof t)for(e in t)this.data(e,t[e]);else if(arguments.length<2)try{return JSON.parse(this.attr(\"data-\"+t))}catch(e){return this.attr(\"data-\"+t)}else this.attr(\"data-\"+t,null===e?null:!0===i||\"string\"==typeof e||\"number\"==typeof e?e:JSON.stringify(e));return this}}),A(\"Dom\",{remember:function(t,e){if(\"object\"==typeof arguments[0])for(const e in t)this.remember(e,t[e]);else{if(1===arguments.length)return this.memory()[t];this.memory()[t]=e}return this},forget:function(){if(0===arguments.length)this._memory={};else for(let t=arguments.length-1;t>=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory=this._memory||{}}});class xt{constructor(...t){this.init(...t)}static isColor(t){return t&&(t instanceof xt||this.isRgb(t)||this.test(t))}static isRgb(t){return t&&\"number\"==typeof t.r&&\"number\"==typeof t.g&&\"number\"==typeof t.b}static random(t=\"vibrant\",e){const{random:i,round:a,sin:s,PI:r}=Math;if(\"vibrant\"===t){const t=24*i()+57,e=38*i()+45,a=360*i();return new xt(t,e,a,\"lch\")}if(\"sine\"===t){const t=a(80*s(2*r*(e=null==e?i():e)/.5+.01)+150),n=a(50*s(2*r*e/.5+4.6)+200),o=a(100*s(2*r*e/.5+2.3)+150);return new xt(t,n,o)}if(\"pastel\"===t){const t=8*i()+86,e=17*i()+9,a=360*i();return new xt(t,e,a,\"lch\")}if(\"dark\"===t){const t=10+10*i(),e=50*i()+86,a=360*i();return new xt(t,e,a,\"lch\")}if(\"rgb\"===t){const t=255*i(),e=255*i(),a=255*i();return new xt(t,e,a)}if(\"lab\"===t){const t=100*i(),e=256*i()-128,a=256*i()-128;return new xt(t,e,a,\"lab\")}if(\"grey\"===t){const t=255*i();return new xt(t,t,t)}throw new Error(\"Unsupported random color mode\")}static test(t){return\"string\"==typeof t&&(nt.test(t)||ot.test(t))}cmyk(){const{_a:t,_b:e,_c:i}=this.rgb(),[a,s,r]=[t,e,i].map((t=>t/255)),n=Math.min(1-a,1-s,1-r);if(1===n)return new xt(0,0,0,1,\"cmyk\");return new xt((1-a-n)/(1-n),(1-s-n)/(1-n),(1-r-n)/(1-n),n,\"cmyk\")}hsl(){const{_a:t,_b:e,_c:i}=this.rgb(),[a,s,r]=[t,e,i].map((t=>t/255)),n=Math.max(a,s,r),o=Math.min(a,s,r),l=(n+o)/2,h=n===o,c=n-o;return new xt(360*(h?0:n===a?((s-r)/c+(s<r?6:0))/6:n===s?((r-a)/c+2)/6:n===r?((a-s)/c+4)/6:0),100*(h?0:l>.5?c/(2-n-o):c/(n+o)),100*l,\"hsl\")}init(t=0,e=0,i=0,a=0,s=\"rgb\"){if(t=t||0,this.space)for(const t in this.space)delete this[this.space[t]];if(\"number\"==typeof t)s=\"string\"==typeof a?a:s,a=\"string\"==typeof a?0:a,Object.assign(this,{_a:t,_b:e,_c:i,_d:a,space:s});else if(t instanceof Array)this.space=e||(\"string\"==typeof t[3]?t[3]:t[4])||\"rgb\",Object.assign(this,{_a:t[0],_b:t[1],_c:t[2],_d:t[3]||0});else if(t instanceof Object){const i=function(t,e){const i=pt(t,\"rgb\")?{_a:t.r,_b:t.g,_c:t.b,_d:0,space:\"rgb\"}:pt(t,\"xyz\")?{_a:t.x,_b:t.y,_c:t.z,_d:0,space:\"xyz\"}:pt(t,\"hsl\")?{_a:t.h,_b:t.s,_c:t.l,_d:0,space:\"hsl\"}:pt(t,\"lab\")?{_a:t.l,_b:t.a,_c:t.b,_d:0,space:\"lab\"}:pt(t,\"lch\")?{_a:t.l,_b:t.c,_c:t.h,_d:0,space:\"lch\"}:pt(t,\"cmyk\")?{_a:t.c,_b:t.m,_c:t.y,_d:t.k,space:\"cmyk\"}:{_a:0,_b:0,_c:0,space:\"rgb\"};return i.space=e||i.space,i}(t,e);Object.assign(this,i)}else if(\"string\"==typeof t)if(ot.test(t)){const e=t.replace(rt,\"\"),[i,a,s]=it.exec(e).slice(1,4).map((t=>parseInt(t)));Object.assign(this,{_a:i,_b:a,_c:s,_d:0,space:\"rgb\"})}else{if(!nt.test(t))throw Error(\"Unsupported string format, can't construct Color\");{const e=t=>parseInt(t,16),[,i,a,s]=et.exec(function(t){return 4===t.length?[\"#\",t.substring(1,2),t.substring(1,2),t.substring(2,3),t.substring(2,3),t.substring(3,4),t.substring(3,4)].join(\"\"):t}(t)).map(e);Object.assign(this,{_a:i,_b:a,_c:s,_d:0,space:\"rgb\"})}}const{_a:r,_b:n,_c:o,_d:l}=this,h=\"rgb\"===this.space?{r:r,g:n,b:o}:\"xyz\"===this.space?{x:r,y:n,z:o}:\"hsl\"===this.space?{h:r,s:n,l:o}:\"lab\"===this.space?{l:r,a:n,b:o}:\"lch\"===this.space?{l:r,c:n,h:o}:\"cmyk\"===this.space?{c:r,m:n,y:o,k:l}:{};Object.assign(this,h)}lab(){const{x:t,y:e,z:i}=this.xyz();return new xt(116*e-16,500*(t-e),200*(e-i),\"lab\")}lch(){const{l:t,a:e,b:i}=this.lab(),a=Math.sqrt(e**2+i**2);let s=180*Math.atan2(i,e)/Math.PI;s<0&&(s*=-1,s=360-s);return new xt(t,a,s,\"lch\")}rgb(){if(\"rgb\"===this.space)return this;if(\"lab\"===(t=this.space)||\"xyz\"===t||\"lch\"===t){let{x:t,y:e,z:i}=this;if(\"lab\"===this.space||\"lch\"===this.space){let{l:a,a:s,b:r}=this;if(\"lch\"===this.space){const{c:t,h:e}=this,i=Math.PI/180;s=t*Math.cos(i*e),r=t*Math.sin(i*e)}const n=(a+16)/116,o=s/500+n,l=n-r/200,h=16/116,c=.008856,d=7.787;t=.95047*(o**3>c?o**3:(o-h)/d),e=1*(n**3>c?n**3:(n-h)/d),i=1.08883*(l**3>c?l**3:(l-h)/d)}const a=3.2406*t+-1.5372*e+-.4986*i,s=-.9689*t+1.8758*e+.0415*i,r=.0557*t+-.204*e+1.057*i,n=Math.pow,o=.0031308,l=a>o?1.055*n(a,1/2.4)-.055:12.92*a,h=s>o?1.055*n(s,1/2.4)-.055:12.92*s,c=r>o?1.055*n(r,1/2.4)-.055:12.92*r;return new xt(255*l,255*h,255*c)}if(\"hsl\"===this.space){let{h:t,s:e,l:i}=this;if(t/=360,e/=100,i/=100,0===e){i*=255;return new xt(i,i,i)}const a=i<.5?i*(1+e):i+e-i*e,s=2*i-a,r=255*ft(s,a,t+1/3),n=255*ft(s,a,t),o=255*ft(s,a,t-1/3);return new xt(r,n,o)}if(\"cmyk\"===this.space){const{c:t,m:e,y:i,k:a}=this,s=255*(1-Math.min(1,t*(1-a)+a)),r=255*(1-Math.min(1,e*(1-a)+a)),n=255*(1-Math.min(1,i*(1-a)+a));return new xt(s,r,n)}return this;var t}toArray(){const{_a:t,_b:e,_c:i,_d:a,space:s}=this;return[t,e,i,a,s]}toHex(){const[t,e,i]=this._clamped().map(gt);return`#${t}${e}${i}`}toRgb(){const[t,e,i]=this._clamped();return`rgb(${t},${e},${i})`}toString(){return this.toHex()}xyz(){const{_a:t,_b:e,_c:i}=this.rgb(),[a,s,r]=[t,e,i].map((t=>t/255)),n=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92,o=s>.04045?Math.pow((s+.055)/1.055,2.4):s/12.92,l=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,h=(.4124*n+.3576*o+.1805*l)/.95047,c=(.2126*n+.7152*o+.0722*l)/1,d=(.0193*n+.1192*o+.9505*l)/1.08883,u=h>.008856?Math.pow(h,1/3):7.787*h+16/116,g=c>.008856?Math.pow(c,1/3):7.787*c+16/116,p=d>.008856?Math.pow(d,1/3):7.787*d+16/116;return new xt(u,g,p,\"xyz\")}_clamped(){const{_a:t,_b:e,_c:i}=this.rgb(),{max:a,min:s,round:r}=Math;return[t,e,i].map((t=>a(0,s(r(t),255))))}}class bt{constructor(...t){this.init(...t)}clone(){return new bt(this)}init(t,e){const i=0,a=0,s=Array.isArray(t)?{x:t[0],y:t[1]}:\"object\"==typeof t?{x:t.x,y:t.y}:{x:t,y:e};return this.x=null==s.x?i:s.x,this.y=null==s.y?a:s.y,this}toArray(){return[this.x,this.y]}transform(t){return this.clone().transformO(t)}transformO(t){vt.isMatrixLike(t)||(t=new vt(t));const{x:e,y:i}=this;return this.x=t.a*e+t.c*i+t.e,this.y=t.b*e+t.d*i+t.f,this}}function mt(t,e,i){return Math.abs(e-t)<(i||1e-6)}class vt{constructor(...t){this.init(...t)}static formatTransforms(t){const e=\"both\"===t.flip||!0===t.flip,i=t.flip&&(e||\"x\"===t.flip)?-1:1,a=t.flip&&(e||\"y\"===t.flip)?-1:1,s=t.skew&&t.skew.length?t.skew[0]:isFinite(t.skew)?t.skew:isFinite(t.skewX)?t.skewX:0,r=t.skew&&t.skew.length?t.skew[1]:isFinite(t.skew)?t.skew:isFinite(t.skewY)?t.skewY:0,n=t.scale&&t.scale.length?t.scale[0]*i:isFinite(t.scale)?t.scale*i:isFinite(t.scaleX)?t.scaleX*i:i,o=t.scale&&t.scale.length?t.scale[1]*a:isFinite(t.scale)?t.scale*a:isFinite(t.scaleY)?t.scaleY*a:a,l=t.shear||0,h=t.rotate||t.theta||0,c=new bt(t.origin||t.around||t.ox||t.originX,t.oy||t.originY),d=c.x,u=c.y,g=new bt(t.position||t.px||t.positionX||NaN,t.py||t.positionY||NaN),p=g.x,f=g.y,x=new bt(t.translate||t.tx||t.translateX,t.ty||t.translateY),b=x.x,m=x.y,v=new bt(t.relative||t.rx||t.relativeX,t.ry||t.relativeY);return{scaleX:n,scaleY:o,skewX:s,skewY:r,shear:l,theta:h,rx:v.x,ry:v.y,tx:b,ty:m,ox:d,oy:u,px:p,py:f}}static fromArray(t){return{a:t[0],b:t[1],c:t[2],d:t[3],e:t[4],f:t[5]}}static isMatrixLike(t){return null!=t.a||null!=t.b||null!=t.c||null!=t.d||null!=t.e||null!=t.f}static matrixMultiply(t,e,i){const a=t.a*e.a+t.c*e.b,s=t.b*e.a+t.d*e.b,r=t.a*e.c+t.c*e.d,n=t.b*e.c+t.d*e.d,o=t.e+t.a*e.e+t.c*e.f,l=t.f+t.b*e.e+t.d*e.f;return i.a=a,i.b=s,i.c=r,i.d=n,i.e=o,i.f=l,i}around(t,e,i){return this.clone().aroundO(t,e,i)}aroundO(t,e,i){const a=t||0,s=e||0;return this.translateO(-a,-s).lmultiplyO(i).translateO(a,s)}clone(){return new vt(this)}decompose(t=0,e=0){const i=this.a,a=this.b,s=this.c,r=this.d,n=this.e,o=this.f,l=i*r-a*s,h=l>0?1:-1,c=h*Math.sqrt(i*i+a*a),d=Math.atan2(h*a,h*i),u=180/Math.PI*d,g=Math.cos(d),p=Math.sin(d),f=(i*s+a*r)/l,x=s*c/(f*i-a)||r*c/(f*a+i);return{scaleX:c,scaleY:x,shear:f,rotate:u,translateX:n-t+t*g*c+e*(f*g*c-p*x),translateY:o-e+t*p*c+e*(f*p*c+g*x),originX:t,originY:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}equals(t){if(t===this)return!0;const e=new vt(t);return mt(this.a,e.a)&&mt(this.b,e.b)&&mt(this.c,e.c)&&mt(this.d,e.d)&&mt(this.e,e.e)&&mt(this.f,e.f)}flip(t,e){return this.clone().flipO(t,e)}flipO(t,e){return\"x\"===t?this.scaleO(-1,1,e,0):\"y\"===t?this.scaleO(1,-1,0,e):this.scaleO(-1,-1,t,e||t)}init(t){const e=vt.fromArray([1,0,0,1,0,0]);return t=t instanceof Gt?t.matrixify():\"string\"==typeof t?vt.fromArray(t.split(dt).map(parseFloat)):Array.isArray(t)?vt.fromArray(t):\"object\"==typeof t&&vt.isMatrixLike(t)?t:\"object\"==typeof t?(new vt).transform(t):6===arguments.length?vt.fromArray([].slice.call(arguments)):e,this.a=null!=t.a?t.a:e.a,this.b=null!=t.b?t.b:e.b,this.c=null!=t.c?t.c:e.c,this.d=null!=t.d?t.d:e.d,this.e=null!=t.e?t.e:e.e,this.f=null!=t.f?t.f:e.f,this}inverse(){return this.clone().inverseO()}inverseO(){const t=this.a,e=this.b,i=this.c,a=this.d,s=this.e,r=this.f,n=t*a-e*i;if(!n)throw new Error(\"Cannot invert \"+this);const o=a/n,l=-e/n,h=-i/n,c=t/n,d=-(o*s+h*r),u=-(l*s+c*r);return this.a=o,this.b=l,this.c=h,this.d=c,this.e=d,this.f=u,this}lmultiply(t){return this.clone().lmultiplyO(t)}lmultiplyO(t){const e=t instanceof vt?t:new vt(t);return vt.matrixMultiply(e,this,this)}multiply(t){return this.clone().multiplyO(t)}multiplyO(t){const e=t instanceof vt?t:new vt(t);return vt.matrixMultiply(this,e,this)}rotate(t,e,i){return this.clone().rotateO(t,e,i)}rotateO(t,e=0,i=0){t=M(t);const a=Math.cos(t),s=Math.sin(t),{a:r,b:n,c:o,d:l,e:h,f:c}=this;return this.a=r*a-n*s,this.b=n*a+r*s,this.c=o*a-l*s,this.d=l*a+o*s,this.e=h*a-c*s+i*s-e*a+e,this.f=c*a+h*s-e*s-i*a+i,this}scale(){return this.clone().scaleO(...arguments)}scaleO(t,e=t,i=0,a=0){3===arguments.length&&(a=i,i=e,e=t);const{a:s,b:r,c:n,d:o,e:l,f:h}=this;return this.a=s*t,this.b=r*e,this.c=n*t,this.d=o*e,this.e=l*t-i*t+i,this.f=h*e-a*e+a,this}shear(t,e,i){return this.clone().shearO(t,e,i)}shearO(t,e=0,i=0){const{a:a,b:s,c:r,d:n,e:o,f:l}=this;return this.a=a+s*t,this.c=r+n*t,this.e=o+l*t-i*t,this}skew(){return this.clone().skewO(...arguments)}skewO(t,e=t,i=0,a=0){3===arguments.length&&(a=i,i=e,e=t),t=M(t),e=M(e);const s=Math.tan(t),r=Math.tan(e),{a:n,b:o,c:l,d:h,e:c,f:d}=this;return this.a=n+o*s,this.b=o+n*r,this.c=l+h*s,this.d=h+l*r,this.e=c+d*s-a*s,this.f=d+c*r-i*r,this}skewX(t,e,i){return this.skew(t,0,e,i)}skewY(t,e,i){return this.skew(0,t,e,i)}toArray(){return[this.a,this.b,this.c,this.d,this.e,this.f]}toString(){return\"matrix(\"+this.a+\",\"+this.b+\",\"+this.c+\",\"+this.d+\",\"+this.e+\",\"+this.f+\")\"}transform(t){if(vt.isMatrixLike(t)){return new vt(t).multiplyO(this)}const e=vt.formatTransforms(t),{x:i,y:a}=new bt(e.ox,e.oy).transform(this),s=(new vt).translateO(e.rx,e.ry).lmultiplyO(this).translateO(-i,-a).scaleO(e.scaleX,e.scaleY).skewO(e.skewX,e.skewY).shearO(e.shear).rotateO(e.theta).translateO(i,a);if(isFinite(e.px)||isFinite(e.py)){const t=new bt(i,a).transform(s),r=isFinite(e.px)?e.px-t.x:0,n=isFinite(e.py)?e.py-t.y:0;s.translateO(r,n)}return s.translateO(e.tx,e.ty),s}translate(t,e){return this.clone().translateO(t,e)}translateO(t,e){return this.e+=t||0,this.f+=e||0,this}valueOf(){return{a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}}function yt(){if(!yt.nodes){const t=B().size(2,0);t.node.style.cssText=[\"opacity: 0\",\"position: absolute\",\"left: -100%\",\"top: -100%\",\"overflow: hidden\"].join(\";\"),t.attr(\"focusable\",\"false\"),t.attr(\"aria-hidden\",\"true\");const e=t.path().node;yt.nodes={svg:t,path:e}}if(!yt.nodes.svg.node.parentNode){const t=O.document.body||O.document.documentElement;yt.nodes.svg.addTo(t)}return yt.nodes}function wt(t){return!(t.width||t.height||t.x||t.y)}q(vt,\"Matrix\");class kt{constructor(...t){this.init(...t)}addOffset(){return this.x+=O.window.pageXOffset,this.y+=O.window.pageYOffset,new kt(this)}init(t){return t=\"string\"==typeof t?t.split(dt).map(parseFloat):Array.isArray(t)?t:\"object\"==typeof t?[null!=t.left?t.left:t.x,null!=t.top?t.top:t.y,t.width,t.height]:4===arguments.length?[].slice.call(arguments):[0,0,0,0],this.x=t[0]||0,this.y=t[1]||0,this.width=this.w=t[2]||0,this.height=this.h=t[3]||0,this.x2=this.x+this.w,this.y2=this.y+this.h,this.cx=this.x+this.w/2,this.cy=this.y+this.h/2,this}isNulled(){return wt(this)}merge(t){const e=Math.min(this.x,t.x),i=Math.min(this.y,t.y),a=Math.max(this.x+this.width,t.x+t.width)-e,s=Math.max(this.y+this.height,t.y+t.height)-i;return new kt(e,i,a,s)}toArray(){return[this.x,this.y,this.width,this.height]}toString(){return this.x+\" \"+this.y+\" \"+this.width+\" \"+this.height}transform(t){t instanceof vt||(t=new vt(t));let e=1/0,i=-1/0,a=1/0,s=-1/0;return[new bt(this.x,this.y),new bt(this.x2,this.y),new bt(this.x,this.y2),new bt(this.x2,this.y2)].forEach((function(r){r=r.transform(t),e=Math.min(e,r.x),i=Math.max(i,r.x),a=Math.min(a,r.y),s=Math.max(s,r.y)})),new kt(e,a,i-e,s-a)}}function At(t,e,i){let a;try{if(a=e(t.node),wt(a)&&((s=t.node)!==O.document&&!(O.document.documentElement.contains||function(t){for(;t.parentNode;)t=t.parentNode;return t===O.document}).call(O.document.documentElement,s)))throw new Error(\"Element not in the dom\")}catch(e){a=i(t)}var s;return a}A({viewbox:{viewbox(t,e,i,a){return null==t?new kt(this.attr(\"viewBox\")):this.attr(\"viewBox\",new kt(t,e,i,a))},zoom(t,e){let{width:i,height:a}=this.attr([\"width\",\"height\"]);if((i||a)&&\"string\"!=typeof i&&\"string\"!=typeof a||(i=this.node.clientWidth,a=this.node.clientHeight),!i||!a)throw new Error(\"Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element\");const s=this.viewbox(),r=i/s.width,n=a/s.height,o=Math.min(r,n);if(null==t)return o;let l=o/t;l===1/0&&(l=Number.MAX_SAFE_INTEGER/100),e=e||new bt(i/2/r+s.x,a/2/n+s.y);const h=new kt(s).transform(new vt({scale:l,origin:e}));return this.viewbox(h)}}}),q(kt,\"Box\");class Ct extends Array{constructor(t=[],...e){if(super(t,...e),\"number\"==typeof t)return this;this.length=0,this.push(...t)}}Q([Ct],{each(t,...e){return\"function\"==typeof t?this.map(((e,i,a)=>t.call(e,e,i,a))):this.map((i=>i[t](...e)))},toArray(){return Array.prototype.concat.apply([],this)}});const St=[\"toArray\",\"constructor\",\"each\"];function Lt(t,e){return new Ct(L((e||O.document).querySelectorAll(t),(function(t){return V(t)})))}Ct.extend=function(t){t=t.reduce(((t,e)=>(St.includes(e)||\"_\"===e[0]||(e in Array.prototype&&(t[\"$\"+e]=Array.prototype[e]),t[e]=function(...t){return this.each(e,...t)}),t)),{}),Q([Ct],t)};let Mt=0;const Pt={};function It(t){let e=t.getEventHolder();return e===O.window&&(e=Pt),e.events||(e.events={}),e.events}function Tt(t){return t.getEventTarget()}function zt(t,e,i,a,s){const r=i.bind(a||t),n=B(t),o=It(n),l=Tt(n);e=Array.isArray(e)?e:e.split(dt),i._svgjsListenerId||(i._svgjsListenerId=++Mt),e.forEach((function(t){const e=t.split(\".\")[0],a=t.split(\".\")[1]||\"*\";o[e]=o[e]||{},o[e][a]=o[e][a]||{},o[e][a][i._svgjsListenerId]=r,l.addEventListener(e,r,s||!1)}))}function Xt(t,e,i,a){const s=B(t),r=It(s),n=Tt(s);(\"function\"!=typeof i||(i=i._svgjsListenerId))&&(e=Array.isArray(e)?e:(e||\"\").split(dt)).forEach((function(t){const e=t&&t.split(\".\")[0],o=t&&t.split(\".\")[1];let l,h;if(i)r[e]&&r[e][o||\"*\"]&&(n.removeEventListener(e,r[e][o||\"*\"][i],a||!1),delete r[e][o||\"*\"][i]);else if(e&&o){if(r[e]&&r[e][o]){for(h in r[e][o])Xt(n,[e,o].join(\".\"),h);delete r[e][o]}}else if(o)for(t in r)for(l in r[t])o===l&&Xt(n,[t,o].join(\".\"));else if(e){if(r[e]){for(l in r[e])Xt(n,[e,l].join(\".\"));delete r[e]}}else{for(t in r)Xt(n,t);!function(t){let e=t.getEventHolder();e===O.window&&(e=Pt),e.events&&(e.events={})}(s)}}))}class Rt extends D{addEventListener(){}dispatch(t,e,i){return function(t,e,i,a){const s=Tt(t);return e instanceof O.window.Event||(e=new O.window.CustomEvent(e,{detail:i,cancelable:!0,...a})),s.dispatchEvent(e),e}(this,t,e,i)}dispatchEvent(t){const e=this.getEventHolder().events;if(!e)return!0;const i=e[t.type];for(const e in i)for(const a in i[e])i[e][a](t);return!t.defaultPrevented}fire(t,e,i){return this.dispatch(t,e,i),this}getEventHolder(){return this}getEventTarget(){return this}off(t,e,i){return Xt(this,t,e,i),this}on(t,e,i,a){return zt(this,t,e,i,a),this}removeEventListener(){}}function Et(){}q(Rt,\"EventTarget\");const Yt=400,Ht=\">\",Ot=0,Ft={\"fill-opacity\":1,\"stroke-opacity\":1,\"stroke-width\":0,\"stroke-linejoin\":\"miter\",\"stroke-linecap\":\"butt\",fill:\"#000000\",stroke:\"#000000\",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,\"stop-opacity\":1,\"stop-color\":\"#000000\",\"text-anchor\":\"start\"};class Dt extends Array{constructor(...t){super(...t),this.init(...t)}clone(){return new this.constructor(this)}init(t){return\"number\"==typeof t||(this.length=0,this.push(...this.parse(t))),this}parse(t=[]){return t instanceof Array?t:t.trim().split(dt).map(parseFloat)}toArray(){return Array.prototype.concat.apply([],this)}toSet(){return new Set(this)}toString(){return this.join(\" \")}valueOf(){const t=[];return t.push(...this),t}}class _t{constructor(...t){this.init(...t)}convert(t){return new _t(this.value,t)}divide(t){return t=new _t(t),new _t(this/t,this.unit||t.unit)}init(t,e){return e=Array.isArray(t)?t[1]:e,t=Array.isArray(t)?t[0]:t,this.value=0,this.unit=e||\"\",\"number\"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:\"string\"==typeof t?(e=t.match(tt))&&(this.value=parseFloat(e[1]),\"%\"===e[5]?this.value/=100:\"s\"===e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof _t&&(this.value=t.valueOf(),this.unit=t.unit),this}minus(t){return t=new _t(t),new _t(this-t,this.unit||t.unit)}plus(t){return t=new _t(t),new _t(this+t,this.unit||t.unit)}times(t){return t=new _t(t),new _t(this*t,this.unit||t.unit)}toArray(){return[this.value,this.unit]}toJSON(){return this.toString()}toString(){return(\"%\"===this.unit?~~(1e8*this.value)/1e6:\"s\"===this.unit?this.value/1e3:this.value)+this.unit}valueOf(){return this.value}}const Nt=new Set([\"fill\",\"stroke\",\"color\",\"bgcolor\",\"stop-color\",\"flood-color\",\"lighting-color\"]),Wt=[];class Bt extends Rt{constructor(t,e){super(),this.node=t,this.type=t.nodeName,e&&t!==e&&this.attr(e)}add(t,e){return(t=B(t)).removeNamespace&&this.node instanceof O.window.SVGElement&&t.removeNamespace(),null==e?this.node.appendChild(t.node):t.node!==this.node.childNodes[e]&&this.node.insertBefore(t.node,this.node.childNodes[e]),this}addTo(t,e){return B(t).put(this,e)}children(){return new Ct(L(this.node.children,(function(t){return V(t)})))}clear(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return this}clone(t=!0,e=!0){this.writeDataToDom();let i=this.node.cloneNode(t);return e&&(i=J(i)),new this.constructor(i)}each(t,e){const i=this.children();let a,s;for(a=0,s=i.length;a<s;a++)t.apply(i[a],[a,i]),e&&i[a].each(t,e);return this}element(t,e){return this.put(new Bt(W(t),e))}first(){return V(this.node.firstChild)}get(t){return V(this.node.childNodes[t])}getEventHolder(){return this.node}getEventTarget(){return this.node}has(t){return this.index(t)>=0}html(t,e){return this.xml(t,e,\"http://www.w3.org/1999/xhtml\")}id(t){return void 0!==t||this.node.id||(this.node.id=$(this.type)),this.attr(\"id\",t)}index(t){return[].slice.call(this.node.childNodes).indexOf(t.node)}last(){return V(this.node.lastChild)}matches(t){const e=this.node,i=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector||null;return i&&i.call(e,t)}parent(t){let e=this;if(!e.node.parentNode)return null;if(e=V(e.node.parentNode),!t)return e;do{if(\"string\"==typeof t?e.matches(t):e instanceof t)return e}while(e=V(e.node.parentNode));return e}put(t,e){return t=B(t),this.add(t,e),t}putIn(t,e){return B(t).add(this,e)}remove(){return this.parent()&&this.parent().removeElement(this),this}removeElement(t){return this.node.removeChild(t.node),this}replace(t){return t=B(t),this.node.parentNode&&this.node.parentNode.replaceChild(t.node,this.node),t}round(t=2,e=null){const i=10**t,a=this.attr(e);for(const t in a)\"number\"==typeof a[t]&&(a[t]=Math.round(a[t]*i)/i);return this.attr(a),this}svg(t,e){return this.xml(t,e,E)}toString(){return this.id()}words(t){return this.node.textContent=t,this}wrap(t){const e=this.parent();if(!e)return this.addTo(t);const i=e.index(this);return e.put(t,i).put(this)}writeDataToDom(){return this.each((function(){this.writeDataToDom()})),this}xml(t,e,i){if(\"boolean\"==typeof t&&(i=e,e=t,t=null),null==t||\"function\"==typeof t){e=null==e||e,this.writeDataToDom();let i=this;if(null!=t){if(i=V(i.node.cloneNode(!0)),e){const e=t(i);if(i=e||i,!1===e)return\"\"}i.each((function(){const e=t(this),i=e||this;!1===e?this.remove():e&&this!==i&&this.replace(i)}),!0)}return e?i.node.outerHTML:i.node.innerHTML}e=null!=e&&e;const a=W(\"wrapper\",i),s=O.document.createDocumentFragment();a.innerHTML=t;for(let t=a.children.length;t--;)s.appendChild(a.firstElementChild);const r=this.parent();return e?this.replace(s)&&r:this.add(s)}}Q(Bt,{attr:function(t,e,i){if(null==t){t={},e=this.node.attributes;for(const i of e)t[i.nodeName]=ht.test(i.nodeValue)?parseFloat(i.nodeValue):i.nodeValue;return t}if(t instanceof Array)return t.reduce(((t,e)=>(t[e]=this.attr(e),t)),{});if(\"object\"==typeof t&&t.constructor===Object)for(e in t)this.attr(e,t[e]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?Ft[t]:ht.test(e)?parseFloat(e):e;\"number\"==typeof(e=Wt.reduce(((e,i)=>i(t,e,this)),e))?e=new _t(e):Nt.has(t)&&xt.isColor(e)?e=new xt(e):e.constructor===Array&&(e=new Dt(e)),\"leading\"===t?this.leading&&this.leading(e):\"string\"==typeof i?this.node.setAttributeNS(i,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||\"font-size\"!==t&&\"x\"!==t||this.rebuild()}return this},find:function(t){return Lt(t,this.node)},findOne:function(t){return V(this.node.querySelector(t))}}),q(Bt,\"Dom\");let Gt=class extends Bt{constructor(t,e){super(t,e),this.dom={},this.node.instance=this,(t.hasAttribute(\"data-svgjs\")||t.hasAttribute(\"svgjs:data\"))&&this.setData(JSON.parse(t.getAttribute(\"data-svgjs\"))??JSON.parse(t.getAttribute(\"svgjs:data\"))??{})}center(t,e){return this.cx(t).cy(e)}cx(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)}cy(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)}defs(){const t=this.root();return t&&t.defs()}dmove(t,e){return this.dx(t).dy(e)}dx(t=0){return this.x(new _t(t).plus(this.x()))}dy(t=0){return this.y(new _t(t).plus(this.y()))}getEventHolder(){return this}height(t){return this.attr(\"height\",t)}move(t,e){return this.x(t).y(e)}parents(t=this.root()){const e=\"string\"==typeof t;e||(t=B(t));const i=new Ct;let a=this;for(;(a=a.parent())&&a.node!==O.document&&\"#document-fragment\"!==a.nodeName&&(i.push(a),e||a.node!==t.node)&&(!e||!a.matches(t));)if(a.node===this.root().node)return null;return i}reference(t){if(!(t=this.attr(t)))return null;const e=(t+\"\").match(at);return e?B(e[1]):null}root(){const t=this.parent(function(t){return _[t]}(N));return t&&t.root()}setData(t){return this.dom=t,this}size(t,e){const i=I(this,t,e);return this.width(new _t(i.width)).height(new _t(i.height))}width(t){return this.attr(\"width\",t)}writeDataToDom(){return R(this,this.dom),super.writeDataToDom()}x(t){return this.attr(\"x\",t)}y(t){return this.attr(\"y\",t)}};Q(Gt,{bbox:function(){const t=At(this,(t=>t.getBBox()),(t=>{try{const e=t.clone().addTo(yt().svg).show(),i=e.node.getBBox();return e.remove(),i}catch(e){throw new Error(`Getting bbox of element \"${t.node.nodeName}\" is not possible: ${e.toString()}`)}}));return new kt(t)},rbox:function(t){const e=At(this,(t=>t.getBoundingClientRect()),(t=>{throw new Error(`Getting rbox of element \"${t.node.nodeName}\" is not possible`)})),i=new kt(e);return t?i.transform(t.screenCTM().inverseO()):i.addOffset()},inside:function(t,e){const i=this.bbox();return t>i.x&&e>i.y&&t<i.x+i.width&&e<i.y+i.height},point:function(t,e){return new bt(t,e).transformO(this.screenCTM().inverseO())},ctm:function(){return new vt(this.node.getCTM())},screenCTM:function(){try{if(\"function\"==typeof this.isRoot&&!this.isRoot()){const t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new vt(e)}return new vt(this.node.getScreenCTM())}catch(t){return console.warn(`Cannot get CTM from SVG node ${this.node.nodeName}. Is the element rendered?`),new vt}}}),q(Gt,\"Element\");const jt={stroke:[\"color\",\"width\",\"opacity\",\"linecap\",\"linejoin\",\"miterlimit\",\"dasharray\",\"dashoffset\"],fill:[\"color\",\"opacity\",\"rule\"],prefix:function(t,e){return\"color\"===e?t:t+\"-\"+e}};[\"fill\",\"stroke\"].forEach((function(t){const e={};let i;e[t]=function(e){if(void 0===e)return this.attr(t);if(\"string\"==typeof e||e instanceof xt||xt.isRgb(e)||e instanceof Gt)this.attr(t,e);else for(i=jt[t].length-1;i>=0;i--)null!=e[jt[t][i]]&&this.attr(jt.prefix(t,jt[t][i]),e[jt[t][i]]);return this},A([\"Element\",\"Runner\"],e)})),A([\"Element\",\"Runner\"],{matrix:function(t,e,i,a,s,r){return null==t?new vt(this):this.attr(\"transform\",new vt(t,e,i,a,s,r))},rotate:function(t,e,i){return this.transform({rotate:t,ox:e,oy:i},!0)},skew:function(t,e,i,a){return 1===arguments.length||3===arguments.length?this.transform({skew:t,ox:e,oy:i},!0):this.transform({skew:[t,e],ox:i,oy:a},!0)},shear:function(t,e,i){return this.transform({shear:t,ox:e,oy:i},!0)},scale:function(t,e,i,a){return 1===arguments.length||3===arguments.length?this.transform({scale:t,ox:e,oy:i},!0):this.transform({scale:[t,e],ox:i,oy:a},!0)},translate:function(t,e){return this.transform({translate:[t,e]},!0)},relative:function(t,e){return this.transform({relative:[t,e]},!0)},flip:function(t=\"both\",e=\"center\"){return-1===\"xybothtrue\".indexOf(t)&&(e=t,t=\"both\"),this.transform({flip:t,origin:e},!0)},opacity:function(t){return this.attr(\"opacity\",t)}}),A(\"radius\",{radius:function(t,e=t){return\"radialGradient\"===(this._element||this).type?this.attr(\"r\",new _t(t)):this.rx(t).ry(e)}}),A(\"Path\",{length:function(){return this.node.getTotalLength()},pointAt:function(t){return new bt(this.node.getPointAtLength(t))}}),A([\"Element\",\"Runner\"],{font:function(t,e){if(\"object\"==typeof t){for(e in t)this.font(e,t[e]);return this}return\"leading\"===t?this.leading(e):\"anchor\"===t?this.attr(\"text-anchor\",e):\"size\"===t||\"family\"===t||\"weight\"===t||\"stretch\"===t||\"variant\"===t||\"style\"===t?this.attr(\"font-\"+t,e):this.attr(t,e)}});A(\"Element\",[\"click\",\"dblclick\",\"mousedown\",\"mouseup\",\"mouseover\",\"mouseout\",\"mousemove\",\"mouseenter\",\"mouseleave\",\"touchstart\",\"touchmove\",\"touchleave\",\"touchend\",\"touchcancel\",\"contextmenu\",\"wheel\",\"pointerdown\",\"pointermove\",\"pointerup\",\"pointerleave\",\"pointercancel\"].reduce((function(t,e){return t[e]=function(t){return null===t?this.off(e):this.on(e,t),this},t}),{})),A(\"Element\",{untransform:function(){return this.attr(\"transform\",null)},matrixify:function(){const t=(this.attr(\"transform\")||\"\").split(st).slice(0,-1).map((function(t){const e=t.trim().split(\"(\");return[e[0],e[1].split(dt).map((function(t){return parseFloat(t)}))]})).reverse().reduce((function(t,e){return\"matrix\"===e[0]?t.lmultiply(vt.fromArray(e[1])):t[e[0]].apply(t,e[1])}),new vt);return t},toParent:function(t,e){if(this===t)return this;if(X(this.node))return this.addTo(t,e);const i=this.screenCTM(),a=t.screenCTM().inverse();return this.addTo(t,e).untransform().transform(a.multiply(i)),this},toRoot:function(t){return this.toParent(this.root(),t)},transform:function(t,e){if(null==t||\"string\"==typeof t){const e=new vt(this).decompose();return null==t?e:e[t]}vt.isMatrixLike(t)||(t={...t,origin:T(t,this)});const i=new vt(!0===e?this:e||!1).transform(t);return this.attr(\"transform\",i)}});class Vt extends Gt{flatten(){return this.each((function(){if(this instanceof Vt)return this.flatten().ungroup()})),this}ungroup(t=this.parent(),e=t.index(this)){return e=-1===e?t.children().length:e,this.each((function(i,a){return a[a.length-i-1].toParent(t,e)})),this.remove()}}q(Vt,\"Container\");class Ut extends Vt{constructor(t,e=t){super(G(\"defs\",t),e)}flatten(){return this}ungroup(){return this}}q(Ut,\"Defs\");class qt extends Gt{}function Zt(t){return this.attr(\"rx\",t)}function $t(t){return this.attr(\"ry\",t)}function Jt(t){return null==t?this.cx()-this.rx():this.cx(t+this.rx())}function Qt(t){return null==t?this.cy()-this.ry():this.cy(t+this.ry())}function Kt(t){return this.attr(\"cx\",t)}function te(t){return this.attr(\"cy\",t)}function ee(t){return null==t?2*this.rx():this.rx(new _t(t).divide(2))}function ie(t){return null==t?2*this.ry():this.ry(new _t(t).divide(2))}q(qt,\"Shape\");var ae=Object.freeze({__proto__:null,cx:Kt,cy:te,height:ie,rx:Zt,ry:$t,width:ee,x:Jt,y:Qt});class se extends qt{constructor(t,e=t){super(G(\"ellipse\",t),e)}size(t,e){const i=I(this,t,e);return this.rx(new _t(i.width).divide(2)).ry(new _t(i.height).divide(2))}}Q(se,ae),A(\"Container\",{ellipse:K((function(t=0,e=t){return this.put(new se).size(t,e).move(0,0)}))}),q(se,\"Ellipse\");class re extends Bt{constructor(t=O.document.createDocumentFragment()){super(t)}xml(t,e,i){if(\"boolean\"==typeof t&&(i=e,e=t,t=null),null==t||\"function\"==typeof t){const t=new Bt(W(\"wrapper\",i));return t.add(this.node.cloneNode(!0)),t.xml(!1,i)}return super.xml(t,!1,i)}}function ne(t,e){return\"radialGradient\"===(this._element||this).type?this.attr({fx:new _t(t),fy:new _t(e)}):this.attr({x1:new _t(t),y1:new _t(e)})}function oe(t,e){return\"radialGradient\"===(this._element||this).type?this.attr({cx:new _t(t),cy:new _t(e)}):this.attr({x2:new _t(t),y2:new _t(e)})}q(re,\"Fragment\");var le=Object.freeze({__proto__:null,from:ne,to:oe});class he extends Vt{constructor(t,e){super(G(t+\"Gradient\",\"string\"==typeof t?null:t),e)}attr(t,e,i){return\"transform\"===t&&(t=\"gradientTransform\"),super.attr(t,e,i)}bbox(){return new kt}targets(){return Lt(\"svg [fill*=\"+this.id()+\"]\")}toString(){return this.url()}update(t){return this.clear(),\"function\"==typeof t&&t.call(this,this),this}url(){return\"url(#\"+this.id()+\")\"}}Q(he,le),A({Container:{gradient(...t){return this.defs().gradient(...t)}},Defs:{gradient:K((function(t,e){return this.put(new he(t)).update(e)}))}}),q(he,\"Gradient\");class ce extends Vt{constructor(t,e=t){super(G(\"pattern\",t),e)}attr(t,e,i){return\"transform\"===t&&(t=\"patternTransform\"),super.attr(t,e,i)}bbox(){return new kt}targets(){return Lt(\"svg [fill*=\"+this.id()+\"]\")}toString(){return this.url()}update(t){return this.clear(),\"function\"==typeof t&&t.call(this,this),this}url(){return\"url(#\"+this.id()+\")\"}}A({Container:{pattern(...t){return this.defs().pattern(...t)}},Defs:{pattern:K((function(t,e,i){return this.put(new ce).update(i).attr({x:0,y:0,width:t,height:e,patternUnits:\"userSpaceOnUse\"})}))}}),q(ce,\"Pattern\");let de=class extends qt{constructor(t,e=t){super(G(\"image\",t),e)}load(t,e){if(!t)return this;const i=new O.window.Image;return zt(i,\"load\",(function(t){const a=this.parent(ce);0===this.width()&&0===this.height()&&this.size(i.width,i.height),a instanceof ce&&0===a.width()&&0===a.height()&&a.size(this.width(),this.height()),\"function\"==typeof e&&e.call(this,t)}),this),zt(i,\"load error\",(function(){Xt(i)})),this.attr(\"href\",i.src=t,H)}};var ue;ue=function(t,e,i){return\"fill\"!==t&&\"stroke\"!==t||ct.test(e)&&(e=i.root().defs().image(e)),e instanceof de&&(e=i.root().defs().pattern(0,0,(t=>{t.add(e)}))),e},Wt.push(ue),A({Container:{image:K((function(t,e){return this.put(new de).size(0,0).load(t,e)}))}}),q(de,\"Image\");class ge extends Dt{bbox(){let t=-1/0,e=-1/0,i=1/0,a=1/0;return this.forEach((function(s){t=Math.max(s[0],t),e=Math.max(s[1],e),i=Math.min(s[0],i),a=Math.min(s[1],a)})),new kt(i,a,t-i,e-a)}move(t,e){const i=this.bbox();if(t-=i.x,e-=i.y,!isNaN(t)&&!isNaN(e))for(let i=this.length-1;i>=0;i--)this[i]=[this[i][0]+t,this[i][1]+e];return this}parse(t=[0,0]){const e=[];(t=t instanceof Array?Array.prototype.concat.apply([],t):t.trim().split(dt).map(parseFloat)).length%2!=0&&t.pop();for(let i=0,a=t.length;i<a;i+=2)e.push([t[i],t[i+1]]);return e}size(t,e){let i;const a=this.bbox();for(i=this.length-1;i>=0;i--)a.width&&(this[i][0]=(this[i][0]-a.x)*t/a.width+a.x),a.height&&(this[i][1]=(this[i][1]-a.y)*e/a.height+a.y);return this}toLine(){return{x1:this[0][0],y1:this[0][1],x2:this[1][0],y2:this[1][1]}}toString(){const t=[];for(let e=0,i=this.length;e<i;e++)t.push(this[e].join(\",\"));return t.join(\" \")}transform(t){return this.clone().transformO(t)}transformO(t){vt.isMatrixLike(t)||(t=new vt(t));for(let e=this.length;e--;){const[i,a]=this[e];this[e][0]=t.a*i+t.c*a+t.e,this[e][1]=t.b*i+t.d*a+t.f}return this}}const pe=ge;var fe=Object.freeze({__proto__:null,MorphArray:pe,height:function(t){const e=this.bbox();return null==t?e.height:this.size(e.width,t)},width:function(t){const e=this.bbox();return null==t?e.width:this.size(t,e.height)},x:function(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)},y:function(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)}});let xe=class extends qt{constructor(t,e=t){super(G(\"line\",t),e)}array(){return new ge([[this.attr(\"x1\"),this.attr(\"y1\")],[this.attr(\"x2\"),this.attr(\"y2\")]])}move(t,e){return this.attr(this.array().move(t,e).toLine())}plot(t,e,i,a){return null==t?this.array():(t=void 0!==e?{x1:t,y1:e,x2:i,y2:a}:new ge(t).toLine(),this.attr(t))}size(t,e){const i=I(this,t,e);return this.attr(this.array().size(i.width,i.height).toLine())}};Q(xe,fe),A({Container:{line:K((function(...t){return xe.prototype.plot.apply(this.put(new xe),null!=t[0]?t:[0,0,0,0])}))}}),q(xe,\"Line\");let be=class extends Vt{constructor(t,e=t){super(G(\"marker\",t),e)}height(t){return this.attr(\"markerHeight\",t)}orient(t){return this.attr(\"orient\",t)}ref(t,e){return this.attr(\"refX\",t).attr(\"refY\",e)}toString(){return\"url(#\"+this.id()+\")\"}update(t){return this.clear(),\"function\"==typeof t&&t.call(this,this),this}width(t){return this.attr(\"markerWidth\",t)}};function me(t,e){return function(i){return null==i?this[t]:(this[t]=i,e&&e.call(this),this)}}A({Container:{marker(...t){return this.defs().marker(...t)}},Defs:{marker:K((function(t,e,i){return this.put(new be).size(t,e).ref(t/2,e/2).viewbox(0,0,t,e).attr(\"orient\",\"auto\").update(i)}))},marker:{marker(t,e,i,a){let s=[\"marker\"];return\"all\"!==t&&s.push(t),s=s.join(\"-\"),t=arguments[1]instanceof be?arguments[1]:this.defs().marker(e,i,a),this.attr(s,t)}}}),q(be,\"Marker\");const ve={\"-\":function(t){return t},\"<>\":function(t){return-Math.cos(t*Math.PI)/2+.5},\">\":function(t){return Math.sin(t*Math.PI/2)},\"<\":function(t){return 1-Math.cos(t*Math.PI/2)},bezier:function(t,e,i,a){return function(s){return s<0?t>0?e/t*s:i>0?a/i*s:0:s>1?i<1?(1-a)/(1-i)*s+(a-i)/(1-i):t<1?(1-e)/(1-t)*s+(e-t)/(1-t):1:3*s*(1-s)**2*e+3*s**2*(1-s)*a+s**3}},steps:function(t,e=\"end\"){e=e.split(\"-\").reverse()[0];let i=t;return\"none\"===e?--i:\"both\"===e&&++i,(a,s=!1)=>{let r=Math.floor(a*t);const n=a*r%1==0;return\"start\"!==e&&\"both\"!==e||++r,s&&n&&--r,a>=0&&r<0&&(r=0),a<=1&&r>i&&(r=i),r/i}}};class ye{done(){return!1}}class we extends ye{constructor(t=Ht){super(),this.ease=ve[t]||t}step(t,e,i){return\"number\"!=typeof t?i<1?t:e:t+(e-t)*this.ease(i)}}class ke extends ye{constructor(t){super(),this.stepper=t}done(t){return t.done}step(t,e,i,a){return this.stepper(t,e,i,a)}}function Ae(){const t=(this._duration||500)/1e3,e=this._overshoot||0,i=Math.PI,a=Math.log(e/100+1e-10),s=-a/Math.sqrt(i*i+a*a),r=3.9/(s*t);this.d=2*s*r,this.k=r*r}Q(class extends ke{constructor(t=500,e=0){super(),this.duration(t).overshoot(e)}step(t,e,i,a){if(\"string\"==typeof t)return t;if(a.done=i===1/0,i===1/0)return e;if(0===i)return t;i>100&&(i=16),i/=1e3;const s=a.velocity||0,r=-this.d*s-this.k*(t-e),n=t+s*i+r*i*i/2;return a.velocity=s+r*i,a.done=Math.abs(e-n)+Math.abs(s)<.002,a.done?e:n}},{duration:me(\"_duration\",Ae),overshoot:me(\"_overshoot\",Ae)});Q(class extends ke{constructor(t=.1,e=.01,i=0,a=1e3){super(),this.p(t).i(e).d(i).windup(a)}step(t,e,i,a){if(\"string\"==typeof t)return t;if(a.done=i===1/0,i===1/0)return e;if(0===i)return t;const s=e-t;let r=(a.integral||0)+s*i;const n=(s-(a.error||0))/i,o=this._windup;return!1!==o&&(r=Math.max(-o,Math.min(r,o))),a.error=s,a.integral=r,a.done=Math.abs(s)<.001,a.done?e:t+(this.P*s+this.I*r+this.D*n)}},{windup:me(\"_windup\"),p:me(\"P\"),i:me(\"I\"),d:me(\"D\")});const Ce={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0},Se={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],[\"M\",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],[\"L\",t[0],t[1]]},H:function(t,e){return e.x=t[0],[\"H\",t[0]]},V:function(t,e){return e.y=t[0],[\"V\",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],[\"C\",t[0],t[1],t[2],t[3],t[4],t[5]]},S:function(t,e){return e.x=t[2],e.y=t[3],[\"S\",t[0],t[1],t[2],t[3]]},Q:function(t,e){return e.x=t[2],e.y=t[3],[\"Q\",t[0],t[1],t[2],t[3]]},T:function(t,e){return e.x=t[0],e.y=t[1],[\"T\",t[0],t[1]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,[\"Z\"]},A:function(t,e){return e.x=t[5],e.y=t[6],[\"A\",t[0],t[1],t[2],t[3],t[4],t[5],t[6]]}},Le=\"mlhvqtcsaz\".split(\"\");for(let t=0,e=Le.length;t<e;++t)Se[Le[t]]=function(t){return function(e,i,a){if(\"H\"===t)e[0]=e[0]+i.x;else if(\"V\"===t)e[0]=e[0]+i.y;else if(\"A\"===t)e[5]=e[5]+i.x,e[6]=e[6]+i.y;else for(let t=0,a=e.length;t<a;++t)e[t]=e[t]+(t%2?i.y:i.x);return Se[t](e,i,a)}}(Le[t].toUpperCase());function Me(t){return t.segment.length&&t.segment.length-1===Ce[t.segment[0].toUpperCase()]}function Pe(t,e){t.inNumber&&Ie(t,!1);const i=ut.test(e);if(i)t.segment=[e];else{const e=t.lastCommand,i=e.toLowerCase(),a=e===i;t.segment=[\"m\"===i?a?\"l\":\"L\":e]}return t.inSegment=!0,t.lastCommand=t.segment[0],i}function Ie(t,e){if(!t.inNumber)throw new Error(\"Parser Error\");t.number&&t.segment.push(parseFloat(t.number)),t.inNumber=e,t.number=\"\",t.pointSeen=!1,t.hasExponent=!1,Me(t)&&Te(t)}function Te(t){t.inSegment=!1,t.absolute&&(t.segment=function(t){const e=t.segment[0];return Se[e](t.segment.slice(1),t.p,t.p0)}(t)),t.segments.push(t.segment)}function ze(t){if(!t.segment.length)return!1;const e=\"A\"===t.segment[0].toUpperCase(),i=t.segment.length;return e&&(4===i||5===i)}function Xe(t){return\"E\"===t.lastToken.toUpperCase()}const Re=new Set([\" \",\",\",\"\\t\",\"\\n\",\"\\r\",\"\\f\"]);class Ee extends Dt{bbox(){return yt().path.setAttribute(\"d\",this.toString()),new kt(yt.nodes.path.getBBox())}move(t,e){const i=this.bbox();if(t-=i.x,e-=i.y,!isNaN(t)&&!isNaN(e))for(let i,a=this.length-1;a>=0;a--)i=this[a][0],\"M\"===i||\"L\"===i||\"T\"===i?(this[a][1]+=t,this[a][2]+=e):\"H\"===i?this[a][1]+=t:\"V\"===i?this[a][1]+=e:\"C\"===i||\"S\"===i||\"Q\"===i?(this[a][1]+=t,this[a][2]+=e,this[a][3]+=t,this[a][4]+=e,\"C\"===i&&(this[a][5]+=t,this[a][6]+=e)):\"A\"===i&&(this[a][6]+=t,this[a][7]+=e);return this}parse(t=\"M0 0\"){return Array.isArray(t)&&(t=Array.prototype.concat.apply([],t).toString()),function(t,e=!0){let i=0,a=\"\";const s={segment:[],inNumber:!1,number:\"\",lastToken:\"\",inSegment:!1,segments:[],pointSeen:!1,hasExponent:!1,absolute:e,p0:new bt,p:new bt};for(;s.lastToken=a,a=t.charAt(i++);)if(s.inSegment||!Pe(s,a))if(\".\"!==a)if(isNaN(parseInt(a)))if(Re.has(a))s.inNumber&&Ie(s,!1);else if(\"-\"!==a&&\"+\"!==a)if(\"E\"!==a.toUpperCase()){if(ut.test(a)){if(s.inNumber)Ie(s,!1);else{if(!Me(s))throw new Error(\"parser Error\");Te(s)}--i}}else s.number+=a,s.hasExponent=!0;else{if(s.inNumber&&!Xe(s)){Ie(s,!1),--i;continue}s.number+=a,s.inNumber=!0}else{if(\"0\"===s.number||ze(s)){s.inNumber=!0,s.number=a,Ie(s,!0);continue}s.inNumber=!0,s.number+=a}else{if(s.pointSeen||s.hasExponent){Ie(s,!1),--i;continue}s.inNumber=!0,s.pointSeen=!0,s.number+=a}return s.inNumber&&Ie(s,!1),s.inSegment&&Me(s)&&Te(s),s.segments}(t)}size(t,e){const i=this.bbox();let a,s;for(i.width=0===i.width?1:i.width,i.height=0===i.height?1:i.height,a=this.length-1;a>=0;a--)s=this[a][0],\"M\"===s||\"L\"===s||\"T\"===s?(this[a][1]=(this[a][1]-i.x)*t/i.width+i.x,this[a][2]=(this[a][2]-i.y)*e/i.height+i.y):\"H\"===s?this[a][1]=(this[a][1]-i.x)*t/i.width+i.x:\"V\"===s?this[a][1]=(this[a][1]-i.y)*e/i.height+i.y:\"C\"===s||\"S\"===s||\"Q\"===s?(this[a][1]=(this[a][1]-i.x)*t/i.width+i.x,this[a][2]=(this[a][2]-i.y)*e/i.height+i.y,this[a][3]=(this[a][3]-i.x)*t/i.width+i.x,this[a][4]=(this[a][4]-i.y)*e/i.height+i.y,\"C\"===s&&(this[a][5]=(this[a][5]-i.x)*t/i.width+i.x,this[a][6]=(this[a][6]-i.y)*e/i.height+i.y)):\"A\"===s&&(this[a][1]=this[a][1]*t/i.width,this[a][2]=this[a][2]*e/i.height,this[a][6]=(this[a][6]-i.x)*t/i.width+i.x,this[a][7]=(this[a][7]-i.y)*e/i.height+i.y);return this}toString(){return function(t){let e=\"\";for(let i=0,a=t.length;i<a;i++)e+=t[i][0],null!=t[i][1]&&(e+=t[i][1],null!=t[i][2]&&(e+=\" \",e+=t[i][2],null!=t[i][3]&&(e+=\" \",e+=t[i][3],e+=\" \",e+=t[i][4],null!=t[i][5]&&(e+=\" \",e+=t[i][5],e+=\" \",e+=t[i][6],null!=t[i][7]&&(e+=\" \",e+=t[i][7])))));return e+\" \"}(this)}}const Ye=t=>{const e=typeof t;return\"number\"===e?_t:\"string\"===e?xt.isColor(t)?xt:dt.test(t)?ut.test(t)?Ee:Dt:tt.test(t)?_t:Oe:Ne.indexOf(t.constructor)>-1?t.constructor:Array.isArray(t)?Dt:\"object\"===e?_e:Oe};class He{constructor(t){this._stepper=t||new we(\"-\"),this._from=null,this._to=null,this._type=null,this._context=null,this._morphObj=null}at(t){return this._morphObj.morph(this._from,this._to,t,this._stepper,this._context)}done(){return this._context.map(this._stepper.done).reduce((function(t,e){return t&&e}),!0)}from(t){return null==t?this._from:(this._from=this._set(t),this)}stepper(t){return null==t?this._stepper:(this._stepper=t,this)}to(t){return null==t?this._to:(this._to=this._set(t),this)}type(t){return null==t?this._type:(this._type=t,this)}_set(t){this._type||this.type(Ye(t));let e=new this._type(t);return this._type===xt&&(e=this._to?e[this._to[4]]():this._from?e[this._from[4]]():e),this._type===_e&&(e=this._to?e.align(this._to):this._from?e.align(this._from):e),e=e.toConsumable(),this._morphObj=this._morphObj||new this._type,this._context=this._context||Array.apply(null,Array(e.length)).map(Object).map((function(t){return t.done=!0,t})),e}}class Oe{constructor(...t){this.init(...t)}init(t){return t=Array.isArray(t)?t[0]:t,this.value=t,this}toArray(){return[this.value]}valueOf(){return this.value}}class Fe{constructor(...t){this.init(...t)}init(t){return Array.isArray(t)&&(t={scaleX:t[0],scaleY:t[1],shear:t[2],rotate:t[3],translateX:t[4],translateY:t[5],originX:t[6],originY:t[7]}),Object.assign(this,Fe.defaults,t),this}toArray(){const t=this;return[t.scaleX,t.scaleY,t.shear,t.rotate,t.translateX,t.translateY,t.originX,t.originY]}}Fe.defaults={scaleX:1,scaleY:1,shear:0,rotate:0,translateX:0,translateY:0,originX:0,originY:0};const De=(t,e)=>t[0]<e[0]?-1:t[0]>e[0]?1:0;class _e{constructor(...t){this.init(...t)}align(t){const e=this.values;for(let i=0,a=e.length;i<a;++i){if(e[i+1]===t[i+1]){if(e[i+1]===xt&&t[i+7]!==e[i+7]){const e=t[i+7],a=new xt(this.values.splice(i+3,5))[e]().toArray();this.values.splice(i+3,0,...a)}i+=e[i+2]+2;continue}if(!t[i+1])return this;const a=(new t[i+1]).toArray(),s=e[i+2]+3;e.splice(i,s,t[i],t[i+1],t[i+2],...a),i+=e[i+2]+2}return this}init(t){if(this.values=[],Array.isArray(t))return void(this.values=t.slice());t=t||{};const e=[];for(const i in t){const a=Ye(t[i]),s=new a(t[i]).toArray();e.push([i,a,s.length,...s])}return e.sort(De),this.values=e.reduce(((t,e)=>t.concat(e)),[]),this}toArray(){return this.values}valueOf(){const t={},e=this.values;for(;e.length;){const i=e.shift(),a=e.shift(),s=e.shift(),r=e.splice(0,s);t[i]=new a(r)}return t}}const Ne=[Oe,Fe,_e];class We extends qt{constructor(t,e=t){super(G(\"path\",t),e)}array(){return this._array||(this._array=new Ee(this.attr(\"d\")))}clear(){return delete this._array,this}height(t){return null==t?this.bbox().height:this.size(this.bbox().width,t)}move(t,e){return this.attr(\"d\",this.array().move(t,e))}plot(t){return null==t?this.array():this.clear().attr(\"d\",\"string\"==typeof t?t:this._array=new Ee(t))}size(t,e){const i=I(this,t,e);return this.attr(\"d\",this.array().size(i.width,i.height))}width(t){return null==t?this.bbox().width:this.size(t,this.bbox().height)}x(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)}y(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)}}We.prototype.MorphArray=Ee,A({Container:{path:K((function(t){return this.put(new We).plot(t||new Ee)}))}}),q(We,\"Path\");var Be=Object.freeze({__proto__:null,array:function(){return this._array||(this._array=new ge(this.attr(\"points\")))},clear:function(){return delete this._array,this},move:function(t,e){return this.attr(\"points\",this.array().move(t,e))},plot:function(t){return null==t?this.array():this.clear().attr(\"points\",\"string\"==typeof t?t:this._array=new ge(t))},size:function(t,e){const i=I(this,t,e);return this.attr(\"points\",this.array().size(i.width,i.height))}});class Ge extends qt{constructor(t,e=t){super(G(\"polygon\",t),e)}}A({Container:{polygon:K((function(t){return this.put(new Ge).plot(t||new ge)}))}}),Q(Ge,fe),Q(Ge,Be),q(Ge,\"Polygon\");class je extends qt{constructor(t,e=t){super(G(\"polyline\",t),e)}}A({Container:{polyline:K((function(t){return this.put(new je).plot(t||new ge)}))}}),Q(je,fe),Q(je,Be),q(je,\"Polyline\");class Ve extends qt{constructor(t,e=t){super(G(\"rect\",t),e)}}Q(Ve,{rx:Zt,ry:$t}),A({Container:{rect:K((function(t,e){return this.put(new Ve).size(t,e)}))}}),q(Ve,\"Rect\");class Ue{constructor(){this._first=null,this._last=null}first(){return this._first&&this._first.value}last(){return this._last&&this._last.value}push(t){const e=void 0!==t.next?t:{value:t,next:null,prev:null};return this._last?(e.prev=this._last,this._last.next=e,this._last=e):(this._last=e,this._first=e),e}remove(t){t.prev&&(t.prev.next=t.next),t.next&&(t.next.prev=t.prev),t===this._last&&(this._last=t.prev),t===this._first&&(this._first=t.next),t.prev=null,t.next=null}shift(){const t=this._first;return t?(this._first=t.next,this._first&&(this._first.prev=null),this._last=this._first?this._last:null,t.value):null}}const qe={nextDraw:null,frames:new Ue,timeouts:new Ue,immediates:new Ue,timer:()=>O.window.performance||O.window.Date,transforms:[],frame(t){const e=qe.frames.push({run:t});return null===qe.nextDraw&&(qe.nextDraw=O.window.requestAnimationFrame(qe._draw)),e},timeout(t,e){e=e||0;const i=qe.timer().now()+e,a=qe.timeouts.push({run:t,time:i});return null===qe.nextDraw&&(qe.nextDraw=O.window.requestAnimationFrame(qe._draw)),a},immediate(t){const e=qe.immediates.push(t);return null===qe.nextDraw&&(qe.nextDraw=O.window.requestAnimationFrame(qe._draw)),e},cancelFrame(t){null!=t&&qe.frames.remove(t)},clearTimeout(t){null!=t&&qe.timeouts.remove(t)},cancelImmediate(t){null!=t&&qe.immediates.remove(t)},_draw(t){let e=null;const i=qe.timeouts.last();for(;(e=qe.timeouts.shift())&&(t>=e.time?e.run():qe.timeouts.push(e),e!==i););let a=null;const s=qe.frames.last();for(;a!==s&&(a=qe.frames.shift());)a.run(t);let r=null;for(;r=qe.immediates.shift();)r();qe.nextDraw=qe.timeouts.first()||qe.frames.first()?O.window.requestAnimationFrame(qe._draw):null}},Ze=function(t){const e=t.start,i=t.runner.duration();return{start:e,duration:i,end:e+i,runner:t.runner}},$e=function(){const t=O.window;return(t.performance||t.Date).now()};class Je extends Rt{constructor(t=$e){super(),this._timeSource=t,this.terminate()}active(){return!!this._nextFrame}finish(){return this.time(this.getEndTimeOfTimeline()+1),this.pause()}getEndTime(){const t=this.getLastRunnerInfo(),e=t?t.runner.duration():0;return(t?t.start:this._time)+e}getEndTimeOfTimeline(){const t=this._runners.map((t=>t.start+t.runner.duration()));return Math.max(0,...t)}getLastRunnerInfo(){return this.getRunnerInfoById(this._lastRunnerId)}getRunnerInfoById(t){return this._runners[this._runnerIds.indexOf(t)]||null}pause(){return this._paused=!0,this._continue()}persist(t){return null==t?this._persist:(this._persist=t,this)}play(){return this._paused=!1,this.updateTime()._continue()}reverse(t){const e=this.speed();if(null==t)return this.speed(-e);const i=Math.abs(e);return this.speed(t?-i:i)}schedule(t,e,i){if(null==t)return this._runners.map(Ze);let a=0;const s=this.getEndTime();if(e=e||0,null==i||\"last\"===i||\"after\"===i)a=s;else if(\"absolute\"===i||\"start\"===i)a=e,e=0;else if(\"now\"===i)a=this._time;else if(\"relative\"===i){const i=this.getRunnerInfoById(t.id);i&&(a=i.start+e,e=0)}else{if(\"with-last\"!==i)throw new Error('Invalid value for the \"when\" parameter');{const t=this.getLastRunnerInfo();a=t?t.start:this._time}}t.unschedule(),t.timeline(this);const r=t.persist(),n={persist:null===r?this._persist:r,start:a+e,runner:t};return this._lastRunnerId=t.id,this._runners.push(n),this._runners.sort(((t,e)=>t.start-e.start)),this._runnerIds=this._runners.map((t=>t.runner.id)),this.updateTime()._continue(),this}seek(t){return this.time(this._time+t)}source(t){return null==t?this._timeSource:(this._timeSource=t,this)}speed(t){return null==t?this._speed:(this._speed=t,this)}stop(){return this.time(0),this.pause()}time(t){return null==t?this._time:(this._time=t,this._continue(!0))}unschedule(t){const e=this._runnerIds.indexOf(t.id);return e<0||(this._runners.splice(e,1),this._runnerIds.splice(e,1),t.timeline(null)),this}updateTime(){return this.active()||(this._lastSourceTime=this._timeSource()),this}_continue(t=!1){return qe.cancelFrame(this._nextFrame),this._nextFrame=null,t?this._stepImmediate():(this._paused||(this._nextFrame=qe.frame(this._step)),this)}_stepFn(t=!1){const e=this._timeSource();let i=e-this._lastSourceTime;t&&(i=0);const a=this._speed*i+(this._time-this._lastStepTime);this._lastSourceTime=e,t||(this._time+=a,this._time=this._time<0?0:this._time),this._lastStepTime=this._time,this.fire(\"time\",this._time);for(let t=this._runners.length;t--;){const e=this._runners[t],i=e.runner;this._time-e.start<=0&&i.reset()}let s=!1;for(let t=0,e=this._runners.length;t<e;t++){const i=this._runners[t],r=i.runner;let n=a;const o=this._time-i.start;if(o<=0){s=!0;continue}if(o<n&&(n=o),!r.active())continue;if(r.step(n).done){if(!0!==i.persist){r.duration()-r.time()+this._time+i.persist<this._time&&(r.unschedule(),--t,--e)}}else s=!0}return s&&!(this._speed<0&&0===this._time)||this._runnerIds.length&&this._speed<0&&this._time>0?this._continue():(this.pause(),this.fire(\"finished\")),this}terminate(){this._startTime=0,this._speed=1,this._persist=0,this._nextFrame=null,this._paused=!0,this._runners=[],this._runnerIds=[],this._lastRunnerId=-1,this._time=0,this._lastSourceTime=0,this._lastStepTime=0,this._step=this._stepFn.bind(this,!1),this._stepImmediate=this._stepFn.bind(this,!0)}}A({Element:{timeline:function(t){return null==t?(this._timeline=this._timeline||new Je,this._timeline):(this._timeline=t,this)}}});class Qe extends Rt{constructor(t){super(),this.id=Qe.id++,t=\"function\"==typeof(t=null==t?Yt:t)?new ke(t):t,this._element=null,this._timeline=null,this.done=!1,this._queue=[],this._duration=\"number\"==typeof t&&t,this._isDeclarative=t instanceof ke,this._stepper=this._isDeclarative?t:new we,this._history={},this.enabled=!0,this._time=0,this._lastTime=0,this._reseted=!0,this.transforms=new vt,this.transformId=1,this._haveReversed=!1,this._reverse=!1,this._loopsDone=0,this._swing=!1,this._wait=0,this._times=1,this._frameId=null,this._persist=!!this._isDeclarative||null}static sanitise(t,e,i){let a=1,s=!1,r=0;return e=e??Ot,i=i||\"last\",\"object\"!=typeof(t=t??Yt)||t instanceof ye||(e=t.delay??e,i=t.when??i,s=t.swing||s,a=t.times??a,r=t.wait??r,t=t.duration??Yt),{duration:t,delay:e,swing:s,times:a,wait:r,when:i}}active(t){return null==t?this.enabled:(this.enabled=t,this)}addTransform(t){return this.transforms.lmultiplyO(t),this}after(t){return this.on(\"finished\",t)}animate(t,e,i){const a=Qe.sanitise(t,e,i),s=new Qe(a.duration);return this._timeline&&s.timeline(this._timeline),this._element&&s.element(this._element),s.loop(a).schedule(a.delay,a.when)}clearTransform(){return this.transforms=new vt,this}clearTransformsFromQueue(){this.done&&this._timeline&&this._timeline._runnerIds.includes(this.id)||(this._queue=this._queue.filter((t=>!t.isTransform)))}delay(t){return this.animate(0,t)}duration(){return this._times*(this._wait+this._duration)-this._wait}during(t){return this.queue(null,t)}ease(t){return this._stepper=new we(t),this}element(t){return null==t?this._element:(this._element=t,t._prepareRunner(),this)}finish(){return this.step(1/0)}loop(t,e,i){return\"object\"==typeof t&&(e=t.swing,i=t.wait,t=t.times),this._times=t||1/0,this._swing=e||!1,this._wait=i||0,!0===this._times&&(this._times=1/0),this}loops(t){const e=this._duration+this._wait;if(null==t){const t=Math.floor(this._time/e),i=(this._time-t*e)/this._duration;return Math.min(t+i,this._times)}const i=t%1,a=e*Math.floor(t)+this._duration*i;return this.time(a)}persist(t){return null==t?this._persist:(this._persist=t,this)}position(t){const e=this._time,i=this._duration,a=this._wait,s=this._times,r=this._swing,n=this._reverse;let o;if(null==t){const t=function(t){const e=r*Math.floor(t%(2*(a+i))/(a+i)),s=e&&!n||!e&&n,o=Math.pow(-1,s)*(t%(a+i))/i+s;return Math.max(Math.min(o,1),0)},l=s*(a+i)-a;return o=e<=0?Math.round(t(1e-5)):e<l?t(e):Math.round(t(l-1e-5)),o}const l=Math.floor(this.loops()),h=r&&l%2==0;return o=l+(h&&!n||n&&h?t:1-t),this.loops(o)}progress(t){return null==t?Math.min(1,this._time/this.duration()):this.time(t*this.duration())}queue(t,e,i,a){this._queue.push({initialiser:t||Et,runner:e||Et,retarget:i,isTransform:a,initialised:!1,finished:!1});return this.timeline()&&this.timeline()._continue(),this}reset(){return this._reseted||(this.time(0),this._reseted=!0),this}reverse(t){return this._reverse=null==t?!this._reverse:t,this}schedule(t,e,i){if(t instanceof Je||(i=e,e=t,t=this.timeline()),!t)throw Error(\"Runner cannot be scheduled without timeline\");return t.schedule(this,e,i),this}step(t){if(!this.enabled)return this;t=null==t?16:t,this._time+=t;const e=this.position(),i=this._lastPosition!==e&&this._time>=0;this._lastPosition=e;const a=this.duration(),s=this._lastTime<=0&&this._time>0,r=this._lastTime<a&&this._time>=a;this._lastTime=this._time,s&&this.fire(\"start\",this);const n=this._isDeclarative;this.done=!n&&!r&&this._time>=a,this._reseted=!1;let o=!1;return(i||n)&&(this._initialise(i),this.transforms=new vt,o=this._run(n?t:e),this.fire(\"step\",this)),this.done=this.done||o&&n,r&&this.fire(\"finished\",this),this}time(t){if(null==t)return this._time;const e=t-this._time;return this.step(e),this}timeline(t){return void 0===t?this._timeline:(this._timeline=t,this)}unschedule(){const t=this.timeline();return t&&t.unschedule(this),this}_initialise(t){if(t||this._isDeclarative)for(let e=0,i=this._queue.length;e<i;++e){const i=this._queue[e],a=this._isDeclarative||!i.initialised&&t;t=!i.finished,a&&t&&(i.initialiser.call(this),i.initialised=!0)}}_rememberMorpher(t,e){if(this._history[t]={morpher:e,caller:this._queue[this._queue.length-1]},this._isDeclarative){const t=this.timeline();t&&t.play()}}_run(t){let e=!0;for(let i=0,a=this._queue.length;i<a;++i){const a=this._queue[i],s=a.runner.call(this,t);a.finished=a.finished||!0===s,e=e&&a.finished}return e}_tryRetarget(t,e,i){if(this._history[t]){if(!this._history[t].caller.initialised){const e=this._queue.indexOf(this._history[t].caller);return this._queue.splice(e,1),!1}this._history[t].caller.retarget?this._history[t].caller.retarget.call(this,e,i):this._history[t].morpher.to(e),this._history[t].caller.finished=!1;const a=this.timeline();return a&&a.play(),!0}return!1}}Qe.id=0;class Ke{constructor(t=new vt,e=-1,i=!0){this.transforms=t,this.id=e,this.done=i}clearTransformsFromQueue(){}}Q([Qe,Ke],{mergeWith(t){return new Ke(t.transforms.lmultiply(this.transforms),t.id)}});const ti=(t,e)=>t.lmultiplyO(e),ei=t=>t.transforms;function ii(){const t=this._transformationRunners.runners.map(ei).reduce(ti,new vt);this.transform(t),this._transformationRunners.merge(),1===this._transformationRunners.length()&&(this._frameId=null)}class ai{constructor(){this.runners=[],this.ids=[]}add(t){if(this.runners.includes(t))return;const e=t.id+1;return this.runners.push(t),this.ids.push(e),this}clearBefore(t){const e=this.ids.indexOf(t+1)||1;return this.ids.splice(0,e,0),this.runners.splice(0,e,new Ke).forEach((t=>t.clearTransformsFromQueue())),this}edit(t,e){const i=this.ids.indexOf(t+1);return this.ids.splice(i,1,t+1),this.runners.splice(i,1,e),this}getByID(t){return this.runners[this.ids.indexOf(t+1)]}length(){return this.ids.length}merge(){let t=null;for(let e=0;e<this.runners.length;++e){const i=this.runners[e];if(t&&i.done&&t.done&&(!i._timeline||!i._timeline._runnerIds.includes(i.id))&&(!t._timeline||!t._timeline._runnerIds.includes(t.id))){this.remove(i.id);const a=i.mergeWith(t);this.edit(t.id,a),t=a,--e}else t=i}return this}remove(t){const e=this.ids.indexOf(t+1);return this.ids.splice(e,1),this.runners.splice(e,1),this}}A({Element:{animate(t,e,i){const a=Qe.sanitise(t,e,i),s=this.timeline();return new Qe(a.duration).loop(a).element(this).timeline(s.play()).schedule(a.delay,a.when)},delay(t,e){return this.animate(0,t,e)},_clearTransformRunnersBefore(t){this._transformationRunners.clearBefore(t.id)},_currentTransform(t){return this._transformationRunners.runners.filter((e=>e.id<=t.id)).map(ei).reduce(ti,new vt)},_addRunner(t){this._transformationRunners.add(t),qe.cancelImmediate(this._frameId),this._frameId=qe.immediate(ii.bind(this))},_prepareRunner(){null==this._frameId&&(this._transformationRunners=(new ai).add(new Ke(new vt(this))))}}});Q(Qe,{attr(t,e){return this.styleAttr(\"attr\",t,e)},css(t,e){return this.styleAttr(\"css\",t,e)},styleAttr(t,e,i){if(\"string\"==typeof e)return this.styleAttr(t,{[e]:i});let a=e;if(this._tryRetarget(t,a))return this;let s=new He(this._stepper).to(a),r=Object.keys(a);return this.queue((function(){s=s.from(this.element()[t](r))}),(function(e){return this.element()[t](s.at(e).valueOf()),s.done()}),(function(e){const i=Object.keys(e),n=(o=r,i.filter((t=>!o.includes(t))));var o;if(n.length){const e=this.element()[t](n),i=new _e(s.from()).valueOf();Object.assign(i,e),s.from(i)}const l=new _e(s.to()).valueOf();Object.assign(l,e),s.to(l),r=i,a=e})),this._rememberMorpher(t,s),this},zoom(t,e){if(this._tryRetarget(\"zoom\",t,e))return this;let i=new He(this._stepper).to(new _t(t));return this.queue((function(){i=i.from(this.element().zoom())}),(function(t){return this.element().zoom(i.at(t),e),i.done()}),(function(t,a){e=a,i.to(t)})),this._rememberMorpher(\"zoom\",i),this},transform(t,e,i){if(e=t.relative||e,this._isDeclarative&&!e&&this._tryRetarget(\"transform\",t))return this;const a=vt.isMatrixLike(t);i=null!=t.affine?t.affine:null!=i?i:!a;const s=new He(this._stepper).type(i?Fe:vt);let r,n,o,l,h;return this.queue((function(){n=n||this.element(),r=r||T(t,n),h=new vt(e?void 0:n),n._addRunner(this),e||n._clearTransformRunnersBefore(this)}),(function(c){e||this.clearTransform();const{x:d,y:u}=new bt(r).transform(n._currentTransform(this));let g=new vt({...t,origin:[d,u]}),p=this._isDeclarative&&o?o:h;if(i){g=g.decompose(d,u),p=p.decompose(d,u);const t=g.rotate,e=p.rotate,i=[t-360,t,t+360],a=i.map((t=>Math.abs(t-e))),s=Math.min(...a),r=a.indexOf(s);g.rotate=i[r]}e&&(a||(g.rotate=t.rotate||0),this._isDeclarative&&l&&(p.rotate=l)),s.from(p),s.to(g);const f=s.at(c);return l=f.rotate,o=new vt(f),this.addTransform(o),n._addRunner(this),s.done()}),(function(e){(e.origin||\"center\").toString()!==(t.origin||\"center\").toString()&&(r=T(e,n)),t={...e,origin:r}}),!0),this._isDeclarative&&this._rememberMorpher(\"transform\",s),this},x(t){return this._queueNumber(\"x\",t)},y(t){return this._queueNumber(\"y\",t)},ax(t){return this._queueNumber(\"ax\",t)},ay(t){return this._queueNumber(\"ay\",t)},dx(t=0){return this._queueNumberDelta(\"x\",t)},dy(t=0){return this._queueNumberDelta(\"y\",t)},dmove(t,e){return this.dx(t).dy(e)},_queueNumberDelta(t,e){if(e=new _t(e),this._tryRetarget(t,e))return this;const i=new He(this._stepper).to(e);let a=null;return this.queue((function(){a=this.element()[t](),i.from(a),i.to(a+e)}),(function(e){return this.element()[t](i.at(e)),i.done()}),(function(t){i.to(a+new _t(t))})),this._rememberMorpher(t,i),this},_queueObject(t,e){if(this._tryRetarget(t,e))return this;const i=new He(this._stepper).to(e);return this.queue((function(){i.from(this.element()[t]())}),(function(e){return this.element()[t](i.at(e)),i.done()})),this._rememberMorpher(t,i),this},_queueNumber(t,e){return this._queueObject(t,new _t(e))},cx(t){return this._queueNumber(\"cx\",t)},cy(t){return this._queueNumber(\"cy\",t)},move(t,e){return this.x(t).y(e)},amove(t,e){return this.ax(t).ay(e)},center(t,e){return this.cx(t).cy(e)},size(t,e){let i;return t&&e||(i=this._element.bbox()),t||(t=i.width/i.height*e),e||(e=i.height/i.width*t),this.width(t).height(e)},width(t){return this._queueNumber(\"width\",t)},height(t){return this._queueNumber(\"height\",t)},plot(t,e,i,a){if(4===arguments.length)return this.plot([t,e,i,a]);if(this._tryRetarget(\"plot\",t))return this;const s=new He(this._stepper).type(this._element.MorphArray).to(t);return this.queue((function(){s.from(this._element.array())}),(function(t){return this._element.plot(s.at(t)),s.done()})),this._rememberMorpher(\"plot\",s),this},leading(t){return this._queueNumber(\"leading\",t)},viewbox(t,e,i,a){return this._queueObject(\"viewbox\",new kt(t,e,i,a))},update(t){return\"object\"!=typeof t?this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]}):(null!=t.opacity&&this.attr(\"stop-opacity\",t.opacity),null!=t.color&&this.attr(\"stop-color\",t.color),null!=t.offset&&this.attr(\"offset\",t.offset),this)}}),Q(Qe,{rx:Zt,ry:$t,from:ne,to:oe}),q(Qe,\"Runner\");class si extends Vt{constructor(t,e=t){super(G(\"svg\",t),e),this.namespace()}defs(){return this.isRoot()?V(this.node.querySelector(\"defs\"))||this.put(new Ut):this.root().defs()}isRoot(){return!this.node.parentNode||!(this.node.parentNode instanceof O.window.SVGElement)&&\"#document-fragment\"!==this.node.parentNode.nodeName}namespace(){return this.isRoot()?this.attr({xmlns:E,version:\"1.1\"}).attr(\"xmlns:xlink\",H,Y):this.root().namespace()}removeNamespace(){return this.attr({xmlns:null,version:null}).attr(\"xmlns:xlink\",null,Y).attr(\"xmlns:svgjs\",null,Y)}root(){return this.isRoot()?this:super.root()}}A({Container:{nested:K((function(){return this.put(new si)}))}}),q(si,\"Svg\",!0);let ri=class extends Vt{constructor(t,e=t){super(G(\"symbol\",t),e)}};A({Container:{symbol:K((function(){return this.put(new ri)}))}}),q(ri,\"Symbol\");var ni=Object.freeze({__proto__:null,amove:function(t,e){return this.ax(t).ay(e)},ax:function(t){return this.attr(\"x\",t)},ay:function(t){return this.attr(\"y\",t)},build:function(t){return this._build=!!t,this},center:function(t,e,i=this.bbox()){return this.cx(t,i).cy(e,i)},cx:function(t,e=this.bbox()){return null==t?e.cx:this.attr(\"x\",this.attr(\"x\")+t-e.cx)},cy:function(t,e=this.bbox()){return null==t?e.cy:this.attr(\"y\",this.attr(\"y\")+t-e.cy)},length:function(){return this.node.getComputedTextLength()},move:function(t,e,i=this.bbox()){return this.x(t,i).y(e,i)},plain:function(t){return!1===this._build&&this.clear(),this.node.appendChild(O.document.createTextNode(t)),this},x:function(t,e=this.bbox()){return null==t?e.x:this.attr(\"x\",this.attr(\"x\")+t-e.x)},y:function(t,e=this.bbox()){return null==t?e.y:this.attr(\"y\",this.attr(\"y\")+t-e.y)}});class oi extends qt{constructor(t,e=t){super(G(\"text\",t),e),this.dom.leading=this.dom.leading??new _t(1.3),this._rebuild=!0,this._build=!1}leading(t){return null==t?this.dom.leading:(this.dom.leading=new _t(t),this.rebuild())}rebuild(t){if(\"boolean\"==typeof t&&(this._rebuild=t),this._rebuild){const t=this;let e=0;const i=this.dom.leading;this.each((function(a){if(X(this.node))return;const s=O.window.getComputedStyle(this.node).getPropertyValue(\"font-size\"),r=i*new _t(s);this.dom.newLined&&(this.attr(\"x\",t.attr(\"x\")),\"\\n\"===this.text()?e+=r:(this.attr(\"dy\",a?r+e:0),e=0))})),this.fire(\"rebuild\")}return this}setData(t){return this.dom=t,this.dom.leading=new _t(t.leading||1.3),this}writeDataToDom(){return R(this,this.dom,{leading:1.3}),this}text(t){if(void 0===t){const e=this.node.childNodes;let i=0;t=\"\";for(let a=0,s=e.length;a<s;++a)\"textPath\"===e[a].nodeName||X(e[a])?0===a&&(i=a+1):(a!==i&&3!==e[a].nodeType&&!0===V(e[a]).dom.newLined&&(t+=\"\\n\"),t+=e[a].textContent);return t}if(this.clear().build(!0),\"function\"==typeof t)t.call(this,this);else for(let e=0,i=(t=(t+\"\").split(\"\\n\")).length;e<i;e++)this.newLine(t[e]);return this.build(!1).rebuild()}}Q(oi,ni),A({Container:{text:K((function(t=\"\"){return this.put(new oi).text(t)})),plain:K((function(t=\"\"){return this.put(new oi).plain(t)}))}}),q(oi,\"Text\");class li extends qt{constructor(t,e=t){super(G(\"tspan\",t),e),this._build=!1}dx(t){return this.attr(\"dx\",t)}dy(t){return this.attr(\"dy\",t)}newLine(){this.dom.newLined=!0;const t=this.parent();if(!(t instanceof oi))return this;const e=t.index(this),i=O.window.getComputedStyle(this.node).getPropertyValue(\"font-size\"),a=t.dom.leading*new _t(i);return this.dy(e?a:0).attr(\"x\",t.x())}text(t){return null==t?this.node.textContent+(this.dom.newLined?\"\\n\":\"\"):(\"function\"==typeof t?(this.clear().build(!0),t.call(this,this),this.build(!1)):this.plain(t),this)}}Q(li,ni),A({Tspan:{tspan:K((function(t=\"\"){const e=new li;return this._build||this.clear(),this.put(e).text(t)}))},Text:{newLine:function(t=\"\"){return this.tspan(t).newLine()}}}),q(li,\"Tspan\");class hi extends qt{constructor(t,e=t){super(G(\"circle\",t),e)}radius(t){return this.attr(\"r\",t)}rx(t){return this.attr(\"r\",t)}ry(t){return this.rx(t)}size(t){return this.radius(new _t(t).divide(2))}}Q(hi,{x:Jt,y:Qt,cx:Kt,cy:te,width:ee,height:ie}),A({Container:{circle:K((function(t=0){return this.put(new hi).size(t).move(0,0)}))}}),q(hi,\"Circle\");class ci extends Vt{constructor(t,e=t){super(G(\"clipPath\",t),e)}remove(){return this.targets().forEach((function(t){t.unclip()})),super.remove()}targets(){return Lt(\"svg [clip-path*=\"+this.id()+\"]\")}}A({Container:{clip:K((function(){return this.defs().put(new ci)}))},Element:{clipper(){return this.reference(\"clip-path\")},clipWith(t){const e=t instanceof ci?t:this.parent().clip().add(t);return this.attr(\"clip-path\",\"url(#\"+e.id()+\")\")},unclip(){return this.attr(\"clip-path\",null)}}}),q(ci,\"ClipPath\");class di extends Gt{constructor(t,e=t){super(G(\"foreignObject\",t),e)}}A({Container:{foreignObject:K((function(t,e){return this.put(new di).size(t,e)}))}}),q(di,\"ForeignObject\");var ui=Object.freeze({__proto__:null,dmove:function(t,e){return this.children().forEach((i=>{let a;try{a=i.node instanceof F().SVGSVGElement?new kt(i.attr([\"x\",\"y\",\"width\",\"height\"])):i.bbox()}catch(t){return}const s=new vt(i),r=s.translate(t,e).transform(s.inverse()),n=new bt(a.x,a.y).transform(r);i.move(n.x,n.y)})),this},dx:function(t){return this.dmove(t,0)},dy:function(t){return this.dmove(0,t)},height:function(t,e=this.bbox()){return null==t?e.height:this.size(e.width,t,e)},move:function(t=0,e=0,i=this.bbox()){const a=t-i.x,s=e-i.y;return this.dmove(a,s)},size:function(t,e,i=this.bbox()){const a=I(this,t,e,i),s=a.width/i.width,r=a.height/i.height;return this.children().forEach((t=>{const e=new bt(i).transform(new vt(t).inverse());t.scale(s,r,e.x,e.y)})),this},width:function(t,e=this.bbox()){return null==t?e.width:this.size(t,e.height,e)},x:function(t,e=this.bbox()){return null==t?e.x:this.move(t,e.y,e)},y:function(t,e=this.bbox()){return null==t?e.y:this.move(e.x,t,e)}});class gi extends Vt{constructor(t,e=t){super(G(\"g\",t),e)}}Q(gi,ui),A({Container:{group:K((function(){return this.put(new gi)}))}}),q(gi,\"G\");class pi extends Vt{constructor(t,e=t){super(G(\"a\",t),e)}target(t){return this.attr(\"target\",t)}to(t){return this.attr(\"href\",t,H)}}Q(pi,ui),A({Container:{link:K((function(t){return this.put(new pi).to(t)}))},Element:{unlink(){const t=this.linker();if(!t)return this;const e=t.parent();if(!e)return this.remove();const i=e.index(t);return e.add(this,i),t.remove(),this},linkTo(t){let e=this.linker();return e||(e=new pi,this.wrap(e)),\"function\"==typeof t?t.call(e,e):e.to(t),this},linker(){const t=this.parent();return t&&\"a\"===t.node.nodeName.toLowerCase()?t:null}}}),q(pi,\"A\");class fi extends Vt{constructor(t,e=t){super(G(\"mask\",t),e)}remove(){return this.targets().forEach((function(t){t.unmask()})),super.remove()}targets(){return Lt(\"svg [mask*=\"+this.id()+\"]\")}}A({Container:{mask:K((function(){return this.defs().put(new fi)}))},Element:{masker(){return this.reference(\"mask\")},maskWith(t){const e=t instanceof fi?t:this.parent().mask().add(t);return this.attr(\"mask\",\"url(#\"+e.id()+\")\")},unmask(){return this.attr(\"mask\",null)}}}),q(fi,\"Mask\");class xi extends Gt{constructor(t,e=t){super(G(\"stop\",t),e)}update(t){return(\"number\"==typeof t||t instanceof _t)&&(t={offset:arguments[0],color:arguments[1],opacity:arguments[2]}),null!=t.opacity&&this.attr(\"stop-opacity\",t.opacity),null!=t.color&&this.attr(\"stop-color\",t.color),null!=t.offset&&this.attr(\"offset\",new _t(t.offset)),this}}A({Gradient:{stop:function(t,e,i){return this.put(new xi).update(t,e,i)}}}),q(xi,\"Stop\");class bi extends Gt{constructor(t,e=t){super(G(\"style\",t),e)}addText(t=\"\"){return this.node.textContent+=t,this}font(t,e,i={}){return this.rule(\"@font-face\",{fontFamily:t,src:e,...i})}rule(t,e){return this.addText(function(t,e){if(!t)return\"\";if(!e)return t;let i=t+\"{\";for(const t in e)i+=t.replace(/([A-Z])/g,(function(t,e){return\"-\"+e.toLowerCase()}))+\":\"+e[t]+\";\";return i+=\"}\",i}(t,e))}}A(\"Dom\",{style(t,e){return this.put(new bi).rule(t,e)},fontface(t,e,i){return this.put(new bi).font(t,e,i)}}),q(bi,\"Style\");class mi extends oi{constructor(t,e=t){super(G(\"textPath\",t),e)}array(){const t=this.track();return t?t.array():null}plot(t){const e=this.track();let i=null;return e&&(i=e.plot(t)),null==t?i:this}track(){return this.reference(\"href\")}}A({Container:{textPath:K((function(t,e){return t instanceof oi||(t=this.text(t)),t.path(e)}))},Text:{path:K((function(t,e=!0){const i=new mi;let a;if(t instanceof We||(t=this.defs().path(t)),i.attr(\"href\",\"#\"+t,H),e)for(;a=this.node.firstChild;)i.node.appendChild(a);return this.put(i)})),textPath(){return this.findOne(\"textPath\")}},Path:{text:K((function(t){return t instanceof oi||(t=(new oi).addTo(this.parent()).text(t)),t.path(this)})),targets(){return Lt(\"svg textPath\").filter((t=>(t.attr(\"href\")||\"\").includes(this.id())))}}}),mi.prototype.MorphArray=Ee,q(mi,\"TextPath\");class vi extends qt{constructor(t,e=t){super(G(\"use\",t),e)}use(t,e){return this.attr(\"href\",(e||\"\")+\"#\"+t,H)}}A({Container:{use:K((function(t,e){return this.put(new vi).use(t,e)}))}}),q(vi,\"Use\");const yi=B;Q([si,ri,de,ce,be],C(\"viewbox\")),Q([xe,je,Ge,We],C(\"marker\")),Q(oi,C(\"Text\")),Q(We,C(\"Path\")),Q(Ut,C(\"Defs\")),Q([oi,li],C(\"Tspan\")),Q([Ve,se,he,Qe],C(\"radius\")),Q(Rt,C(\"EventTarget\")),Q(Bt,C(\"Dom\")),Q(Gt,C(\"Element\")),Q(qt,C(\"Shape\")),Q([Vt,re],C(\"Container\")),Q(he,C(\"Gradient\")),Q(Qe,C(\"Runner\")),Ct.extend([...new Set(k)]),function(t=[]){Ne.push(...[].concat(t))}([_t,xt,kt,vt,Dt,ge,Ee,bt]),Q(Ne,{to(t){return(new He).type(this.constructor).from(this.toArray()).to(t)},fromArray(t){return this.init(t),this},toConsumable(){return this.toArray()},morph(t,e,i,a,s){return this.fromArray(t.map((function(t,r){return a.step(t,e[r],i,s[r],s)})))}});class wi extends Gt{constructor(t){super(G(\"filter\",t),t),this.$source=\"SourceGraphic\",this.$sourceAlpha=\"SourceAlpha\",this.$background=\"BackgroundImage\",this.$backgroundAlpha=\"BackgroundAlpha\",this.$fill=\"FillPaint\",this.$stroke=\"StrokePaint\",this.$autoSetIn=!0}put(t,e){return!(t=super.put(t,e)).attr(\"in\")&&this.$autoSetIn&&t.attr(\"in\",this.$source),t.attr(\"result\")||t.attr(\"result\",t.id()),t}remove(){return this.targets().each(\"unfilter\"),super.remove()}targets(){return Lt('svg [filter*=\"'+this.id()+'\"]')}toString(){return\"url(#\"+this.id()+\")\"}}class ki extends Gt{constructor(t,e){super(t,e),this.result(this.id())}in(t){if(null==t){const t=this.attr(\"in\");return this.parent()&&this.parent().find(`[result=\"${t}\"]`)[0]||t}return this.attr(\"in\",t)}result(t){return this.attr(\"result\",t)}toString(){return this.result()}}const Ai=t=>function(...e){for(let i=t.length;i--;)null!=e[i]&&this.attr(t[i],e[i])},Ci={blend:Ai([\"in\",\"in2\",\"mode\"]),colorMatrix:Ai([\"type\",\"values\"]),composite:Ai([\"in\",\"in2\",\"operator\"]),convolveMatrix:function(t){t=new Dt(t).toString(),this.attr({order:Math.sqrt(t.split(\" \").length),kernelMatrix:t})},diffuseLighting:Ai([\"surfaceScale\",\"lightingColor\",\"diffuseConstant\",\"kernelUnitLength\"]),displacementMap:Ai([\"in\",\"in2\",\"scale\",\"xChannelSelector\",\"yChannelSelector\"]),dropShadow:Ai([\"in\",\"dx\",\"dy\",\"stdDeviation\"]),flood:Ai([\"flood-color\",\"flood-opacity\"]),gaussianBlur:function(t=0,e=t){this.attr(\"stdDeviation\",t+\" \"+e)},image:function(t){this.attr(\"href\",t,H)},morphology:Ai([\"operator\",\"radius\"]),offset:Ai([\"dx\",\"dy\"]),specularLighting:Ai([\"surfaceScale\",\"lightingColor\",\"diffuseConstant\",\"specularExponent\",\"kernelUnitLength\"]),tile:Ai([]),turbulence:Ai([\"baseFrequency\",\"numOctaves\",\"seed\",\"stitchTiles\",\"type\"])};[\"blend\",\"colorMatrix\",\"componentTransfer\",\"composite\",\"convolveMatrix\",\"diffuseLighting\",\"displacementMap\",\"dropShadow\",\"flood\",\"gaussianBlur\",\"image\",\"merge\",\"morphology\",\"offset\",\"specularLighting\",\"tile\",\"turbulence\"].forEach((t=>{const e=P(t),i=Ci[t];wi[e+\"Effect\"]=class extends ki{constructor(t){super(G(\"fe\"+e,t),t)}update(t){return i.apply(this,t),this}},wi.prototype[t]=K((function(t,...i){const a=new wi[e+\"Effect\"];return null==t?this.put(a):(\"function\"==typeof t?t.call(a,a):i.unshift(t),this.put(a).update(i))}))})),Q(wi,{merge(t){const e=this.put(new wi.MergeEffect);if(\"function\"==typeof t)return t.call(e,e),e;return(t instanceof Array?t:[...arguments]).forEach((t=>{t instanceof wi.MergeNode?e.put(t):e.mergeNode(t)})),e},componentTransfer(t={}){const e=this.put(new wi.ComponentTransferEffect);if(\"function\"==typeof t)return t.call(e,e),e;if(!(t.r||t.g||t.b||t.a)){t={r:t,g:t,b:t,a:t}}for(const i in t)e.add(new(wi[\"Func\"+i.toUpperCase()])(t[i]));return e}});[\"distantLight\",\"pointLight\",\"spotLight\",\"mergeNode\",\"FuncR\",\"FuncG\",\"FuncB\",\"FuncA\"].forEach((t=>{const e=P(t);wi[e]=class extends ki{constructor(t){super(G(\"fe\"+e,t),t)}}}));[\"funcR\",\"funcG\",\"funcB\",\"funcA\"].forEach((function(t){const e=wi[P(t)],i=K((function(){return this.put(new e)}));wi.ComponentTransferEffect.prototype[t]=i}));[\"distantLight\",\"pointLight\",\"spotLight\"].forEach((t=>{const e=wi[P(t)],i=K((function(){return this.put(new e)}));wi.DiffuseLightingEffect.prototype[t]=i,wi.SpecularLightingEffect.prototype[t]=i})),Q(wi.MergeEffect,{mergeNode(t){return this.put(new wi.MergeNode).attr(\"in\",t)}}),Q(Ut,{filter:function(t){const e=this.put(new wi);return\"function\"==typeof t&&t.call(e,e),e}}),Q(Vt,{filter:function(t){return this.defs().filter(t)}}),Q(Gt,{filterWith:function(t){const e=t instanceof wi?t:this.defs().filter(t);return this.attr(\"filter\",e)},unfilter:function(t){return this.attr(\"filter\",null)},filterer(){return this.reference(\"filter\")}});const Si={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},diffuseLighting:function(t,e,i,a){return this.parent()&&this.parent().diffuseLighting(t,i,a).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},dropShadow:function(t,e,i){return this.parent()&&this.parent().dropShadow(this,t,e,i).in(this)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(t){return t=t instanceof Array?t:[...t],this.parent()&&this.parent().merge(this,...t)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},specularLighting:function(t,e,i,a,s){return this.parent()&&this.parent().specularLighting(t,i,a,s).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};Q(ki,Si),Q(wi.MergeEffect,{in:function(t){return t instanceof wi.MergeNode?this.add(t,0):this.add((new wi.MergeNode).in(t),0),this}}),Q([wi.CompositeEffect,wi.BlendEffect,wi.DisplacementMapEffect],{in2:function(t){if(null==t){const t=this.attr(\"in2\");return this.parent()&&this.parent().find(`[result=\"${t}\"]`)[0]||t}return this.attr(\"in2\",t)}}),wi.filter={sepiatone:[.343,.669,.119,0,0,.249,.626,.13,0,0,.172,.334,.111,0,0,0,0,0,1,0]};var Li=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"getDefaultFilter\",value:function(t,e){var i=this.w;t.unfilter(!0),(new wi).size(\"120%\",\"180%\",\"-5%\",\"-40%\"),i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:\"applyFilter\",value:function(t,e,i){var a,s=this,r=this.w;if(t.unfilter(!0),\"none\"!==i){var n,o,l=r.config.chart.dropShadow,h=\"lighten\"===i?2:.3;if(t.filterWith((function(t){t.colorMatrix({type:\"matrix\",values:\"\\n          \".concat(h,\" 0 0 0 0\\n          0 \").concat(h,\" 0 0 0\\n          0 0 \").concat(h,\" 0 0\\n          0 0 0 1 0\\n        \"),in:\"SourceGraphic\",result:\"brightness\"}),l.enabled&&s.addShadow(t,e,l,\"brightness\")})),!l.noUserSpaceOnUse)null===(n=t.filterer())||void 0===n||null===(o=n.node)||void 0===o||o.setAttribute(\"filterUnits\",\"userSpaceOnUse\");this._scaleFilterSize(null===(a=t.filterer())||void 0===a?void 0:a.node)}else this.getDefaultFilter(t,e)}},{key:\"addShadow\",value:function(t,e,i,a){var s,r=this.w,n=i.blur,o=i.top,l=i.left,h=i.color,c=i.opacity;if(h=Array.isArray(h)?h[e]:h,(null===(s=r.config.chart.dropShadow.enabledOnSeries)||void 0===s?void 0:s.length)>0&&-1===r.config.chart.dropShadow.enabledOnSeries.indexOf(e))return t;t.offset({in:a,dx:l,dy:o,result:\"offset\"}),t.gaussianBlur({in:\"offset\",stdDeviation:n,result:\"blur\"}),t.flood({\"flood-color\":h,\"flood-opacity\":c,result:\"flood\"}),t.composite({in:\"flood\",in2:\"blur\",operator:\"in\",result:\"shadow\"}),t.merge([\"shadow\",a])}},{key:\"dropShadow\",value:function(t,e){var i,a,s,r,n,o=this,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,h=this.w;if(t.unfilter(!0),v.isMsEdge()&&\"radialBar\"===h.config.chart.type)return t;if((null===(i=h.config.chart.dropShadow.enabledOnSeries)||void 0===i?void 0:i.length)>0&&-1===(null===(s=h.config.chart.dropShadow.enabledOnSeries)||void 0===s?void 0:s.indexOf(l)))return t;(t.filterWith((function(t){o.addShadow(t,l,e,\"SourceGraphic\")})),e.noUserSpaceOnUse)||(null===(r=t.filterer())||void 0===r||null===(n=r.node)||void 0===n||n.setAttribute(\"filterUnits\",\"userSpaceOnUse\"));return this._scaleFilterSize(null===(a=t.filterer())||void 0===a?void 0:a.node),t}},{key:\"setSelectionFilter\",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute(\"selected\",!0);var s=a.config.states.active.filter;\"none\"!==s&&this.applyFilter(t,e,s.type)}}},{key:\"_scaleFilterSize\",value:function(t){if(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:\"200%\",height:\"200%\",x:\"-50%\",y:\"-50%\"})}}}]),t}(),Mi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"roundPathCorners\",value:function(t,e){function i(t,e,i){var s=e.x-t.x,r=e.y-t.y,n=Math.sqrt(s*s+r*r);return a(t,e,Math.min(1,i/n))}function a(t,e,i){return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}}function s(t,e){t.length>2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}t.indexOf(\"NaN\")>-1&&(t=\"\");var n=t.split(/[,\\s]/).reduce((function(t,e){var i=e.match(\"([a-zA-Z])(.+)\");return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),o=[];if(n.length>1){var l=r(n[0]),h=null;\"Z\"==n[n.length-1][0]&&n[0].length>2&&(h=[\"L\",l.x,l.y],n[n.length-1]=h),o.push(n[0]);for(var c=1;c<n.length;c++){var d=o[o.length-1],u=n[c],g=u==h?n[1]:n[c+1];if(g&&d&&d.length>2&&\"L\"==u[0]&&g.length>2&&\"L\"==g[0]){var p,f,x=r(d),b=r(u),m=r(g);p=i(b,x,e),f=i(b,m,e),s(u,p),u.origPoint=b,o.push(u);var v=a(p,b,.5),y=a(b,f,.5),w=[\"C\",v.x,v.y,y.x,y.y,f.x,f.y];w.origPoint=b,o.push(w)}else o.push(u)}if(h){var k=r(o[o.length-1]);o.push([\"Z\"]),s(o[0],k)}}else o=n;return o.reduce((function(t,e){return t+e.join(\" \")+\" \"}),\"\")}},{key:\"drawLine\",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"#a8a8a8\",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:\"butt\";return this.w.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,\"stroke-dasharray\":r,\"stroke-width\":n,\"stroke-linecap\":o})}},{key:\"drawRect\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"#fefefe\",n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w.globals.dom.Paper.rect();return c.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:n,\"stroke-width\":null!==o?o:0,stroke:null!==l?l:\"none\",\"stroke-dasharray\":h}),c.node.setAttribute(\"fill\",r),c}},{key:\"drawPolygon\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#e1e1e1\",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"none\";return this.w.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,\"stroke-width\":i})}},{key:\"drawCircle\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;t<0&&(t=0);var i=this.w.globals.dom.Paper.circle(2*t);return null!==e&&i.attr(e),i}},{key:\"drawPath\",value:function(t){var e=t.d,i=void 0===e?\"\":e,a=t.stroke,s=void 0===a?\"#a8a8a8\":a,r=t.strokeWidth,n=void 0===r?1:r,o=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,u=t.classes,g=t.strokeLinecap,p=void 0===g?null:g,f=t.strokeDashArray,x=void 0===f?0:f,b=this.w;return null===p&&(p=b.config.stroke.lineCap),(i.indexOf(\"undefined\")>-1||i.indexOf(\"NaN\")>-1)&&(i=\"M 0 \".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:o,\"fill-opacity\":h,stroke:s,\"stroke-opacity\":d,\"stroke-linecap\":p,\"stroke-width\":n,\"stroke-dasharray\":x,class:u})}},{key:\"group\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w.globals.dom.Paper.group();return null!==t&&e.attr(t),e}},{key:\"move\",value:function(t,e){var i=[\"M\",t,e].join(\" \");return i}},{key:\"line\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[\" L\",t,e].join(\" \"):\"H\"===i?a=[\" H\",t].join(\" \"):\"V\"===i&&(a=[\" V\",e].join(\" \")),a}},{key:\"curve\",value:function(t,e,i,a,s,r){var n=[\"C\",t,e,i,a,s,r].join(\" \");return n}},{key:\"quadraticCurve\",value:function(t,e,i,a){return[\"Q\",t,e,i,a].join(\" \")}},{key:\"arc\",value:function(t,e,i,a,s,r,n){var o=\"A\";arguments.length>7&&void 0!==arguments[7]&&arguments[7]&&(o=\"a\");var l=[o,t,e,i,a,s,r,n].join(\" \");return l}},{key:\"renderPaths\",value:function(t){var e,i=t.j,a=t.realIndex,s=t.pathFrom,r=t.pathTo,n=t.stroke,o=t.strokeWidth,l=t.strokeLinecap,h=t.fill,c=t.animationDelay,d=t.initialSpeed,g=t.dataChangeSpeed,p=t.className,f=t.chartType,x=t.shouldClipToGrid,b=void 0===x||x,m=t.bindEventsOnPaths,v=void 0===m||m,w=t.drawShadow,k=void 0===w||w,A=this.w,C=new Li(this.ctx),S=new y(this.ctx),L=this.w.config.chart.animations.enabled,M=L&&this.w.config.chart.animations.dynamicAnimation.enabled,P=!!(L&&!A.globals.resized||M&&A.globals.dataChanged&&A.globals.shouldAnimate);P?e=s:(e=r,A.globals.animationEnded=!0);var I=A.config.stroke.dashArray,T=0;T=Array.isArray(I)?I[a]:A.config.stroke.dashArray;var z=this.drawPath({d:e,stroke:n,strokeWidth:o,fill:h,fillOpacity:1,classes:p,strokeLinecap:l,strokeDashArray:T});z.attr(\"index\",a),b&&(\"bar\"===f&&!A.globals.isHorizontal||A.globals.comboCharts?z.attr({\"clip-path\":\"url(#gridRectBarMask\".concat(A.globals.cuid,\")\")}):z.attr({\"clip-path\":\"url(#gridRectMask\".concat(A.globals.cuid,\")\")})),A.config.chart.dropShadow.enabled&&k&&C.dropShadow(z,A.config.chart.dropShadow,a),v&&(z.node.addEventListener(\"mouseenter\",this.pathMouseEnter.bind(this,z)),z.node.addEventListener(\"mouseleave\",this.pathMouseLeave.bind(this,z)),z.node.addEventListener(\"mousedown\",this.pathMouseDown.bind(this,z))),z.attr({pathTo:r,pathFrom:s});var X={el:z,j:i,realIndex:a,pathFrom:s,pathTo:r,fill:h,strokeWidth:o,delay:c};return!L||A.globals.resized||A.globals.dataChanged?!A.globals.resized&&A.globals.dataChanged||S.showDelayedElements():S.animatePathsGradually(u(u({},X),{},{speed:d})),A.globals.dataChanged&&M&&P&&S.animatePathsGradually(u(u({},X),{},{speed:g})),z}},{key:\"drawPattern\",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"#a8a8a8\",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return this.w.globals.dom.Paper.pattern(e,i,(function(r){\"horizontalLines\"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):\"verticalLines\"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):\"slantedLines\"===t?r.line(0,0,e,i).stroke({color:a,width:s}):\"squares\"===t?r.rect(e,i).fill(\"none\").stroke({color:a,width:s}):\"circles\"===t&&r.circle(e).fill(\"none\").stroke({color:a,width:s})}))}},{key:\"drawGradient\",value:function(t,e,i,a,s){var r,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:[],h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf(\"#\")&&(e=v.hexToRgba(e,a)),i.length<9&&0===i.indexOf(\"#\")&&(i=v.hexToRgba(i,s));var d=0,u=1,g=1,p=null;null!==o&&(d=void 0!==o[0]?o[0]/100:0,u=void 0!==o[1]?o[1]/100:1,g=void 0!==o[2]?o[2]/100:1,p=void 0!==o[3]?o[3]/100:null);var f=!(\"donut\"!==c.config.chart.type&&\"pie\"!==c.config.chart.type&&\"polarArea\"!==c.config.chart.type&&\"bubble\"!==c.config.chart.type);if(r=l&&0!==l.length?c.globals.dom.Paper.gradient(f?\"radial\":\"linear\",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.stop(e.offset/100,e.color,e.opacity)}))})):c.globals.dom.Paper.gradient(f?\"radial\":\"linear\",(function(t){t.stop(d,e,a),t.stop(u,i,s),t.stop(g,i,s),null!==p&&t.stop(p,e,a)})),f){var x=c.globals.gridWidth/2,b=c.globals.gridHeight/2;\"bubble\"!==c.config.chart.type?r.attr({gradientUnits:\"userSpaceOnUse\",cx:x,cy:b,r:n}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else\"vertical\"===t?r.from(0,0).to(0,1):\"diagonal\"===t?r.from(0,0).to(1,1):\"horizontal\"===t?r.from(0,1).to(1,1):\"diagonal2\"===t&&r.from(1,0).to(0,1);return r}},{key:\"getTextBasedOnMaxWidth\",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),n=r.width/e.length,o=Math.floor(i/n);return i<r.width?e.slice(0,o-3)+\"...\":e}},{key:\"drawText\",value:function(t){var e=this,i=t.x,a=t.y,s=t.text,r=t.textAnchor,n=t.fontSize,o=t.fontFamily,l=t.fontWeight,h=t.foreColor,c=t.opacity,d=t.maxWidth,g=t.cssClass,p=void 0===g?\"\":g,f=t.isPlainText,x=void 0===f||f,b=t.dominantBaseline,m=void 0===b?\"auto\":b,v=this.w;void 0===s&&(s=\"\");var y=s;r||(r=\"start\"),h&&h.length||(h=v.config.chart.foreColor),o=o||v.config.chart.fontFamily,l=l||\"regular\";var w,k={maxWidth:d,fontSize:n=n||\"11px\",fontFamily:o};return Array.isArray(s)?w=v.globals.dom.Paper.text((function(t){for(var i=0;i<s.length;i++)y=s[i],d&&(y=e.getTextBasedOnMaxWidth(u({text:s[i]},k))),0===i?t.tspan(y):t.tspan(y).newLine()})):(d&&(y=this.getTextBasedOnMaxWidth(u({text:s},k))),w=x?v.globals.dom.Paper.plain(s):v.globals.dom.Paper.text((function(t){return t.tspan(y)}))),w.attr({x:i,y:a,\"text-anchor\":r,\"dominant-baseline\":m,\"font-size\":n,\"font-family\":o,\"font-weight\":l,fill:h,class:\"apexcharts-text \"+p}),w.node.style.fontFamily=o,w.node.style.opacity=c,w}},{key:\"getMarkerPath\",value:function(t,e,i,a){var s=\"\";switch(i){case\"cross\":s=\"M \".concat(t-(a/=1.4),\" \").concat(e-a,\" L \").concat(t+a,\" \").concat(e+a,\"  M \").concat(t-a,\" \").concat(e+a,\" L \").concat(t+a,\" \").concat(e-a);break;case\"plus\":s=\"M \".concat(t-(a/=1.12),\" \").concat(e,\" L \").concat(t+a,\" \").concat(e,\"  M \").concat(t,\" \").concat(e-a,\" L \").concat(t,\" \").concat(e+a);break;case\"star\":case\"sparkle\":var r=5;a*=1.15,\"sparkle\"===i&&(a/=1.1,r=4);for(var n=Math.PI/r,o=0;o<=2*r;o++){var l=o*n,h=o%2==0?a:a/2;s+=(0===o?\"M\":\"L\")+(t+h*Math.sin(l))+\",\"+(e-h*Math.cos(l))}s+=\"Z\";break;case\"triangle\":s=\"M \".concat(t,\" \").concat(e-a,\" \\n             L \").concat(t+a,\" \").concat(e+a,\" \\n             L \").concat(t-a,\" \").concat(e+a,\" \\n             Z\");break;case\"square\":case\"rect\":s=\"M \".concat(t-(a/=1.125),\" \").concat(e-a,\" \\n           L \").concat(t+a,\" \").concat(e-a,\" \\n           L \").concat(t+a,\" \").concat(e+a,\" \\n           L \").concat(t-a,\" \").concat(e+a,\" \\n           Z\");break;case\"diamond\":a*=1.05,s=\"M \".concat(t,\" \").concat(e-a,\" \\n             L \").concat(t+a,\" \").concat(e,\" \\n             L \").concat(t,\" \").concat(e+a,\" \\n             L \").concat(t-a,\" \").concat(e,\" \\n            Z\");break;case\"line\":s=\"M \".concat(t-(a/=1.1),\" \").concat(e,\" \\n           L \").concat(t+a,\" \").concat(e);break;default:a*=2,s=\"M \".concat(t,\", \").concat(e,\" \\n           m -\").concat(a/2,\", 0 \\n           a \").concat(a/2,\",\").concat(a/2,\" 0 1,0 \").concat(a,\",0 \\n           a \").concat(a/2,\",\").concat(a/2,\" 0 1,0 -\").concat(a,\",0\")}return s}},{key:\"drawMarkerShape\",value:function(t,e,i,a,s){var r=this.drawPath({d:this.getMarkerPath(t,e,i,a,s),stroke:s.pointStrokeColor,strokeDashArray:s.pointStrokeDashArray,strokeWidth:s.pointStrokeWidth,fill:s.pointFillColor,fillOpacity:s.pointFillOpacity,strokeOpacity:s.pointStrokeOpacity});return r.attr({cx:t,cy:e,shape:s.shape,class:s.class?s.class:\"\"}),r}},{key:\"drawMarker\",value:function(t,e,i){t=t||0;var a=i.pSize||0;return v.isNumber(e)||(a=0,e=0),this.drawMarkerShape(t,e,null==i?void 0:i.shape,a,u(u({},i),\"line\"===i.shape||\"plus\"===i.shape||\"cross\"===i.shape?{pointStrokeColor:i.pointFillColor,pointStrokeOpacity:i.pointFillOpacity}:{}))}},{key:\"pathMouseEnter\",value:function(t,e){var i=this.w,a=new Li(this.ctx),s=parseInt(t.node.getAttribute(\"index\"),10),r=parseInt(t.node.getAttribute(\"j\"),10);if(\"function\"==typeof i.config.chart.events.dataPointMouseEnter&&i.config.chart.events.dataPointMouseEnter(e,this.ctx,{seriesIndex:s,dataPointIndex:r,w:i}),this.ctx.events.fireEvent(\"dataPointMouseEnter\",[e,this.ctx,{seriesIndex:s,dataPointIndex:r,w:i}]),(\"none\"===i.config.states.active.filter.type||\"true\"!==t.node.getAttribute(\"selected\"))&&\"none\"!==i.config.states.hover.filter.type&&!i.globals.isTouchDevice){var n=i.config.states.hover.filter;a.applyFilter(t,s,n.type)}}},{key:\"pathMouseLeave\",value:function(t,e){var i=this.w,a=new Li(this.ctx),s=parseInt(t.node.getAttribute(\"index\"),10),r=parseInt(t.node.getAttribute(\"j\"),10);\"function\"==typeof i.config.chart.events.dataPointMouseLeave&&i.config.chart.events.dataPointMouseLeave(e,this.ctx,{seriesIndex:s,dataPointIndex:r,w:i}),this.ctx.events.fireEvent(\"dataPointMouseLeave\",[e,this.ctx,{seriesIndex:s,dataPointIndex:r,w:i}]),\"none\"!==i.config.states.active.filter.type&&\"true\"===t.node.getAttribute(\"selected\")||\"none\"!==i.config.states.hover.filter.type&&a.getDefaultFilter(t,s)}},{key:\"pathMouseDown\",value:function(t,e){var i=this.w,a=new Li(this.ctx),s=parseInt(t.node.getAttribute(\"index\"),10),r=parseInt(t.node.getAttribute(\"j\"),10),n=\"false\";if(\"true\"===t.node.getAttribute(\"selected\")){if(t.node.setAttribute(\"selected\",\"false\"),i.globals.selectedDataPoints[s].indexOf(r)>-1){var o=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.find(\".apexcharts-series path:not(.apexcharts-decoration-element)\"),h=i.globals.dom.Paper.find(\".apexcharts-series circle:not(.apexcharts-decoration-element), .apexcharts-series rect:not(.apexcharts-decoration-element)\"),c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute(\"selected\",\"false\"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute(\"selected\",\"true\"),n=\"true\",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if(\"true\"===n){var d=i.config.states.active.filter;if(\"none\"!==d)a.applyFilter(t,s,d.type);else if(\"none\"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var u=i.config.states.hover.filter;a.applyFilter(t,s,u.type)}}else if(\"none\"!==i.config.states.active.filter.type)if(\"none\"===i.config.states.hover.filter.type||i.globals.isTouchDevice)a.getDefaultFilter(t,s);else{u=i.config.states.hover.filter;a.applyFilter(t,s,u.type)}\"function\"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent(\"dataPointSelection\",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:\"rotateAroundCenter\",value:function(t){var e={};return t&&\"function\"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:\"getTextRects\",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,n=this.drawText({x:-200,y:-200,text:t,textAnchor:\"start\",fontSize:e,fontFamily:i,foreColor:\"#fff\",opacity:0});a&&n.attr(\"transform\",a),r.globals.dom.Paper.add(n);var o=n.bbox();return s||(o=n.node.getBoundingClientRect()),n.remove(),{width:o.width,height:o.height}}},{key:\"placeTextWithEllipsis\",value:function(t,e,i){if(\"function\"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+\"...\");t.textContent=\".\"}}}],[{key:\"setAttrs\",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),Pi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"getStackedSeriesTotals\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a<e.globals.series[e.globals.maxValsInArrayIndex].length;a++){for(var s=0,r=0;r<e.globals.series.length;r++)void 0!==e.globals.series[r][a]&&-1===t.indexOf(r)&&(s+=e.globals.series[r][a]);i.push(s)}return i}},{key:\"getSeriesTotalByIndex\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:\"getStackedSeriesTotalsByGroups\",value:function(){var t=this,e=this.w,i=[];return e.globals.seriesGroups.forEach((function(a){var s=[];e.config.series.forEach((function(t,i){a.indexOf(e.globals.seriesNames[i])>-1&&s.push(i)}));var r=e.globals.series.map((function(t,e){return-1===s.indexOf(e)?e:-1})).filter((function(t){return-1!==t}));i.push(t.getStackedSeriesTotals(r))})),i}},{key:\"setSeriesYAxisMappings\",value:function(){var t=this.w.globals,e=this.w.config,i=[],a=[],s=[],r=t.series.length>e.yaxis.length||e.yaxis.some((function(t){return Array.isArray(t.seriesName)}));e.series.forEach((function(t,e){s.push(e),a.push(null)})),e.yaxis.forEach((function(t,e){i[e]=[]}));var n=[];e.yaxis.forEach((function(t,a){var o=!1;if(t.seriesName){var l=[];Array.isArray(t.seriesName)?l=t.seriesName:l.push(t.seriesName),l.forEach((function(t){e.series.forEach((function(e,n){if(e.name===t){var l=n;a===n||r?!r||s.indexOf(n)>-1?i[a].push([a,n]):console.warn(\"Series '\"+e.name+\"' referenced more than once in what looks like the new style. That is, when using either seriesName: [], or when there are more series than yaxes.\"):(i[n].push([n,a]),l=a),o=!0,-1!==(l=s.indexOf(l))&&s.splice(l,1)}}))}))}o||n.push(a)})),i=i.map((function(t,e){var i=[];return t.forEach((function(t){a[t[1]]=t[0],i.push(t[1])})),i}));for(var o=e.yaxis.length-1,l=0;l<n.length&&(o=n[l],i[o]=[],s);l++){var h=s[0];s.shift(),i[o].push(h),a[h]=o}s.forEach((function(t){i[o].push(t),a[t]=o})),t.seriesYAxisMap=i.map((function(t){return t})),t.seriesYAxisReverseMap=a.map((function(t){return t})),t.seriesYAxisMap.forEach((function(t,i){t.forEach((function(t){e.series[t]&&void 0===e.series[t].group&&(e.series[t].group=\"apexcharts-axis-\".concat(i.toString()))}))}))}},{key:\"isSeriesNull\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:\"seriesHaveSameValues\",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:\"getCategoryLabels\",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:\"getLargestSeries\",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:\"getLargestMarkerSize\",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(t.config.markers.hover.size>0?e=t.config.markers.hover.size:e+=t.config.markers.hover.sizeOffset),t.globals.markers.largestSize=e,e}},{key:\"getSeriesTotals\",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;a<t.length;a++)i+=t[a];else i+=t;return i}))}},{key:\"getSeriesTotalsXRange\",value:function(t,e){var i=this.w;return i.globals.series.map((function(a,s){for(var r=0,n=0;n<a.length;n++)i.globals.seriesX[s][n]>t&&i.globals.seriesX[s][n]<e&&(r+=a[n]);return r}))}},{key:\"getPercentSeries\",value:function(){var t=this.w;t.globals.seriesPercent=t.globals.series.map((function(e,i){var a=[];if(Array.isArray(e))for(var s=0;s<e.length;s++){var r=t.globals.stackedSeriesTotals[s],n=0;r&&(n=100*e[s]/r),a.push(n)}else{var o=100*e/t.globals.seriesTotals.reduce((function(t,e){return t+e}),0);a.push(o)}return a}))}},{key:\"getCalculatedRatios\",value:function(){var t,e,i,a=this,s=this.w,r=s.globals,n=[],o=0,l=[],h=.1,c=0;if(r.yRange=[],r.isMultipleYAxis)for(var d=0;d<r.minYArr.length;d++)r.yRange.push(Math.abs(r.minYArr[d]-r.maxYArr[d])),l.push(0);else r.yRange.push(Math.abs(r.minY-r.maxY));r.xRange=Math.abs(r.maxX-r.minX),r.zRange=Math.abs(r.maxZ-r.minZ);for(var u=0;u<r.yRange.length;u++)n.push(r.yRange[u]/r.gridHeight);if(e=r.xRange/r.gridWidth,t=r.yRange/r.gridWidth,i=r.xRange/r.gridHeight,(o=r.zRange/r.gridHeight*16)||(o=1),r.minY!==Number.MIN_VALUE&&0!==Math.abs(r.minY)&&(r.hasNegs=!0),s.globals.seriesYAxisReverseMap.length>0){var g=function(t,e){var i=s.config.yaxis[s.globals.seriesYAxisReverseMap[e]],r=t<0?-1:1;return t=Math.abs(t),i.logarithmic&&(t=a.getBaseLog(i.logBase,t)),-r*t/n[e]};if(r.isMultipleYAxis){l=[];for(var p=0;p<n.length;p++)l.push(g(r.minYArr[p],p))}else(l=[]).push(g(r.minY,0)),r.minY!==Number.MIN_VALUE&&0!==Math.abs(r.minY)&&(h=-r.minY/t,c=r.minX/e)}else(l=[]).push(0),h=0,c=0;return{yRatio:n,invertedYRatio:t,zRatio:o,xRatio:e,invertedXRatio:i,baseLineInvertedY:h,baseLineY:l,baseLineX:c}}},{key:\"getLogSeries\",value:function(t){var e=this,i=this.w;return i.globals.seriesLog=t.map((function(t,a){var s=i.globals.seriesYAxisReverseMap[a];return i.config.yaxis[s]&&i.config.yaxis[s].logarithmic?t.map((function(t){return null===t?null:e.getLogVal(i.config.yaxis[s].logBase,t,a)})):t})),i.globals.invalidLogScale?t:i.globals.seriesLog}},{key:\"getLogValAtSeriesIndex\",value:function(t,e){if(null===t)return null;var i=this.w,a=i.globals.seriesYAxisReverseMap[e];return i.config.yaxis[a]&&i.config.yaxis[a].logarithmic?this.getLogVal(i.config.yaxis[a].logBase,t,e):t}},{key:\"getBaseLog\",value:function(t,e){return Math.log(e)/Math.log(t)}},{key:\"getLogVal\",value:function(t,e,i){if(e<=0)return 0;var a=this.w,s=0===a.globals.minYArr[i]?-1:this.getBaseLog(t,a.globals.minYArr[i]),r=(0===a.globals.maxYArr[i]?0:this.getBaseLog(t,a.globals.maxYArr[i]))-s;return e<1?e/r:(this.getBaseLog(t,e)-s)/r}},{key:\"getLogYRatios\",value:function(t){var e=this,i=this.w,a=this.w.globals;return a.yLogRatio=t.slice(),a.logYRange=a.yRange.map((function(t,s){var r=i.globals.seriesYAxisReverseMap[s];if(i.config.yaxis[r]&&e.w.config.yaxis[r].logarithmic){var n,o=-Number.MAX_VALUE,l=Number.MIN_VALUE;return a.seriesLog.forEach((function(t,e){t.forEach((function(t){i.config.yaxis[e]&&i.config.yaxis[e].logarithmic&&(o=Math.max(t,o),l=Math.min(t,l))}))})),n=Math.pow(a.yRange[s],Math.abs(l-o)/a.yRange[s]),a.yLogRatio[s]=n/a.gridHeight,n}})),a.invalidLogScale?t.slice():a.yLogRatio}},{key:\"drawSeriesByGroup\",value:function(t,e,i,a){var s=this.w,r=[];return t.series.length>0&&e.forEach((function(e){var n=[],o=[];t.i.forEach((function(i,a){s.config.series[i].group===e&&(n.push(t.series[a]),o.push(i))})),n.length>0&&r.push(a.draw(n,i,o))})),r}}],[{key:\"checkComboSeries\",value:function(t,e){var i=!1,a=0,s=0;return void 0===e&&(e=\"line\"),t.length&&void 0!==t[0].type&&t.forEach((function(t){\"bar\"!==t.type&&\"column\"!==t.type&&\"candlestick\"!==t.type&&\"boxPlot\"!==t.type||a++,void 0!==t.type&&t.type!==e&&s++})),s>0&&(i=!0),{comboBarCount:a,comboCharts:i}}},{key:\"extendArrayProps\",value:function(t,e,i){var a,s,r,n,o,l;(null!==(a=e)&&void 0!==a&&a.yaxis&&(e=t.extendYAxis(e,i)),null!==(s=e)&&void 0!==s&&s.annotations)&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),null!==(r=e)&&void 0!==r&&null!==(n=r.annotations)&&void 0!==n&&n.xaxis&&(e=t.extendXAxisAnnotations(e)),null!==(o=e)&&void 0!==o&&null!==(l=o.annotations)&&void 0!==l&&l.points&&(e=t.extendPointAnnotations(e)));return e}}]),t}(),Ii=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e}return s(t,[{key:\"setOrientations\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if(\"vertical\"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='\".concat(a,\"']\"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute(\"x\",parseFloat(s.getAttribute(\"x\"))-r.height+4);var n=\"top\"===t.label.position?r.width:-r.width;s.setAttribute(\"y\",parseFloat(s.getAttribute(\"y\"))+n);var o=this.annoCtx.graphics.rotateAroundCenter(s),l=o.x,h=o.y;s.setAttribute(\"transform\",\"rotate(-90 \".concat(l,\" \").concat(h,\")\"))}}}},{key:\"addBackgroundToAnno\",value:function(t,e){var i=this.w;if(!t||!e.label.text||!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(\".apexcharts-grid\").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding,n=r.left,o=r.right,l=r.top,h=r.bottom;if(\"vertical\"===e.label.orientation){var c=[n,o,l,h];l=c[0],h=c[1],n=c[2],o=c[3]}var d=s.left-a.left-n,u=s.top-a.top-l,g=this.annoCtx.graphics.drawRect(d-i.globals.barPadForNumericAxis,u,s.width+n+o,s.height+l+h,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&g.node.classList.add(e.id),g}},{key:\"annotationsBackground\",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations .apexcharts-\").concat(s,\"-annotation-label[rel='\").concat(a,\"']\"));if(r){var n=r.parentNode,o=t.addBackgroundToAnno(r,i);o&&(n.insertBefore(o.node,r),i.label.mouseEnter&&o.node.addEventListener(\"mouseenter\",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&o.node.addEventListener(\"mouseleave\",i.label.mouseLeave.bind(t,i)),i.label.click&&o.node.addEventListener(\"click\",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.forEach((function(t,e){return i(t,e,\"xaxis\")})),e.config.annotations.yaxis.forEach((function(t,e){return i(t,e,\"yaxis\")})),e.config.annotations.points.forEach((function(t,e){return i(t,e,\"point\")}))}},{key:\"getY1Y2\",value:function(t,e){var i,a=this.w,s=\"y1\"===t?e.y:e.y2,r=!1;if(this.annoCtx.invertAxis){var n=a.config.xaxis.convertedCatToNumeric?a.globals.categoryLabels:a.globals.labels,o=n.indexOf(s),l=a.globals.dom.baseEl.querySelector(\".apexcharts-yaxis-texts-g text:nth-child(\".concat(o+1,\")\"));i=l?parseFloat(l.getAttribute(\"y\")):(a.globals.gridHeight/n.length-1)*(o+1)-a.globals.barHeight,void 0!==e.seriesIndex&&a.globals.barHeight&&(i-=a.globals.barHeight/2*(a.globals.series.length-1)-a.globals.barHeight*e.seriesIndex)}else{var h,c=a.globals.seriesYAxisMap[e.yAxisIndex][0],d=a.config.yaxis[e.yAxisIndex].logarithmic?new Pi(this.annoCtx.ctx).getLogVal(a.config.yaxis[e.yAxisIndex].logBase,s,c)/a.globals.yLogRatio[c]:(s-a.globals.minYArr[c])/(a.globals.yRange[c]/a.globals.gridHeight);i=a.globals.gridHeight-Math.min(Math.max(d,0),a.globals.gridHeight),r=d>a.globals.gridHeight||d<0,!e.marker||void 0!==e.y&&null!==e.y||(i=0),null!==(h=a.config.yaxis[e.yAxisIndex])&&void 0!==h&&h.reversed&&(i=d)}return\"string\"==typeof s&&s.includes(\"px\")&&(i=parseFloat(s)),{yP:i,clipped:r}}},{key:\"getX1X2\",value:function(t,e){var i=this.w,a=\"x1\"===t?e.x:e.x2,s=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,r=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,n=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,o=!1,l=this.annoCtx.inversedReversedAxis?(r-a)/(n/i.globals.gridWidth):(a-s)/(n/i.globals.gridWidth);return\"category\"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||i.config.chart.sparkline.enabled||(l=this.getStringX(a)),\"string\"==typeof a&&a.includes(\"px\")&&(l=parseFloat(a)),null==a&&e.marker&&(l=i.globals.gridWidth),void 0!==e.seriesIndex&&i.globals.barWidth&&!this.annoCtx.invertAxis&&(l-=i.globals.barWidth/2*(i.globals.series.length-1)-i.globals.barWidth*e.seriesIndex),l>i.globals.gridWidth?(l=i.globals.gridWidth,o=!0):l<0&&(l=0,o=!0),{x:l,clipped:o}}},{key:\"getStringX\",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.map((function(t){return Array.isArray(t)?t.join(\" \"):t})).indexOf(t),s=e.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-texts-g text:nth-child(\".concat(a+1,\")\"));return s&&(i=parseFloat(s.getAttribute(\"x\"))),i}}]),t}(),Ti=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new Ii(this.annoCtx)}return s(t,[{key:\"addXaxisAnnotation\",value:function(t,e,i){var a,s=this.w,r=this.helpers.getX1X2(\"x1\",t),n=r.x,o=r.clipped,l=!0,h=t.label.text,c=t.strokeDashArray;if(v.isNumber(n)){if(null===t.x2||void 0===t.x2){if(!o){var d=this.annoCtx.graphics.drawLine(n+t.offsetX,0+t.offsetY,n+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,c,t.borderWidth);e.appendChild(d.node),t.id&&d.node.classList.add(t.id)}}else{var u=this.helpers.getX1X2(\"x2\",t);if(a=u.x,l=u.clipped,a<n){var g=n;n=a,a=g}var p=this.annoCtx.graphics.drawRect(n+t.offsetX,0+t.offsetY,a-n,s.globals.gridHeight+t.offsetY,0,t.fillColor,t.opacity,1,t.borderColor,c);p.node.classList.add(\"apexcharts-annotation-rect\"),p.attr(\"clip-path\",\"url(#gridRectMask\".concat(s.globals.cuid,\")\")),e.appendChild(p.node),t.id&&p.node.classList.add(t.id)}if(!o||!l){var f=this.annoCtx.graphics.getTextRects(h,parseFloat(t.label.style.fontSize)),x=\"top\"===t.label.position?4:\"center\"===t.label.position?s.globals.gridHeight/2+(\"vertical\"===t.label.orientation?f.width/2:0):s.globals.gridHeight,b=this.annoCtx.graphics.drawText({x:n+t.label.offsetX,y:x+t.label.offsetY-(\"vertical\"===t.label.orientation?\"top\"===t.label.position?f.width/2-12:-f.width/2:0),text:h,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:\"apexcharts-xaxis-annotation-label \".concat(t.label.style.cssClass,\" \").concat(t.id?t.id:\"\")});b.attr({rel:i}),e.appendChild(b.node),this.annoCtx.helpers.setOrientations(t,i)}}}},{key:\"drawXAxisAnnotations\",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:\"apexcharts-xaxis-annotations\"});return e.config.annotations.xaxis.map((function(e,a){t.addXaxisAnnotation(e,i.node,a)})),i}}]),t}(),zi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return s(t,[{key:\"isValidDate\",value:function(t){return\"number\"!=typeof t&&!isNaN(this.parseDate(t))}},{key:\"getTimeStamp\",value:function(t){return Date.parse(t)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toISOString().substr(0,25)).getTime():new Date(t).getTime():t}},{key:\"getDate\",value:function(t){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toUTCString()):new Date(t)}},{key:\"parseDate\",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getTimeStamp(t);var i=Date.parse(t.replace(/-/g,\"/\").replace(/[a-z]+/gi,\" \"));return i=this.getTimeStamp(i)}},{key:\"parseDateWithTimezone\",value:function(t){return Date.parse(t.replace(/-/g,\"/\").replace(/[a-z]+/gi,\" \"))}},{key:\"formatDate\",value:function(t,e){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=[\"\\0\"].concat(f(i.months)),r=[\"\\x01\"].concat(f(i.shortMonths)),n=[\"\\x02\"].concat(f(i.days)),o=[\"\\x03\"].concat(f(i.shortDays));function l(t,e){var i=t+\"\";for(e=e||2;i.length<e;)i=\"0\"+i;return i}var h=a?t.getUTCFullYear():t.getFullYear();e=(e=(e=e.replace(/(^|[^\\\\])yyyy+/g,\"$1\"+h)).replace(/(^|[^\\\\])yy/g,\"$1\"+h.toString().substr(2,2))).replace(/(^|[^\\\\])y/g,\"$1\"+h);var c=(a?t.getUTCMonth():t.getMonth())+1;e=(e=(e=(e=e.replace(/(^|[^\\\\])MMMM+/g,\"$1\"+s[0])).replace(/(^|[^\\\\])MMM/g,\"$1\"+r[0])).replace(/(^|[^\\\\])MM/g,\"$1\"+l(c))).replace(/(^|[^\\\\])M/g,\"$1\"+c);var d=a?t.getUTCDate():t.getDate();e=(e=(e=(e=e.replace(/(^|[^\\\\])dddd+/g,\"$1\"+n[0])).replace(/(^|[^\\\\])ddd/g,\"$1\"+o[0])).replace(/(^|[^\\\\])dd/g,\"$1\"+l(d))).replace(/(^|[^\\\\])d/g,\"$1\"+d);var u=a?t.getUTCHours():t.getHours(),g=u>12?u-12:0===u?12:u;e=(e=(e=(e=e.replace(/(^|[^\\\\])HH+/g,\"$1\"+l(u))).replace(/(^|[^\\\\])H/g,\"$1\"+u)).replace(/(^|[^\\\\])hh+/g,\"$1\"+l(g))).replace(/(^|[^\\\\])h/g,\"$1\"+g);var p=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\\\])mm+/g,\"$1\"+l(p))).replace(/(^|[^\\\\])m/g,\"$1\"+p);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\\\])ss+/g,\"$1\"+l(x))).replace(/(^|[^\\\\])s/g,\"$1\"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\\\])fff+/g,\"$1\"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\\\])ff/g,\"$1\"+l(b)),b=Math.round(b/10);var m=u<12?\"AM\":\"PM\";e=(e=(e=e.replace(/(^|[^\\\\])f/g,\"$1\"+b)).replace(/(^|[^\\\\])TT+/g,\"$1\"+m)).replace(/(^|[^\\\\])T/g,\"$1\"+m.charAt(0));var v=m.toLowerCase();e=(e=e.replace(/(^|[^\\\\])tt+/g,\"$1\"+v)).replace(/(^|[^\\\\])t/g,\"$1\"+v.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?\"Z\":y>0?\"+\":\"-\";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+\":\"+l(k)}e=e.replace(/(^|[^\\\\])K/g,\"$1\"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(n[0],\"g\"),n[A])).replace(new RegExp(o[0],\"g\"),o[A])).replace(new RegExp(s[0],\"g\"),s[c])).replace(new RegExp(r[0],\"g\"),r[c])).replace(/\\\\(.)/g,\"$1\")}},{key:\"getTimeUnitsfromTimestamp\",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),n=this.formatDate(s,\"yyyy MM dd HH mm ss fff\").split(\" \"),o=this.formatDate(r,\"yyyy MM dd HH mm ss fff\").split(\" \");return{minMillisecond:parseInt(n[6],10),maxMillisecond:parseInt(o[6],10),minSecond:parseInt(n[5],10),maxSecond:parseInt(o[5],10),minMinute:parseInt(n[4],10),maxMinute:parseInt(o[4],10),minHour:parseInt(n[3],10),maxHour:parseInt(o[3],10),minDate:parseInt(n[2],10),maxDate:parseInt(o[2],10),minMonth:parseInt(n[1],10)-1,maxMonth:parseInt(o[1],10)-1,minYear:parseInt(n[0],10),maxYear:parseInt(o[0],10)}}},{key:\"isLeapYear\",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:\"calculcateLastDaysOfMonth\",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:\"determineDaysOfYear\",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:\"determineRemainingDaysOfYear\",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:\"determineDaysOfMonths\",value:function(t,e){var i=30;switch(t=v.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),Xi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.tooltipKeyFormat=\"dd MMM\"}return s(t,[{key:\"xLabelFormat\",value:function(t,e,i,a){var s=this.w;if(\"datetime\"===s.config.xaxis.type&&void 0===s.config.xaxis.labels.formatter&&void 0===s.config.tooltip.x.formatter){var r=new zi(this.ctx);return r.formatDate(r.getDate(e),s.config.tooltip.x.format)}return t(e,i,a)}},{key:\"defaultGeneralFormatter\",value:function(t){return Array.isArray(t)?t.map((function(t){return t})):t}},{key:\"defaultYFormatter\",value:function(t,e,i){var a=this.w;if(v.isNumber(t))if(0!==a.globals.yValueDecimal)t=t.toFixed(void 0!==e.decimalsInFloat?e.decimalsInFloat:a.globals.yValueDecimal);else{var s=t.toFixed(0);t=t==s?s:t.toFixed(1)}return t}},{key:\"setLabelFormatters\",value:function(){var t=this,e=this.w;return e.globals.xaxisTooltipFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttKeyFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttZFormatter=function(t){return t},e.globals.legendFormatter=function(e){return t.defaultGeneralFormatter(e)},void 0!==e.config.xaxis.labels.formatter?e.globals.xLabelFormatter=e.config.xaxis.labels.formatter:e.globals.xLabelFormatter=function(t){if(v.isNumber(t)){if(!e.config.xaxis.convertedCatToNumeric&&\"numeric\"===e.config.xaxis.type){if(v.isNumber(e.config.xaxis.decimalsInFloat))return t.toFixed(e.config.xaxis.decimalsInFloat);var i=e.globals.maxX-e.globals.minX;return i>0&&i<100?t.toFixed(1):t.toFixed(0)}if(e.globals.isBarHorizontal)if(e.globals.maxY-e.globals.minYArr<4)return t.toFixed(1);return t.toFixed(0)}return t},\"function\"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,\"function\"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:\"heatmapLabelFormatters\",value:function(){var t=this.w;if(\"heatmap\"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),Ri=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"getLabel\",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"12px\",n=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],o=this.w,l=void 0===t[a]?\"\":t[a],h=l,c=o.globals.xLabelFormatter,d=o.config.xaxis.labels.formatter,u=!1,g=new Xi(this.ctx),p=l;n&&(h=g.xLabelFormat(c,l,p,{i:a,dateFormatter:new zi(this.ctx).formatDate,w:o}),void 0!==d&&(h=d(l,t[a],{i:a,dateFormatter:new zi(this.ctx).formatDate,w:o})));var f,x;e.length>0?(f=e[a].unit,x=null,e.forEach((function(t){\"month\"===t.unit?x=\"year\":\"day\"===t.unit?x=\"month\":\"hour\"===t.unit?x=\"day\":\"minute\"===t.unit&&(x=\"hour\")})),u=x===f,i=e[a].position,h=e[a].value):\"datetime\"===o.config.xaxis.type&&void 0===d&&(h=\"\"),void 0===h&&(h=\"\"),h=Array.isArray(h)?h:h.toString();var b=new Mi(this.ctx),m={};m=o.globals.rotateXLabels&&n?b.getTextRects(h,parseInt(r,10),null,\"rotate(\".concat(o.config.xaxis.labels.rotate,\" 0 0)\"),!1):b.getTextRects(h,parseInt(r,10));var v=!o.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(h)&&(\"NaN\"===String(h)||s.indexOf(h)>=0&&v)&&(h=\"\"),{x:i,text:h,textRect:m,isBold:u}}},{key:\"checkLabelBasedOnTickamount\",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return\"dataPoints\"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=\"\"),e}},{key:\"checkForOverflowingLabels\",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=\"\"),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=\"\"),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var n=s[s.length-1];e.x<n.textRect.width/(r.globals.rotateXLabels?Math.abs(r.config.xaxis.labels.rotate)/12:1.01)+n.x&&(e.text=\"\")}return e}},{key:\"checkForReversedLabels\",value:function(t,e){var i=this.w;return i.config.yaxis[t]&&i.config.yaxis[t].reversed&&e.reverse(),e}},{key:\"yAxisAllSeriesCollapsed\",value:function(t){var e=this.w.globals;return!e.seriesYAxisMap[t].some((function(t){return-1===e.collapsedSeriesIndices.indexOf(t)}))}},{key:\"translateYAxisIndex\",value:function(t){var e=this.w,i=e.globals,a=e.config.yaxis;return i.series.length>a.length||a.some((function(t){return Array.isArray(t.seriesName)}))?t:i.seriesYAxisReverseMap[t]}},{key:\"isYAxisHidden\",value:function(t){var e=this.w,i=e.config.yaxis[t];if(!i.show||this.yAxisAllSeriesCollapsed(t))return!0;if(!i.showForNullSeries){var a=e.globals.seriesYAxisMap[t],s=new Pi(this.ctx);return a.every((function(t){return s.isSeriesNull(t)}))}return!1}},{key:\"getYAxisForeColor\",value:function(t,e){var i=this.w;return Array.isArray(t)&&i.globals.yAxisScale[e]&&this.ctx.theme.pushExtraColors(t,i.globals.yAxisScale[e].result.length,!1),t}},{key:\"drawYAxisTicks\",value:function(t,e,i,a,s,r,n){var o=this.w,l=new Mi(this.ctx),h=o.globals.translateY+o.config.yaxis[s].labels.offsetY;if(o.globals.isBarHorizontal?h=0:\"heatmap\"===o.config.chart.type&&(h+=r/2),a.show&&e>0){!0===o.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=l.drawLine(t+i.offsetX-a.width+a.offsetX,h+a.offsetY,t+i.offsetX+a.offsetX,h+a.offsetY,a.color);n.add(d),h+=r}}}}]),t}(),Ei=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new Ii(this.annoCtx),this.axesUtils=new Ri(this.annoCtx)}return s(t,[{key:\"addYaxisAnnotation\",value:function(t,e,i){var a,s=this.w,r=t.strokeDashArray,n=this.helpers.getY1Y2(\"y1\",t),o=n.yP,l=n.clipped,h=!0,c=!1,d=t.label.text;if(null===t.y2||void 0===t.y2){if(!l){c=!0;var u=this.annoCtx.graphics.drawLine(0+t.offsetX,o+t.offsetY,this._getYAxisAnnotationWidth(t),o+t.offsetY,t.borderColor,r,t.borderWidth);e.appendChild(u.node),t.id&&u.node.classList.add(t.id)}}else{if(a=(n=this.helpers.getY1Y2(\"y2\",t)).yP,h=n.clipped,a>o){var g=o;o=a,a=g}if(!l||!h){c=!0;var p=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),o-a,0,t.fillColor,t.opacity,1,t.borderColor,r);p.node.classList.add(\"apexcharts-annotation-rect\"),p.attr(\"clip-path\",\"url(#gridRectMask\".concat(s.globals.cuid,\")\")),e.appendChild(p.node),t.id&&p.node.classList.add(t.id)}}if(c){var f=\"right\"===t.label.position?s.globals.gridWidth:\"center\"===t.label.position?s.globals.gridWidth/2:0,x=this.annoCtx.graphics.drawText({x:f+t.label.offsetX,y:(null!=a?a:o)+t.label.offsetY-3,text:d,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:\"apexcharts-yaxis-annotation-label \".concat(t.label.style.cssClass,\" \").concat(t.id?t.id:\"\")});x.attr({rel:i}),e.appendChild(x.node)}}},{key:\"_getYAxisAnnotationWidth\",value:function(t){var e=this.w;e.globals.gridWidth;return(t.width.indexOf(\"%\")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:\"drawYAxisAnnotations\",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:\"apexcharts-yaxis-annotations\"});return e.config.annotations.yaxis.forEach((function(e,a){e.yAxisIndex=t.axesUtils.translateYAxisIndex(e.yAxisIndex),t.axesUtils.isYAxisHidden(e.yAxisIndex)&&t.axesUtils.yAxisAllSeriesCollapsed(e.yAxisIndex)||t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),Yi=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new Ii(this.annoCtx)}return s(t,[{key:\"addPointAnnotation\",value:function(t,e,i){if(!(this.w.globals.collapsedSeriesIndices.indexOf(t.seriesIndex)>-1)){var a=this.helpers.getX1X2(\"x1\",t),s=a.x,r=a.clipped,n=(a=this.helpers.getY1Y2(\"y1\",t)).yP,o=a.clipped;if(v.isNumber(s)&&!o&&!r){var l={pSize:t.marker.size,pointStrokeWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:\"apexcharts-point-annotation-marker \".concat(t.marker.cssClass,\" \").concat(t.id?t.id:\"\")},h=this.annoCtx.graphics.drawMarker(s+t.marker.offsetX,n+t.marker.offsetY,l);e.appendChild(h.node);var c=t.label.text?t.label.text:\"\",d=this.annoCtx.graphics.drawText({x:s+t.label.offsetX,y:n+t.label.offsetY-t.marker.size-parseFloat(t.label.style.fontSize)/1.6,text:c,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:\"apexcharts-point-annotation-label \".concat(t.label.style.cssClass,\" \").concat(t.id?t.id:\"\")});if(d.attr({rel:i}),e.appendChild(d.node),t.customSVG.SVG){var u=this.annoCtx.graphics.group({class:\"apexcharts-point-annotations-custom-svg \"+t.customSVG.cssClass});u.attr({transform:\"translate(\".concat(s+t.customSVG.offsetX,\", \").concat(n+t.customSVG.offsetY,\")\")}),u.node.innerHTML=t.customSVG.SVG,e.appendChild(u.node)}if(t.image.path){var g=t.image.width?t.image.width:20,p=t.image.height?t.image.height:20;h=this.annoCtx.addImage({x:s+t.image.offsetX-g/2,y:n+t.image.offsetY-p/2,width:g,height:p,path:t.image.path,appendTo:\".apexcharts-point-annotations\"})}t.mouseEnter&&h.node.addEventListener(\"mouseenter\",t.mouseEnter.bind(this,t)),t.mouseLeave&&h.node.addEventListener(\"mouseleave\",t.mouseLeave.bind(this,t)),t.click&&h.node.addEventListener(\"click\",t.click.bind(this,t))}}}},{key:\"drawPointAnnotations\",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:\"apexcharts-point-annotations\"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var Hi={name:\"en\",options:{months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],toolbar:{exportToSVG:\"Download SVG\",exportToPNG:\"Download PNG\",exportToCSV:\"Download CSV\",menu:\"Menu\",selection:\"Selection\",selectionZoom:\"Selection Zoom\",zoomIn:\"Zoom In\",zoomOut:\"Zoom Out\",pan:\"Panning\",reset:\"Reset Zoom\"}}},Oi=function(){function t(){i(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,stepSize:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,showDuplicates:!1,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:\"11px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"},formatter:void 0},axisBorder:{show:!1,color:\"#e0e0e0\",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:\"#e0e0e0\",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:\"11px\",fontWeight:900,fontFamily:void 0,cssClass:\"\"}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:\"front\",stroke:{color:\"#b6b6b6\",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:void 0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:\"#fff\",strokeWidth:2,strokeColor:\"#333\",shape:\"circle\",offsetX:0,offsetY:0,cssClass:\"\"},label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"middle\",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:\"#c2c2c2\",borderColor:\"#c2c2c2\",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:\"100%\",yAxisIndex:0,label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"end\",position:\"right\",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:\"#c2c2c2\",borderColor:\"#c2c2c2\",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"middle\",orientation:\"vertical\",position:\"top\",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:\"\",textAnchor:\"start\",foreColor:void 0,fontSize:\"13px\",fontFamily:void 0,fontWeight:400,appendTo:\".apexcharts-annotations\",backgroundColor:\"transparent\",borderColor:\"#c2c2c2\",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return s(t,[{key:\"init\",value:function(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:\"\",locales:[Hi],defaultLocale:\"en\",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:\"#000\",opacity:.7},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:\"#373d3f\",fontFamily:\"Helvetica, Arial, sans-serif\",height:\"auto\",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,nonce:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:\"x\",fill:{color:\"#24292e\",opacity:.1},stroke:{width:1,color:\"#24292e\",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackOnlyBar:!0,stackType:\"normal\",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:\",\",headerCategory:\"category\",headerValue:\"value\",categoryFormatter:void 0,valueFormatter:void 0},png:{filename:void 0},svg:{filename:void 0},scale:void 0,width:void 0},autoSelected:\"zoom\"},type:\"line\",width:\"100%\",zoom:{enabled:!0,type:\"x\",autoScaleYaxis:!1,allowMouseWheelZoom:!0,zoomedArea:{fill:{color:\"#90CAF9\",opacity:.4},stroke:{color:\"#0D47A1\",opacity:.4,width:1}}}},plotOptions:{line:{isSlopeChart:!1,colors:{threshold:0,colorAboveThreshold:void 0,colorBelowThreshold:void 0}},area:{fillTo:\"origin\"},bar:{horizontal:!1,columnWidth:\"70%\",barHeight:\"70%\",distributed:!1,borderRadius:0,borderRadiusApplication:\"around\",borderRadiusWhenStacked:\"last\",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:\"top\",maxItems:100,hideOverflowingLabels:!0,orientation:\"horizontal\",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:\"#373d3f\",fontSize:\"12px\",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:\"#00B746\",downward:\"#EF403C\"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:\"#00E396\",lower:\"#008FFB\"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,borderRadius:4,dataLabels:{format:\"scale\"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0},seriesTitle:{show:!0,offsetY:1,offsetX:1,borderColor:\"#000\",borderWidth:1,borderRadius:2,style:{background:\"rgba(0, 0, 0, 0.6)\",color:\"#fff\",fontSize:\"12px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:6,right:6,top:2,bottom:2}}}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:\"50%\",background:\"transparent\",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:\"front\",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:\"#000\",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:\"#f2f2f2\",strokeWidth:\"97%\",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:\"#000\",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:\"16px\",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:\"14px\",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+\"%\"}},total:{show:!1,label:\"Total\",fontSize:\"16px\",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+\"%\"}}},barLabels:{enabled:!1,offsetX:0,offsetY:0,useSeriesColors:!0,fontFamily:void 0,fontWeight:600,fontSize:\"16px\",formatter:function(t){return t},onClick:void 0}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:\"65%\",background:\"transparent\",labels:{show:!1,name:{show:!0,fontSize:\"16px\",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:\"20px\",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:\"Total\",fontSize:\"16px\",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:\"#e8e8e8\"},spokes:{strokeWidth:1,connectorColors:\"#e8e8e8\"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:\"#e8e8e8\",connectorColors:\"#e8e8e8\",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:\"\"},textAnchor:\"middle\",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:\"12px\",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:\"#fff\",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:\"#fff\",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:\"#000\",opacity:.8}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:\"#000\",opacity:.8}},fill:{type:\"solid\",colors:void 0,opacity:.85,gradient:{shade:\"dark\",type:\"horizontal\",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:\"squares\",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:\"#e0e0e0\",strokeDashArray:0,position:\"back\",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:\"bottom\",horizontalAlign:\"center\",inverseOrder:!1,fontSize:\"12px\",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],clusterGroupedSeries:!0,clusterGroupedSeriesOrientation:\"vertical\",labels:{colors:void 0,useSeriesColors:!1},markers:{size:7,fillColors:void 0,strokeWidth:1,shape:void 0,offsetX:0,offsetY:0,customHTML:void 0,onClick:void 0},itemMargin:{horizontal:5,vertical:4},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:\"#fff\",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:\"circle\",offsetX:0,offsetY:0,showNullDataPoints:!0,onClick:void 0,onDblClick:void 0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:\"center\",verticalAlign:\"middle\",offsetX:0,offsetY:0,style:{color:void 0,fontSize:\"14px\",fontFamily:void 0}},responsive:[],series:void 0,states:{hover:{filter:{type:\"lighten\"}},active:{allowMultipleDataPointsSelection:!1,filter:{type:\"darken\"}}},title:{text:void 0,align:\"left\",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:\"14px\",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:\"left\",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:\"12px\",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:\"smooth\",lineCap:\"butt\",width:2,colors:void 0,dashArray:0,fill:{type:\"solid\",colors:void 0,opacity:.85,gradient:{shade:\"dark\",type:\"horizontal\",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,hideEmptySeries:!1,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:\"light\",cssClass:\"\",style:{fontSize:\"12px\",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:\"dd MMM\",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t?t+\": \":\"\"}}},z:{formatter:void 0,title:\"Size: \"},marker:{show:!0,fillColors:void 0},items:{display:\"flex\"},fixed:{enabled:!1,position:\"topRight\",offsetX:0,offsetY:0}},xaxis:{type:\"category\",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:\"12px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:\"yyyy\",month:\"MMM 'yy\",day:\"dd MMM\",hour:\"HH:mm\",minute:\"HH:mm:ss\",second:\"HH:mm:ss\"}},group:{groups:[],style:{colors:[],fontSize:\"12px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"}},axisBorder:{show:!0,color:\"#e0e0e0\",width:\"100%\",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:\"#e0e0e0\",height:6,offsetX:0,offsetY:0},stepSize:void 0,tickAmount:void 0,tickPlacement:\"on\",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:\"bottom\",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:\"12px\",fontWeight:900,fontFamily:void 0,cssClass:\"\"}},crosshairs:{show:!0,width:1,position:\"back\",opacity:.9,stroke:{color:\"#b6b6b6\",width:1,dashArray:3},fill:{type:\"solid\",color:\"#B1B9C4\",gradient:{colorFrom:\"#D8E3F0\",colorTo:\"#BED1E6\",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.8}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:\"12px\",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:\"\",palette:\"palette1\",monochrome:{enabled:!1,color:\"#008FFB\",shadeTo:\"light\",shadeIntensity:.65}}}}}]),t}(),Fi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.graphics=new Mi(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new Ii(this),this.xAxisAnnotations=new Ti(this),this.yAxisAnnotations=new Ei(this),this.pointsAnnotations=new Yi(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return s(t,[{key:\"drawAxesAnnotations\",value:function(){var t=this.w;if(t.globals.axisCharts&&t.globals.dataPoints){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],n=[i.node,e.node,a.node],o=0;o<3;o++)t.globals.dom.elGraphical.add(r[o]),!s||t.globals.resized||t.globals.dataChanged||\"scatter\"!==t.config.chart.type&&\"bubble\"!==t.config.chart.type&&t.globals.dataPoints>1&&n[o].classList.add(\"apexcharts-element-hidden\"),t.globals.delayedElements.push({el:n[o],index:0});this.helpers.annotationsBackground()}}},{key:\"drawImageAnnos\",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:\"drawTextAnnos\",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:\"addXaxisAnnotation\",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:\"addYaxisAnnotation\",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:\"addPointAnnotation\",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:\"addText\",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,n=t.foreColor,o=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,u=t.borderWidth,g=t.strokeDashArray,p=t.borderRadius,f=t.borderColor,x=t.appendTo,b=void 0===x?\".apexcharts-svg\":x,m=t.paddingLeft,v=void 0===m?4:m,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,C=t.paddingTop,S=void 0===C?2:C,L=this.w,M=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||\"start\",fontSize:o||\"12px\",fontWeight:h||\"regular\",fontFamily:l||L.config.chart.fontFamily,foreColor:n||L.config.chart.foreColor,cssClass:c}),P=L.globals.dom.baseEl.querySelector(b);P&&P.appendChild(M.node);var I=M.bbox();if(s){var T=this.graphics.drawRect(I.x-v,I.y-S,I.width+v+w,I.height+A+S,p,d||\"transparent\",1,u,f,g);P.insertBefore(T.node,M.node)}}},{key:\"addImage\",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,n=t.y,o=void 0===n?0:n,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,u=t.appendTo,g=void 0===u?\".apexcharts-svg\":u,p=i.globals.dom.Paper.image(a);p.size(h,d).move(r,o);var f=i.globals.dom.baseEl.querySelector(g);return f&&f.appendChild(p.node),p}},{key:\"addXaxisAnnotationExternal\",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"xaxis\",contextMethod:i.addXaxisAnnotation}),i}},{key:\"addYaxisAnnotationExternal\",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"yaxis\",contextMethod:i.addYaxisAnnotation}),i}},{key:\"addPointAnnotationExternal\",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"point\",contextMethod:i.addPointAnnotation}),i}},{key:\"addAnnotationExternal\",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,n=a,o=n.w,l=o.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations\")),h=l.childNodes.length+1,c=new Oi,d=Object.assign({},\"xaxis\"===s?c.xAxisAnnotation:\"yaxis\"===s?c.yAxisAnnotation:c.pointAnnotation),u=v.extend(d,e);switch(s){case\"xaxis\":this.addXaxisAnnotation(u,l,h);break;case\"yaxis\":this.addYaxisAnnotation(u,l,h);break;case\"point\":this.addPointAnnotation(u,l,h)}var g=o.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations .apexcharts-\").concat(s,\"-annotation-label[rel='\").concat(h,\"']\")),p=this.helpers.addBackgroundToAnno(g,u);return p&&l.insertBefore(p.node,g),i&&o.globals.memory.methodsToExec.push({context:n,id:u.id?u.id:v.randomId(),method:r,label:\"addAnnotation\",params:e}),a}},{key:\"clearAnnotations\",value:function(t){for(var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations\"),a=e.globals.memory.methodsToExec.length-1;a>=0;a--)\"addText\"!==e.globals.memory.methodsToExec[a].label&&\"addAnnotation\"!==e.globals.memory.methodsToExec[a].label||e.globals.memory.methodsToExec.splice(a,1);i=v.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:\"removeAnnotation\",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(\".\".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),Di=function(t){var e,i=t.isTimeline,a=t.ctx,s=t.seriesIndex,r=t.dataPointIndex,n=t.y1,o=t.y2,l=t.w,h=l.globals.seriesRangeStart[s][r],c=l.globals.seriesRangeEnd[s][r],d=l.globals.labels[r],u=l.config.series[s].name?l.config.series[s].name:\"\",g=l.globals.ttKeyFormatter,p=l.config.tooltip.y.title.formatter,f={w:l,seriesIndex:s,dataPointIndex:r,start:h,end:c};(\"function\"==typeof p&&(u=p(u,f)),null!==(e=l.config.series[s].data[r])&&void 0!==e&&e.x&&(d=l.config.series[s].data[r].x),i)||\"datetime\"===l.config.xaxis.type&&(d=new Xi(a).xLabelFormat(l.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new zi(a).formatDate,w:l}));\"function\"==typeof g&&(d=g(d,f)),Number.isFinite(n)&&Number.isFinite(o)&&(h=n,c=o);var x=\"\",b=\"\",m=l.globals.colors[s];if(void 0===l.config.tooltip.x.formatter)if(\"datetime\"===l.config.xaxis.type){var v=new zi(a);x=v.formatDate(v.getDate(h),l.config.tooltip.x.format),b=v.formatDate(v.getDate(c),l.config.tooltip.x.format)}else x=h,b=c;else x=l.config.tooltip.x.formatter(h),b=l.config.tooltip.x.formatter(c);return{start:h,end:c,startVal:x,endVal:b,ylabel:d,color:m,seriesName:u}},_i=function(t){var e=t.color,i=t.seriesName,a=t.ylabel,s=t.start,r=t.end,n=t.seriesIndex,o=t.dataPointIndex,l=t.ctx.tooltip.tooltipLabels.getFormatters(n);s=l.yLbFormatter(s),r=l.yLbFormatter(r);var h=l.yLbFormatter(t.w.globals.series[n][o]),c='<span class=\"value start-value\">\\n  '.concat(s,'\\n  </span> <span class=\"separator\">-</span> <span class=\"value end-value\">\\n  ').concat(r,\"\\n  </span>\");return'<div class=\"apexcharts-tooltip-rangebar\"><div> <span class=\"series-name\" style=\"color: '+e+'\">'+(i||\"\")+'</span></div><div> <span class=\"category\">'+a+\": </span> \"+(t.w.globals.comboCharts?\"rangeArea\"===t.w.config.series[n].type||\"rangeBar\"===t.w.config.series[n].type?c:\"<span>\".concat(h,\"</span>\"):c)+\" </div></div>\"},Ni=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:\"hideYAxis\",value:function(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text=\"\",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}},{key:\"line\",value:function(){return{dataLabels:{enabled:!1},stroke:{width:5,curve:\"straight\"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:\"sparkline\",value:function(t){this.hideYAxis();return v.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:\"slope\",value:function(){return this.hideYAxis(),{chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!0,formatter:function(t,e){var i=e.w.config.series[e.seriesIndex].name;return null!==t?i+\": \"+t:\"\"},background:{enabled:!1},offsetX:-5},grid:{xaxis:{lines:{show:!0}},yaxis:{lines:{show:!1}}},xaxis:{position:\"top\",labels:{style:{fontSize:14,fontWeight:900}},tooltip:{enabled:!1},crosshairs:{show:!1}},markers:{size:8,hover:{sizeOffset:1}},legend:{show:!1},tooltip:{shared:!1,intersect:!0,followCursor:!0},stroke:{width:5,curve:\"straight\"}}}},{key:\"bar\",value:function(){return{chart:{stacked:!1},plotOptions:{bar:{dataLabels:{position:\"center\"}}},dataLabels:{style:{colors:[\"#fff\"]},background:{enabled:!1}},stroke:{width:0,lineCap:\"square\"},fill:{opacity:.85},legend:{markers:{shape:\"square\"}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:\"between\",crosshairs:{width:\"barWidth\",position:\"back\",fill:{type:\"gradient\"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:\"funnel\",value:function(){return this.hideYAxis(),u(u({},this.bar()),{},{chart:{animations:{speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:\"around\",borderRadius:0,dataLabels:{position:\"center\"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}},{key:\"candlestick\",value:function(){var t=this;return{stroke:{width:1,colors:[\"#333\"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,[\"Open\",\"High\",\"\",\"Low\",\"Close\"],\"candlestick\")}},states:{active:{filter:{type:\"none\"}}},xaxis:{crosshairs:{width:1}}}}},{key:\"boxPlot\",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:[\"#24292e\"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,[\"Minimum\",\"Q1\",\"Median\",\"Q3\",\"Maximum\"],\"boxPlot\")}},markers:{size:7,strokeWidth:1,strokeColors:\"#111\"},xaxis:{crosshairs:{width:1}}}}},{key:\"rangeBar\",value:function(){return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:\"square\"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:\"center\"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?\"rangeBar\"===s.config.series[i].type||\"rangeArea\"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:[\"#fff\"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var e=Di(u(u({},t),{},{isTimeline:!0})),i=e.color,a=e.seriesName,s=e.ylabel,r=e.startVal,n=e.endVal;return _i(u(u({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:n}))}(t):function(t){var e=Di(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.start,n=e.end;return _i(u(u({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:n}))}(t)}},xaxis:{tickPlacement:\"between\",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:\"dumbbell\",value:function(t){var e,i;return null!==(e=t.plotOptions.bar)&&void 0!==e&&e.barHeight||(t.plotOptions.bar.barHeight=2),null!==(i=t.plotOptions.bar)&&void 0!==i&&i.columnWidth||(t.plotOptions.bar.columnWidth=2),t}},{key:\"area\",value:function(){return{stroke:{width:4,fill:{type:\"solid\",gradient:{inverseColors:!1,shade:\"light\",type:\"vertical\",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:\"gradient\",gradient:{inverseColors:!1,shade:\"light\",type:\"vertical\",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:\"rangeArea\",value:function(){return{stroke:{curve:\"straight\",width:0},fill:{type:\"solid\",opacity:.6},markers:{size:0},states:{hover:{filter:{type:\"none\"}},active:{filter:{type:\"none\"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var e=Di(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.start,n=e.end;return _i(u(u({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:n}))}(t)}}}}},{key:\"brush\",value:function(t){return v.extend(t,{chart:{toolbar:{autoSelected:\"selection\",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:\"stacked100\",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),\"bar\"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return\"number\"==typeof t&&t?t.toFixed(0)+\"%\":t}),t}},{key:\"stackedBars\",value:function(){var t=this.bar();return u(u({},t),{},{plotOptions:u(u({},t.plotOptions),{},{bar:u(u({},t.plotOptions.bar),{},{borderRadiusApplication:\"end\",borderRadiusWhenStacked:\"last\"})})})}},{key:\"convertCatToNumeric\",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:\"convertCatToNumericXaxis\",value:function(t,e,i){t.xaxis.type=\"numeric\",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return v.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return v.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||\"dataPoints\",t}},{key:\"bubble\",value:function(){return{dataLabels:{style:{colors:[\"#fff\"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:\"solid\",gradient:{shade:\"light\",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:\"scatter\",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:\"heatmap\",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:[\"#fff\"]}},stroke:{colors:[\"#fff\"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:\"top\",markers:{shape:\"square\"}},grid:{padding:{right:20}}}}},{key:\"treemap\",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:[\"#fff\"]}},stroke:{show:!0,width:2,colors:[\"#fff\"]},legend:{show:!1},fill:{opacity:1,gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:\"pie\",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},style:{colors:[\"#fff\"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:[\"#fff\"]},fill:{opacity:1,gradient:{shade:\"light\",stops:[0,100]}},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"donut\",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},style:{colors:[\"#fff\"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:[\"#fff\"]},fill:{opacity:1,gradient:{shade:\"light\",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"polarArea\",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"radar\",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:\"11px\"}},stroke:{width:2},markers:{size:5,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},xaxis:{labels:{formatter:function(t){return t},style:{colors:[\"#a8a8a8\"],fontSize:\"11px\"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:\"radialBar\",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:\"dark\",shadeIntensity:.4,inverseColors:!1,type:\"diagonal2\",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:\"right\"},tooltip:{enabled:!1,fillSeriesColor:!0},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"_getBoxTooltip\",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],n=t.globals.seriesCandleH[e][i],o=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],h=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'<div class=\"apexcharts-custom-tooltip\">\\n          '.concat(t.config.series[e].name?t.config.series[e].name:\"series-\"+(e+1),\": <strong>\").concat(t.globals.series[e][i],\"</strong>\\n        </div>\"):'<div class=\"apexcharts-tooltip-box apexcharts-tooltip-'.concat(t.config.chart.type,'\">')+\"<div>\".concat(a[0],': <span class=\"value\">')+r+\"</span></div>\"+\"<div>\".concat(a[1],': <span class=\"value\">')+n+\"</span></div>\"+(o?\"<div>\".concat(a[2],': <span class=\"value\">')+o+\"</span></div>\":\"\")+\"<div>\".concat(a[3],': <span class=\"value\">')+l+\"</span></div>\"+\"<div>\".concat(a[4],': <span class=\"value\">')+h+\"</span></div></div>\"}}]),t}(),Wi=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:\"init\",value:function(t){var e=t.responsiveOverride,i=this.opts,a=new Oi,s=new Ni(i);this.chartType=i.chart.type,i=this.extendYAxis(i),i=this.extendAnnotations(i);var r=a.init(),n={};if(i&&\"object\"===b(i)){var o,l,h,c,d,u,g,p,f,x,m={};m=-1!==[\"line\",\"area\",\"bar\",\"candlestick\",\"boxPlot\",\"rangeBar\",\"rangeArea\",\"bubble\",\"scatter\",\"heatmap\",\"treemap\",\"pie\",\"polarArea\",\"donut\",\"radar\",\"radialBar\"].indexOf(i.chart.type)?s[i.chart.type]():s.line(),null!==(o=i.plotOptions)&&void 0!==o&&null!==(l=o.bar)&&void 0!==l&&l.isFunnel&&(m=s.funnel()),i.chart.stacked&&\"bar\"===i.chart.type&&(m=s.stackedBars()),null!==(h=i.chart.brush)&&void 0!==h&&h.enabled&&(m=s.brush(m)),null!==(c=i.plotOptions)&&void 0!==c&&null!==(d=c.line)&&void 0!==d&&d.isSlopeChart&&(m=s.slope()),i.chart.stacked&&\"100%\"===i.chart.stackType&&(i=s.stacked100(i)),null!==(u=i.plotOptions)&&void 0!==u&&null!==(g=u.bar)&&void 0!==g&&g.isDumbbell&&(i=s.dumbbell(i)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(i),i.xaxis=i.xaxis||window.Apex.xaxis||{},e||(i.xaxis.convertedCatToNumeric=!1),(null!==(p=(i=this.checkForCatToNumericXAxis(this.chartType,m,i)).chart.sparkline)&&void 0!==p&&p.enabled||null!==(f=window.Apex.chart)&&void 0!==f&&null!==(x=f.sparkline)&&void 0!==x&&x.enabled)&&(m=s.sparkline(m)),n=v.extend(r,m)}var y=v.extend(n,window.Apex);return r=v.extend(y,i),r=this.handleUserInputErrors(r)}},{key:\"checkForCatToNumericXAxis\",value:function(t,e,i){var a,s,r=new Ni(i),n=(\"bar\"===t||\"boxPlot\"===t)&&(null===(a=i.plotOptions)||void 0===a||null===(s=a.bar)||void 0===s?void 0:s.horizontal),o=\"pie\"===t||\"polarArea\"===t||\"donut\"===t||\"radar\"===t||\"radialBar\"===t||\"heatmap\"===t,l=\"datetime\"!==i.xaxis.type&&\"numeric\"!==i.xaxis.type,h=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return n||o||!l||\"between\"===h||(i=r.convertCatToNumeric(i)),i}},{key:\"extendYAxis\",value:function(t,e){var i=new Oi;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=v.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[v.extend(i.yAxis,t.yaxis)]:t.yaxis=v.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name=\"series-\".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=v.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn(\"A multi-series logarithmic chart should have equal number of series and y-axes\"),t}},{key:\"extendAnnotations\",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:\"extendYAxisAnnotations\",value:function(t){var e=new Oi;return t.annotations.yaxis=v.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:\"extendXAxisAnnotations\",value:function(t){var e=new Oi;return t.annotations.xaxis=v.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:\"extendPointAnnotations\",value:function(t){var e=new Oi;return t.annotations.points=v.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:\"checkForDarkTheme\",value:function(t){t.theme&&\"dark\"===t.theme.mode&&(t.tooltip||(t.tooltip={}),\"light\"!==t.tooltip.theme&&(t.tooltip.theme=\"dark\"),t.chart.foreColor||(t.chart.foreColor=\"#f6f7f8\"),t.theme.palette||(t.theme.palette=\"palette4\"))}},{key:\"handleUserInputErrors\",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error(\"tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.\");if(\"bar\"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error(\"Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false\");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return\"bar\"!==e.chart.type&&\"rangeBar\"!==e.chart.type||e.tooltip.shared&&\"barWidth\"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width=\"tickWidth\"),\"candlestick\"!==e.chart.type&&\"boxPlot\"!==e.chart.type||e.yaxis[0].reversed&&(console.warn(\"Reversed y-axis in \".concat(e.chart.type,\" chart is not supported.\")),e.yaxis[0].reversed=!1),e}}]),t}(),Bi=function(){function t(){i(this,t)}return s(t,[{key:\"initGlobalVars\",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleM=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRange=[],t.seriesPercent=[],t.seriesGoals=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.seriesColors=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.labels=[],t.hasXaxisGroups=!1,t.groups=[],t.barGroups=[],t.lineGroups=[],t.areaGroups=[],t.hasSeriesGroups=!1,t.seriesGroups=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.lastWheelExecution=0,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0,t.multiAxisTickAmount=0}},{key:\"globalVars\",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:\"ontouchstart\"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],invalidLogScale:!1,ignoreYAxisIndexes:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:\"zoom\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:\"pan\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:\"selection\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:\"http://www.w3.org/2000/svg\",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,isSlopeChart:t.plotOptions.line.isSlopeChart,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null,niceScaleAllowedMagMsd:[[1,1,2,5,5,5,10,10,10,10,10],[1,1,2,5,5,5,10,10,10,10,10]],niceScaleDefaultTicks:[1,2,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,12,12,12,12,12,12,12,12,12,24],seriesYAxisMap:[],seriesYAxisReverseMap:[]}}},{key:\"init\",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=v.extend({},t),e.initialSeries=v.clone(t.series),e.lastXAxis=v.clone(e.initialConfig.xaxis),e.lastYAxis=v.clone(e.initialConfig.yaxis),e}}]),t}(),Gi=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:\"init\",value:function(){var t=new Wi(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new Bi).init(t)}}}]),t}(),ji=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0,this.patternIDs=[]}return s(t,[{key:\"clippedImgArea\",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,n=t.image,o=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(o=i.fill.image.width+1,l=i.fill.image.height):(o=r+1,l=r):(o=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,\"pattern\");Mi.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:\"userSpaceOnUse\",width:o+\"px\",height:l+\"px\"});var c=document.createElementNS(e.globals.SVGNS,\"image\");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,\"href\",n),Mi.setAttrs(c,{x:0,y:0,preserveAspectRatio:\"none\",width:o+\"px\",height:l+\"px\"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:\"getSeriesIndex\",value:function(t){var e=this.w,i=e.config.chart.type;return(\"bar\"===i||\"rangeBar\"===i)&&e.config.plotOptions.bar.distributed||\"heatmap\"===i||\"treemap\"===i?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:\"computeColorStops\",value:function(t,e){var i,a=this.w,s=null,n=null,o=r(t);try{for(o.s();!(i=o.n()).done;){var l=i.value;l>=e.threshold?(null===s||l>s)&&(s=l):(null===n||l<n)&&(n=l)}}catch(t){o.e(t)}finally{o.f()}null===s&&(s=e.threshold),null===n&&(n=e.threshold);var h=s-e.threshold+(e.threshold-n);0===h&&(h=1);var c=100-(e.threshold-n)/h*100;return[{offset:c=Math.max(0,Math.min(c,100)),color:e.colorAboveThreshold,opacity:a.config.fill.opacity},{offset:0,color:e.colorBelowThreshold,opacity:a.config.fill.opacity}]}},{key:\"fillPath\",value:function(t){var e,i,a,s=this.w;this.opts=t;var r,n,o,l=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var h=l.plotOptions.line.colors.colorAboveThreshold&&l.plotOptions.line.colors.colorBelowThreshold,c=this.getFillColors()[this.seriesIndex];void 0!==s.globals.seriesColors[this.seriesIndex]&&(c=s.globals.seriesColors[this.seriesIndex]),\"function\"==typeof c&&(c=c({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:s}));var d,u,g,p=t.fillType?t.fillType:this.getFillType(this.seriesIndex),x=Array.isArray(l.fill.opacity)?l.fill.opacity[this.seriesIndex]:l.fill.opacity,b=\"gradient\"===p||h;(t.color&&(c=t.color),null!==(e=s.config.series[this.seriesIndex])&&void 0!==e&&null!==(i=e.data)&&void 0!==i&&null!==(a=i[t.dataPointIndex])&&void 0!==a&&a.fillColor)&&(c=null===(d=s.config.series[this.seriesIndex])||void 0===d||null===(u=d.data)||void 0===u||null===(g=u[t.dataPointIndex])||void 0===g?void 0:g.fillColor);c||(c=\"#fff\",console.warn(\"undefined color - ApexCharts\"));var m=c;if(-1===c.indexOf(\"rgb\")?-1===c.indexOf(\"#\")?m=c:c.length<9&&(m=v.hexToRgba(c,x)):c.indexOf(\"rgba\")>-1?x=v.getOpacityFromRGBA(c):m=v.hexToRgba(v.rgb2hex(c),x),t.opacity&&(x=t.opacity),\"pattern\"===p&&(n=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:n,fillColor:c,fillOpacity:x,defaultColor:m})),b){var y=f(l.fill.gradient.colorStops)||[],w=l.fill.gradient.type;h&&(y[this.seriesIndex]=this.computeColorStops(s.globals.series[this.seriesIndex],l.plotOptions.line.colors),w=\"vertical\"),o=this.handleGradientFill({type:w,fillConfig:t.fillConfig,fillColor:c,fillOpacity:x,colorStops:y,i:this.seriesIndex})}if(\"image\"===p){var k=l.fill.image.src,A=t.patternID?t.patternID:\"\",C=\"pattern\".concat(s.globals.cuid).concat(t.seriesNumber+1).concat(A);-1===this.patternIDs.indexOf(C)&&(this.clippedImgArea({opacity:x,image:Array.isArray(k)?t.seriesNumber<k.length?k[t.seriesNumber]:k[0]:k,width:t.width?t.width:void 0,height:t.height?t.height:void 0,patternUnits:t.patternUnits,patternID:C}),this.patternIDs.push(C)),r=\"url(#\".concat(C,\")\")}else r=b?o:\"pattern\"===p?n:m;return t.solid&&(r=m),r}},{key:\"getFillType\",value:function(t){var e=this.w;return Array.isArray(e.config.fill.type)?e.config.fill.type[t]:e.config.fill.type}},{key:\"getFillColors\",value:function(){var t=this.w,e=t.config,i=this.opts,a=[];return t.globals.comboCharts?\"line\"===t.config.series[this.seriesIndex].type?Array.isArray(t.globals.stroke.colors)?a=t.globals.stroke.colors:a.push(t.globals.stroke.colors):Array.isArray(t.globals.fill.colors)?a=t.globals.fill.colors:a.push(t.globals.fill.colors):\"line\"===e.chart.type?Array.isArray(t.globals.stroke.colors)?a=t.globals.stroke.colors:a.push(t.globals.stroke.colors):Array.isArray(t.globals.fill.colors)?a=t.globals.fill.colors:a.push(t.globals.fill.colors),void 0!==i.fillColors&&(a=[],Array.isArray(i.fillColors)?a=i.fillColors.slice():a.push(i.fillColors)),a}},{key:\"handlePatternFill\",value:function(t){var e=t.fillConfig,i=t.patternFill,a=t.fillColor,s=t.fillOpacity,r=t.defaultColor,n=this.w.config.fill;e&&(n=e);var o=this.opts,l=new Mi(this.ctx),h=Array.isArray(n.pattern.strokeWidth)?n.pattern.strokeWidth[this.seriesIndex]:n.pattern.strokeWidth,c=a;Array.isArray(n.pattern.style)?i=void 0!==n.pattern.style[o.seriesNumber]?l.drawPattern(n.pattern.style[o.seriesNumber],n.pattern.width,n.pattern.height,c,h,s):r:i=l.drawPattern(n.pattern.style,n.pattern.width,n.pattern.height,c,h,s);return i}},{key:\"handleGradientFill\",value:function(t){var e=t.type,i=t.fillColor,a=t.fillOpacity,s=t.fillConfig,r=t.colorStops,n=t.i,o=this.w.config.fill;s&&(o=u(u({},o),s));var l=this.opts,h=new Mi(this.ctx),c=new v;e=e||o.gradient.type;var d,g=i,p=void 0===o.gradient.opacityFrom?a:Array.isArray(o.gradient.opacityFrom)?o.gradient.opacityFrom[n]:o.gradient.opacityFrom;g.indexOf(\"rgba\")>-1&&(p=v.getOpacityFromRGBA(g));var f=void 0===o.gradient.opacityTo?a:Array.isArray(o.gradient.opacityTo)?o.gradient.opacityTo[n]:o.gradient.opacityTo;if(void 0===o.gradient.gradientToColors||0===o.gradient.gradientToColors.length)d=\"dark\"===o.gradient.shade?c.shadeColor(-1*parseFloat(o.gradient.shadeIntensity),i.indexOf(\"rgb\")>-1?v.rgb2hex(i):i):c.shadeColor(parseFloat(o.gradient.shadeIntensity),i.indexOf(\"rgb\")>-1?v.rgb2hex(i):i);else if(o.gradient.gradientToColors[l.seriesNumber]){var x=o.gradient.gradientToColors[l.seriesNumber];d=x,x.indexOf(\"rgba\")>-1&&(f=v.getOpacityFromRGBA(x))}else d=i;if(o.gradient.gradientFrom&&(g=o.gradient.gradientFrom),o.gradient.gradientTo&&(d=o.gradient.gradientTo),o.gradient.inverseColors){var b=g;g=d,d=b}return g.indexOf(\"rgb\")>-1&&(g=v.rgb2hex(g)),d.indexOf(\"rgb\")>-1&&(d=v.rgb2hex(d)),h.drawGradient(e,g,d,p,f,l.size,o.gradient.stops,r,n)}}]),t}(),Vi=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"setGlobalMarkerSize\",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length<t.globals.series.length+1)for(var e=0;e<=t.globals.series.length;e++)void 0===t.globals.markers.size[e]&&t.globals.markers.size.push(t.globals.markers.size[0])}else t.globals.markers.size=t.config.series.map((function(e){return t.config.markers.size}))}},{key:\"plotChartMarkers\",value:function(t){var e=t.pointsPos,i=t.seriesIndex,a=t.j,s=t.pSize,r=t.alwaysDrawMarker,n=void 0!==r&&r,o=t.isVirtualPoint,l=void 0!==o&&o,h=this.w,c=i,d=e,u=null,g=new Mi(this.ctx),p=h.config.markers.discrete&&h.config.markers.discrete.length;if(Array.isArray(d.x))for(var f=0;f<d.x.length;f++){var x=void 0,b=a,m=!v.isNumber(d.y[f]);0===h.globals.markers.largestSize&&h.globals.hasNullValues&&null!==h.globals.series[c][a+1]&&!l&&(m=!0),1===a&&0===f&&(b=0),1===a&&1===f&&(b=1);var y=\"apexcharts-marker\";if(\"line\"!==h.config.chart.type&&\"area\"!==h.config.chart.type||h.globals.comboCharts||h.config.tooltip.intersect||(y+=\" no-pointer-events\"),(Array.isArray(h.config.markers.size)?h.globals.markers.size[i]>0:h.config.markers.size>0)||n||p){m||(y+=\" w\".concat(v.randomId()));var w=this.getMarkerConfig({cssClass:y,seriesIndex:i,dataPointIndex:b});if(h.config.series[c].data[b]&&(h.config.series[c].data[b].fillColor&&(w.pointFillColor=h.config.series[c].data[b].fillColor),h.config.series[c].data[b].strokeColor&&(w.pointStrokeColor=h.config.series[c].data[b].strokeColor)),void 0!==s&&(w.pSize=s),(d.x[f]<-h.globals.markers.largestSize||d.x[f]>h.globals.gridWidth+h.globals.markers.largestSize||d.y[f]<-h.globals.markers.largestSize||d.y[f]>h.globals.gridHeight+h.globals.markers.largestSize)&&(w.pSize=0),!m)(h.globals.markers.size[i]>0||n||p)&&!u&&(u=g.group({class:n||p?\"\":\"apexcharts-series-markers\"})).attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(h.globals.cuid,\")\")),(x=g.drawMarker(d.x[f],d.y[f],w)).attr(\"rel\",b),x.attr(\"j\",b),x.attr(\"index\",i),x.node.setAttribute(\"default-marker-size\",w.pSize),new Li(this.ctx).setSelectionFilter(x,i,b),this.addEvents(x),u&&u.add(x)}else void 0===h.globals.pointsArray[i]&&(h.globals.pointsArray[i]=[]),h.globals.pointsArray[i].push([d.x[f],d.y[f]])}return u}},{key:\"getMarkerConfig\",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.radius,n=void 0===r?null:r,o=t.size,l=void 0===o?null:o,h=t.strokeWidth,c=void 0===h?null:h,d=this.w,u=this.getMarkerStyle(i),g=null===l?d.globals.markers.size[i]:l,p=d.config.markers;return null!==s&&p.discrete.length&&p.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(u.pointStrokeColor=t.strokeColor,u.pointFillColor=t.fillColor,g=t.size,u.pointShape=t.shape)})),{pSize:null===n?g:n,pRadius:null!==n?n:p.radius,pointStrokeWidth:null!==c?c:Array.isArray(p.strokeWidth)?p.strokeWidth[i]:p.strokeWidth,pointStrokeColor:u.pointStrokeColor,pointFillColor:u.pointFillColor,shape:u.pointShape||(Array.isArray(p.shape)?p.shape[i]:p.shape),class:e,pointStrokeOpacity:Array.isArray(p.strokeOpacity)?p.strokeOpacity[i]:p.strokeOpacity,pointStrokeDashArray:Array.isArray(p.strokeDashArray)?p.strokeDashArray[i]:p.strokeDashArray,pointFillOpacity:Array.isArray(p.fillOpacity)?p.fillOpacity[i]:p.fillOpacity,seriesIndex:i}}},{key:\"addEvents\",value:function(t){var e=this.w,i=new Mi(this.ctx);t.node.addEventListener(\"mouseenter\",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener(\"mouseleave\",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener(\"mousedown\",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener(\"click\",e.config.markers.onClick),t.node.addEventListener(\"dblclick\",e.config.markers.onDblClick),t.node.addEventListener(\"touchstart\",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:\"getMarkerStyle\",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}]),t}(),Ui=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled}return s(t,[{key:\"draw\",value:function(t,e,i){var a=this.w,s=new Mi(this.ctx),r=i.realIndex,n=i.pointsPos,o=i.zRatio,l=i.elParent,h=s.group({class:\"apexcharts-series-markers apexcharts-series-\".concat(a.config.chart.type)});if(h.attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(a.globals.cuid,\")\")),Array.isArray(n.x))for(var c=0;c<n.x.length;c++){var d=e+1,u=!0;0===e&&0===c&&(d=0),0===e&&1===c&&(d=1);var g=a.globals.markers.size[r];if(o!==1/0){var p=a.config.plotOptions.bubble;g=a.globals.seriesZ[r][d],p.zScaling&&(g/=o),p.minBubbleRadius&&g<p.minBubbleRadius&&(g=p.minBubbleRadius),p.maxBubbleRadius&&g>p.maxBubbleRadius&&(g=p.maxBubbleRadius)}var f=n.x[c],x=n.y[c];if(g=g||0,null!==x&&void 0!==a.globals.series[r][d]||(u=!1),u){var b=this.drawPoint(f,x,g,r,d,e);h.add(b)}l.add(h)}}},{key:\"drawPoint\",value:function(t,e,i,a,s,r){var n=this.w,o=a,l=new y(this.ctx),h=new Li(this.ctx),c=new ji(this.ctx),d=new Vi(this.ctx),u=new Mi(this.ctx),g=d.getMarkerConfig({cssClass:\"apexcharts-marker\",seriesIndex:o,dataPointIndex:s,radius:\"bubble\"===n.config.chart.type||n.globals.comboCharts&&n.config.series[a]&&\"bubble\"===n.config.series[a].type?i:null}),p=c.fillPath({seriesNumber:a,dataPointIndex:s,color:g.pointFillColor,patternUnits:\"objectBoundingBox\",value:n.globals.series[a][r]}),f=u.drawMarker(t,e,g);if(n.config.series[o].data[s]&&n.config.series[o].data[s].fillColor&&(p=n.config.series[o].data[s].fillColor),f.attr({fill:p}),n.config.chart.dropShadow.enabled){var x=n.config.chart.dropShadow;h.dropShadow(f,x,a)}if(!this.initialAnim||n.globals.dataChanged||n.globals.resized)n.globals.animationEnded=!0;else{var b=n.config.chart.animations.speed;l.animateMarker(f,b,n.globals.easing,(function(){window.setTimeout((function(){l.animationCompleted(f)}),100)}))}return f.attr({rel:s,j:s,index:a,\"default-marker-size\":g.pSize}),h.setSelectionFilter(f,a,s),d.addEvents(f),f.node.classList.add(\"apexcharts-marker\"),f}},{key:\"centerTextInBubble\",value:function(t){var e=this.w;return{y:t+=parseInt(e.config.dataLabels.style.fontSize,10)/4}}}]),t}(),qi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"dataLabelsCorrection\",value:function(t,e,i,a,s,r,n){var o=this.w,l=!1,h=new Mi(this.ctx).getTextRects(i,n),c=h.width,d=h.height;e<0&&(e=0),e>o.globals.gridHeight+d&&(e=o.globals.gridHeight+d/2),void 0===o.globals.dataLabelsRects[a]&&(o.globals.dataLabelsRects[a]=[]),o.globals.dataLabelsRects[a].push({x:t,y:e,width:c,height:d});var u=o.globals.dataLabelsRects[a].length-2,g=void 0!==o.globals.lastDrawnDataLabelsIndexes[a]?o.globals.lastDrawnDataLabelsIndexes[a][o.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==o.globals.dataLabelsRects[a][u]){var p=o.globals.dataLabelsRects[a][g];(t>p.x+p.width||e>p.y+p.height||e+d<p.y||t+c<p.x)&&(l=!0)}return(0===s||r)&&(l=!0),{x:t,y:e,textRects:h,drawnextLabel:l}}},{key:\"drawDataLabel\",value:function(t){var e=this,i=t.type,a=t.pos,s=t.i,r=t.j,n=t.isRangeStart,o=t.strokeWidth,l=void 0===o?2:o,h=this.w,c=new Mi(this.ctx),d=h.config.dataLabels,u=0,g=0,p=r,f=null;if(-1!==h.globals.collapsedSeriesIndices.indexOf(s)||!d.enabled||!Array.isArray(a.x))return f;f=c.group({class:\"apexcharts-data-labels\"});for(var x=0;x<a.x.length;x++)if(u=a.x[x]+d.offsetX,g=a.y[x]+d.offsetY+l,!isNaN(u)){1===r&&0===x&&(p=0),1===r&&1===x&&(p=1);var b=h.globals.series[s][p];\"rangeArea\"===i&&(b=n?h.globals.seriesRangeStart[s][p]:h.globals.seriesRangeEnd[s][p]);var m=\"\",v=function(t){return h.config.dataLabels.formatter(t,{ctx:e.ctx,seriesIndex:s,dataPointIndex:p,w:h})};if(\"bubble\"===h.config.chart.type)m=v(b=h.globals.seriesZ[s][p]),g=a.y[x],g=new Ui(this.ctx).centerTextInBubble(g,s,p).y;else void 0!==b&&(m=v(b));var y=h.config.dataLabels.textAnchor;h.globals.isSlopeChart&&(y=0===p?\"end\":p===h.config.series[s].data.length-1?\"start\":\"middle\"),this.plotDataLabelsText({x:u,y:g,text:m,i:s,j:p,parent:f,offsetCorrection:!0,dataLabelsConfig:h.config.dataLabels,textAnchor:y})}return f}},{key:\"plotDataLabelsText\",value:function(t){var e=this.w,i=new Mi(this.ctx),a=t.x,s=t.y,r=t.i,n=t.j,o=t.text,l=t.textAnchor,h=t.fontSize,c=t.parent,d=t.dataLabelsConfig,u=t.color,g=t.alwaysDrawDataLabel,p=t.offsetCorrection,f=t.className,x=null;if(Array.isArray(e.config.dataLabels.enabledOnSeries)&&e.config.dataLabels.enabledOnSeries.indexOf(r)<0)return x;var b={x:a,y:s,drawnextLabel:!0,textRects:null};p&&(b=this.dataLabelsCorrection(a,s,o,r,n,g,parseInt(d.style.fontSize,10))),e.globals.zoomed||(a=b.x,s=b.y),b.textRects&&(a<-20-b.textRects.width||a>e.globals.gridWidth+b.textRects.width+30)&&(o=\"\");var m=e.globals.dataLabels.style.colors[r];((\"bar\"===e.config.chart.type||\"rangeBar\"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(m=e.globals.dataLabels.style.colors[n]),\"function\"==typeof m&&(m=m({series:e.globals.series,seriesIndex:r,dataPointIndex:n,w:e})),u&&(m=u);var v=d.offsetX,y=d.offsetY;if(\"bar\"!==e.config.chart.type&&\"rangeBar\"!==e.config.chart.type||(v=0,y=0),e.globals.isSlopeChart&&(0!==n&&(v=-2*d.offsetX+5),0!==n&&n!==e.config.series[r].data.length-1&&(v=0)),b.drawnextLabel){if((x=i.drawText({width:100,height:parseInt(d.style.fontSize,10),x:a+v,y:s+y,foreColor:m,textAnchor:l||d.textAnchor,text:o,fontSize:h||d.style.fontSize,fontFamily:d.style.fontFamily,fontWeight:d.style.fontWeight||\"normal\"})).attr({class:f||\"apexcharts-datalabel\",cx:a,cy:s}),d.dropShadow.enabled){var w=d.dropShadow;new Li(this.ctx).dropShadow(x,w)}c.add(x),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(n)}return x}},{key:\"addBackgroundToDataLabel\",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,n=e.width,o=e.height,l=new Mi(this.ctx).drawRect(e.x-s,e.y-r/2,n+2*s,o+r,a.borderRadius,\"transparent\"!==i.config.chart.background&&i.config.chart.background?i.config.chart.background:\"#fff\",a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new Li(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:\"dataLabelsBackground\",value:function(){var t=this.w;if(\"bubble\"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-datalabels text\"),i=0;i<e.length;i++){var a=e[i],s=a.getBBox(),r=null;if(s.width&&s.height&&(r=this.addBackgroundToDataLabel(a,s)),r){a.parentNode.insertBefore(r.node,a);var n=a.getAttribute(\"fill\");t.config.chart.animations.enabled&&!t.globals.resized&&!t.globals.dataChanged?r.animate().attr({fill:n}):r.attr({fill:n}),a.setAttribute(\"fill\",t.config.dataLabels.background.foreColor)}}}},{key:\"bringForward\",value:function(){for(var t=this.w,e=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-datalabels\"),i=t.globals.dom.baseEl.querySelector(\".apexcharts-plot-series:last-child\"),a=0;a<e.length;a++)i&&i.insertBefore(e[a],i.nextSibling)}}]),t}(),Zi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.legendInactiveClass=\"legend-mouseover-inactive\"}return s(t,[{key:\"getAllSeriesEls\",value:function(){return this.w.globals.dom.baseEl.getElementsByClassName(\"apexcharts-series\")}},{key:\"getSeriesByName\",value:function(t){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-inner .apexcharts-series[seriesName='\".concat(v.escapeString(t),\"']\"))}},{key:\"isSeriesHidden\",value:function(t){var e=this.getSeriesByName(t),i=parseInt(e.getAttribute(\"data:realIndex\"),10);return{isHidden:e.classList.contains(\"apexcharts-series-collapsed\"),realIndex:i}}},{key:\"addCollapsedClassToSeries\",value:function(t,e){var i=this.w;function a(i){for(var a=0;a<i.length;a++)i[a].index===e&&t.node.classList.add(\"apexcharts-series-collapsed\")}a(i.globals.collapsedSeries),a(i.globals.ancillaryCollapsedSeries)}},{key:\"toggleSeries\",value:function(t){var e=this.isSeriesHidden(t);return this.ctx.legend.legendHelpers.toggleDataSeries(e.realIndex,e.isHidden),e.isHidden}},{key:\"showSeries\",value:function(t){var e=this.isSeriesHidden(t);e.isHidden&&this.ctx.legend.legendHelpers.toggleDataSeries(e.realIndex,!0)}},{key:\"hideSeries\",value:function(t){var e=this.isSeriesHidden(t);e.isHidden||this.ctx.legend.legendHelpers.toggleDataSeries(e.realIndex,!1)}},{key:\"resetSeries\",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=v.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:\"emptyCollapsedSeries\",value:function(t){for(var e=this.w,i=0;i<t.length;i++)e.globals.collapsedSeriesIndices.indexOf(i)>-1&&(t[i].data=[]);return t}},{key:\"highlightSeries\",value:function(t){var e=this.w,i=this.getSeriesByName(t),a=parseInt(null==i?void 0:i.getAttribute(\"data:realIndex\"),10),s=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-series, .apexcharts-datalabels, .apexcharts-yaxis\"),r=null,n=null,o=null;if(e.globals.axisCharts||\"radialBar\"===e.config.chart.type)if(e.globals.axisCharts){r=e.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(a,\"']\")),n=e.globals.dom.baseEl.querySelector(\".apexcharts-datalabels[data\\\\:realIndex='\".concat(a,\"']\"));var l=e.globals.seriesYAxisReverseMap[a];o=e.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(l,\"']\"))}else r=e.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(a+1,\"']\"));else r=e.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(a+1,\"'] path\"));for(var h=0;h<s.length;h++)s[h].classList.add(this.legendInactiveClass);if(r)e.globals.axisCharts||r.parentNode.classList.remove(this.legendInactiveClass),r.classList.remove(this.legendInactiveClass),null!==n&&n.classList.remove(this.legendInactiveClass),null!==o&&o.classList.remove(this.legendInactiveClass);else for(var c=0;c<s.length;c++)s[c].classList.remove(this.legendInactiveClass)}},{key:\"toggleSeriesOnHover\",value:function(t,e){var i=this.w;e||(e=t.target);var a=i.globals.dom.baseEl.querySelectorAll(\".apexcharts-series, .apexcharts-datalabels, .apexcharts-yaxis\");if(\"mousemove\"===t.type){var s=parseInt(e.getAttribute(\"rel\"),10)-1;this.highlightSeries(i.globals.seriesNames[s])}else if(\"mouseout\"===t.type)for(var r=0;r<a.length;r++)a[r].classList.remove(this.legendInactiveClass)}},{key:\"highlightRangeInSeries\",value:function(t,e){var i=this,a=this.w,s=a.globals.dom.baseEl.getElementsByClassName(\"apexcharts-heatmap-rect\"),r=function(t){for(var e=0;e<s.length;e++)s[e].classList[t](i.legendInactiveClass)};if(\"mousemove\"===t.type){var n=parseInt(e.getAttribute(\"rel\"),10)-1;r(\"add\");var o=a.config.plotOptions.heatmap.colorScale.ranges;!function(t,e){for(var a=0;a<s.length;a++){var r=Number(s[a].getAttribute(\"val\"));r>=t.from&&(r<t.to||t.to===e&&r===e)&&s[a].classList.remove(i.legendInactiveClass)}}(o[n],o.reduce((function(t,e){return Math.max(t,e.to)}),0))}else\"mouseout\"===t.type&&r(\"remove\")}},{key:\"getActiveConfigSeriesIndex\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"asc\",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r=\"asc\"===t?0:s.length-1;\"asc\"===t?r<s.length:r>=0;\"asc\"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:\"getBarSeriesIndices\",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return\"bar\"===t.type||\"column\"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:\"getPreviousPaths\",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute(\"data:realIndex\")},n=0;n<s.length;n++)if(s[n].hasAttribute(\"pathTo\")){var o=s[n].getAttribute(\"pathTo\");r.paths.push({d:o})}t.globals.previousPaths.push(r)}t.globals.previousPaths=[];[\"line\",\"area\",\"bar\",\"rangebar\",\"rangeArea\",\"candlestick\",\"radar\"].forEach((function(i){for(var a,s=(a=i,t.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(a,\"-series .apexcharts-series\"))),r=0;r<s.length;r++)e(s,r,i)}));var i=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(t.config.chart.type,\" .apexcharts-series\"));if(i.length>0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(t.config.chart.type,\" .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] rect\")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e(\"x\")),y:parseFloat(e(\"y\")),width:parseFloat(e(\"width\")),height:parseFloat(e(\"height\"))};a.push({rect:s,color:i[t].getAttribute(\"color\")})},r=0;r<i.length;r++)s(r);t.globals.previousPaths.push(a)},s=0;s<i.length;s++)a(s);t.globals.axisCharts||(t.globals.previousPaths=t.globals.series)}},{key:\"clearPreviousPaths\",value:function(){var t=this.w;t.globals.previousPaths=[],t.globals.allSeriesCollapsed=!1}},{key:\"handleNoData\",value:function(){var t=this.w,e=t.config.noData,i=new Mi(this.ctx),a=t.globals.svgWidth/2,s=t.globals.svgHeight/2,r=\"middle\";if(t.globals.noData=!0,t.globals.animationEnded=!0,\"left\"===e.align?(a=10,r=\"start\"):\"right\"===e.align&&(a=t.globals.svgWidth-10,r=\"end\"),\"top\"===e.verticalAlign?s=50:\"bottom\"===e.verticalAlign&&(s=t.globals.svgHeight-50),a+=e.offsetX,s=s+parseInt(e.style.fontSize,10)+2+e.offsetY,void 0!==e.text&&\"\"!==e.text){var n=i.drawText({x:a,y:s,text:e.text,textAnchor:r,fontSize:e.style.fontSize,fontFamily:e.style.fontFamily,foreColor:e.style.color,opacity:1,class:\"apexcharts-text-nodata\"});t.globals.dom.Paper.add(n)}}},{key:\"setNullSeriesToZeroValues\",value:function(t){for(var e=this.w,i=0;i<t.length;i++)if(0===t[i].length)for(var a=0;a<t[e.globals.maxValsInArrayIndex].length;a++)t[i].push(0);return t}},{key:\"hasAllSeriesEqualX\",value:function(){for(var t=!0,e=this.w,i=this.filteredSeriesX(),a=0;a<i.length-1;a++)if(i[a][0]!==i[a+1][0]){t=!1;break}return e.globals.allSeriesHasEqualX=t,t}},{key:\"filteredSeriesX\",value:function(){var t=this.w.globals.seriesX.map((function(t){return t.length>0?t:[]}));return t}}]),t}(),$i=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new Pi(this.ctx)}return s(t,[{key:\"isMultiFormat\",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:\"isFormatXY\",value:function(){var t=this.w.config.series.slice(),e=new Zi(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:\"isFormat2DArray\",value:function(){var t=this.w.config.series.slice(),e=new Zi(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:\"handleFormat2DArray\",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s=\"boxPlot\"===i.chart.type||\"boxPlot\"===i.series[e].type,r=0;r<t[e].data.length;r++)if(void 0!==t[e].data[r][1]&&(Array.isArray(t[e].data[r][1])&&4===t[e].data[r][1].length&&!s?this.twoDSeries.push(v.parseNumber(t[e].data[r][1][3])):t[e].data[r].length>=5?this.twoDSeries.push(v.parseNumber(t[e].data[r][4])):this.twoDSeries.push(v.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),\"datetime\"===i.xaxis.type){var n=new Date(t[e].data[r][0]);n=new Date(n).getTime(),this.twoDSeriesX.push(n)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var o=0;o<t[e].data.length;o++)void 0!==t[e].data[o][2]&&(this.threeDSeries.push(t[e].data[o][2]),a.isDataXYZ=!0)}},{key:\"handleFormatXY\",value:function(t,e){var i=this.w.config,a=this.w.globals,s=new zi(this.ctx),r=e;a.collapsedSeriesIndices.indexOf(e)>-1&&(r=this.activeSeriesIndex);for(var n=0;n<t[e].data.length;n++)void 0!==t[e].data[n].y&&(Array.isArray(t[e].data[n].y)?this.twoDSeries.push(v.parseNumber(t[e].data[n].y[t[e].data[n].y.length-1])):this.twoDSeries.push(v.parseNumber(t[e].data[n].y))),void 0!==t[e].data[n].goals&&Array.isArray(t[e].data[n].goals)?(void 0===this.seriesGoals[e]&&(this.seriesGoals[e]=[]),this.seriesGoals[e].push(t[e].data[n].goals)):(void 0===this.seriesGoals[e]&&(this.seriesGoals[e]=[]),this.seriesGoals[e].push(null));for(var o=0;o<t[r].data.length;o++){var l=\"string\"==typeof t[r].data[o].x,h=Array.isArray(t[r].data[o].x),c=!h&&!!s.isValidDate(t[r].data[o].x);if(l||c)if(l||i.xaxis.convertedCatToNumeric){var d=a.isBarHorizontal&&a.isRangeData;\"datetime\"!==i.xaxis.type||d?(this.fallbackToCategory=!0,this.twoDSeriesX.push(t[r].data[o].x),isNaN(t[r].data[o].x)||\"category\"===this.w.config.xaxis.type||\"string\"==typeof t[r].data[o].x||(a.isXNumeric=!0)):this.twoDSeriesX.push(s.parseDate(t[r].data[o].x))}else\"datetime\"===i.xaxis.type?this.twoDSeriesX.push(s.parseDate(t[r].data[o].x.toString())):(a.dataFormatXNumeric=!0,a.isXNumeric=!0,this.twoDSeriesX.push(parseFloat(t[r].data[o].x)));else h?(this.fallbackToCategory=!0,this.twoDSeriesX.push(t[r].data[o].x)):(a.isXNumeric=!0,a.dataFormatXNumeric=!0,this.twoDSeriesX.push(t[r].data[o].x))}if(t[e].data[0]&&void 0!==t[e].data[0].z){for(var u=0;u<t[e].data.length;u++)this.threeDSeries.push(t[e].data[u].z);a.isDataXYZ=!0}}},{key:\"handleRangeData\",value:function(t,e){var i=this.w.globals,a={};return this.isFormat2DArray()?a=this.handleRangeDataFormat(\"array\",t,e):this.isFormatXY()&&(a=this.handleRangeDataFormat(\"xy\",t,e)),i.seriesRangeStart.push(void 0===a.start?[]:a.start),i.seriesRangeEnd.push(void 0===a.end?[]:a.end),i.seriesRange.push(a.rangeUniques),i.seriesRange.forEach((function(t,e){t&&t.forEach((function(t,e){t.y.forEach((function(e,i){for(var a=0;a<t.y.length;a++)if(i!==a){var s=e.y1,r=e.y2,n=t.y[a].y1;s<=t.y[a].y2&&n<=r&&(t.overlaps.indexOf(e.rangeName)<0&&t.overlaps.push(e.rangeName),t.overlaps.indexOf(t.y[a].rangeName)<0&&t.overlaps.push(t.y[a].rangeName))}}))}))})),a}},{key:\"handleCandleStickBoxData\",value:function(t,e){var i=this.w.globals,a={};return this.isFormat2DArray()?a=this.handleCandleStickBoxDataFormat(\"array\",t,e):this.isFormatXY()&&(a=this.handleCandleStickBoxDataFormat(\"xy\",t,e)),i.seriesCandleO[e]=a.o,i.seriesCandleH[e]=a.h,i.seriesCandleM[e]=a.m,i.seriesCandleL[e]=a.l,i.seriesCandleC[e]=a.c,a}},{key:\"handleRangeDataFormat\",value:function(t,e,i){var a=[],s=[],r=e[i].data.filter((function(t,e,i){return e===i.findIndex((function(e){return e.x===t.x}))})).map((function(t,e){return{x:t.x,overlaps:[],y:[]}}));if(\"array\"===t)for(var n=0;n<e[i].data.length;n++)Array.isArray(e[i].data[n])?(a.push(e[i].data[n][1][0]),s.push(e[i].data[n][1][1])):(a.push(e[i].data[n]),s.push(e[i].data[n]));else if(\"xy\"===t)for(var o=function(t){var n=Array.isArray(e[i].data[t].y),o=v.randomId(),l=e[i].data[t].x,h={y1:n?e[i].data[t].y[0]:e[i].data[t].y,y2:n?e[i].data[t].y[1]:e[i].data[t].y,rangeName:o};e[i].data[t].rangeName=o;var c=r.findIndex((function(t){return t.x===l}));r[c].y.push(h),a.push(h.y1),s.push(h.y2)},l=0;l<e[i].data.length;l++)o(l);return{start:a,end:s,rangeUniques:r}}},{key:\"handleCandleStickBoxDataFormat\",value:function(t,e,i){var a=this.w,s=\"boxPlot\"===a.config.chart.type||\"boxPlot\"===a.config.series[i].type,r=[],n=[],o=[],l=[],h=[];if(\"array\"===t)if(s&&6===e[i].data[0].length||!s&&5===e[i].data[0].length)for(var c=0;c<e[i].data.length;c++)r.push(e[i].data[c][1]),n.push(e[i].data[c][2]),s?(o.push(e[i].data[c][3]),l.push(e[i].data[c][4]),h.push(e[i].data[c][5])):(l.push(e[i].data[c][3]),h.push(e[i].data[c][4]));else for(var d=0;d<e[i].data.length;d++)Array.isArray(e[i].data[d][1])&&(r.push(e[i].data[d][1][0]),n.push(e[i].data[d][1][1]),s?(o.push(e[i].data[d][1][2]),l.push(e[i].data[d][1][3]),h.push(e[i].data[d][1][4])):(l.push(e[i].data[d][1][2]),h.push(e[i].data[d][1][3])));else if(\"xy\"===t)for(var u=0;u<e[i].data.length;u++)Array.isArray(e[i].data[u].y)&&(r.push(e[i].data[u].y[0]),n.push(e[i].data[u].y[1]),s?(o.push(e[i].data[u].y[2]),l.push(e[i].data[u].y[3]),h.push(e[i].data[u].y[4])):(l.push(e[i].data[u].y[2]),h.push(e[i].data[u].y[3])));return{o:r,h:n,m:o,l:l,c:h}}},{key:\"parseDataAxisCharts\",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.ctx,a=this.w.config,s=this.w.globals,r=new zi(i),n=a.labels.length>0?a.labels.slice():a.xaxis.categories.slice();s.isRangeBar=\"rangeBar\"===a.chart.type&&s.isBarHorizontal,s.hasXaxisGroups=\"category\"===a.xaxis.type&&a.xaxis.group.groups.length>0,s.hasXaxisGroups&&(s.groups=a.xaxis.group.groups),t.forEach((function(t,e){void 0!==t.name?s.seriesNames.push(t.name):s.seriesNames.push(\"series-\"+parseInt(e+1,10))})),this.coreUtils.setSeriesYAxisMappings();var o=[],l=f(new Set(a.series.map((function(t){return t.group}))));a.series.forEach((function(t,e){var i=l.indexOf(t.group);o[i]||(o[i]=[]),o[i].push(s.seriesNames[e])})),s.seriesGroups=o;for(var h=function(){for(var t=0;t<n.length;t++)if(\"string\"==typeof n[t]){if(!r.isValidDate(n[t]))throw new Error(\"You have provided invalid Date format. Please provide a valid JavaScript Date\");e.twoDSeriesX.push(r.parseDate(n[t]))}else e.twoDSeriesX.push(n[t])},c=0;c<t.length;c++){if(this.twoDSeries=[],this.twoDSeriesX=[],this.threeDSeries=[],void 0===t[c].data)return void console.error(\"It is a possibility that you may have not included 'data' property in series.\");if(\"rangeBar\"!==a.chart.type&&\"rangeArea\"!==a.chart.type&&\"rangeBar\"!==t[c].type&&\"rangeArea\"!==t[c].type||(s.isRangeData=!0,\"rangeBar\"!==a.chart.type&&\"rangeArea\"!==a.chart.type||this.handleRangeData(t,c)),this.isMultiFormat())this.isFormat2DArray()?this.handleFormat2DArray(t,c):this.isFormatXY()&&this.handleFormatXY(t,c),\"candlestick\"!==a.chart.type&&\"candlestick\"!==t[c].type&&\"boxPlot\"!==a.chart.type&&\"boxPlot\"!==t[c].type||this.handleCandleStickBoxData(t,c),s.series.push(this.twoDSeries),s.labels.push(this.twoDSeriesX),s.seriesX.push(this.twoDSeriesX),s.seriesGoals=this.seriesGoals,c!==this.activeSeriesIndex||this.fallbackToCategory||(s.isXNumeric=!0);else{\"datetime\"===a.xaxis.type?(s.isXNumeric=!0,h(),s.seriesX.push(this.twoDSeriesX)):\"numeric\"===a.xaxis.type&&(s.isXNumeric=!0,n.length>0&&(this.twoDSeriesX=n,s.seriesX.push(this.twoDSeriesX))),s.labels.push(this.twoDSeriesX);var d=t[c].data.map((function(t){return v.parseNumber(t)}));s.series.push(d)}s.seriesZ.push(this.threeDSeries),void 0!==t[c].color?s.seriesColors.push(t[c].color):s.seriesColors.push(void 0)}return this.w}},{key:\"parseDataNonAxisCharts\",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a<e.series.length;a++)void 0===e.seriesNames[a]&&e.seriesNames.push(\"series-\"+(a+1));return this.w}},{key:\"handleExternalLabelsData\",value:function(t){var e=this.w.config,i=this.w.globals;if(e.xaxis.categories.length>0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=Array.from(new Set(i.labels.map(JSON.stringify)),JSON.parse)),e.xaxis.convertedCatToNumeric)new Ni(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:\"_generateExternalLabels\",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),n=0;n<s[r].length;n++)a.push(n+1);else for(var o=0;o<e.series[e.maxValsInArrayIndex].length;o++)a.push(o+1);e.seriesX=[];for(var l=0;l<t.length;l++)e.seriesX.push(a);this.w.globals.isBarHorizontal||(e.isXNumeric=!0)}if(0===a.length){a=e.axisCharts?[]:e.series.map((function(t,e){return e+1}));for(var h=0;h<t.length;h++)e.seriesX.push(a)}e.labels=a,i.xaxis.convertedCatToNumeric&&(e.categoryLabels=a.map((function(t){return i.xaxis.labels.formatter(t)}))),e.noLabelsProvided=!0}},{key:\"parseData\",value:function(t){var e=this.w,i=e.config,a=e.globals;if(this.excludeCollapsedSeriesInYAxis(),this.fallbackToCategory=!1,this.ctx.core.resetGlobals(),this.ctx.core.isMultipleY(),a.axisCharts?(this.parseDataAxisCharts(t),this.coreUtils.getLargestSeries()):this.parseDataNonAxisCharts(t),i.chart.stacked){var s=new Zi(this.ctx);a.series=s.setNullSeriesToZeroValues(a.series)}this.coreUtils.getSeriesTotals(),a.axisCharts&&(a.stackedSeriesTotals=this.coreUtils.getStackedSeriesTotals(),a.stackedSeriesTotalsByGroups=this.coreUtils.getStackedSeriesTotalsByGroups()),this.coreUtils.getPercentSeries(),a.dataFormatXNumeric||a.isXNumeric&&(\"numeric\"!==i.xaxis.type||0!==i.labels.length||0!==i.xaxis.categories.length)||this.handleExternalLabelsData(t);for(var r=this.coreUtils.getCategoryLabels(a.labels),n=0;n<r.length;n++)if(Array.isArray(r[n])){a.isMultiLineX=!0;break}}},{key:\"excludeCollapsedSeriesInYAxis\",value:function(){var t=this.w,e=[];t.globals.seriesYAxisMap.forEach((function(i,a){var s=0;i.forEach((function(e){-1!==t.globals.collapsedSeriesIndices.indexOf(e)&&s++})),s>0&&s==i.length&&e.push(a)})),t.globals.ignoreYAxisIndexes=e.map((function(t){return t}))}}]),t}(),Ji=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"svgStringToNode\",value:function(t){return(new DOMParser).parseFromString(t,\"image/svg+xml\").documentElement}},{key:\"scaleSvgNode\",value:function(t,e){var i=parseFloat(t.getAttributeNS(null,\"width\")),a=parseFloat(t.getAttributeNS(null,\"height\"));t.setAttributeNS(null,\"width\",i*e),t.setAttributeNS(null,\"height\",a*e),t.setAttributeNS(null,\"viewBox\",\"0 0 \"+i+\" \"+a)}},{key:\"getSvgString\",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t||a.config.chart.toolbar.export.scale||a.config.chart.toolbar.export.width/a.globals.svgWidth;s||(s=1);var r=a.globals.svgWidth*s,n=a.globals.svgHeight*s,o=a.globals.dom.elWrap.cloneNode(!0);o.style.width=r+\"px\",o.style.height=n+\"px\";var l=(new XMLSerializer).serializeToString(o),h='\\n        <svg xmlns=\"http://www.w3.org/2000/svg\"\\n          version=\"1.1\"\\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\\n          class=\"apexcharts-svg\"\\n          xmlns:data=\"ApexChartsNS\"\\n          transform=\"translate(0, 0)\"\\n          width=\"'.concat(a.globals.svgWidth,'px\" height=\"').concat(a.globals.svgHeight,'px\">\\n          <foreignObject width=\"100%\" height=\"100%\">\\n            <div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"width:').concat(r,\"px; height:\").concat(n,'px;\">\\n            <style type=\"text/css\">\\n              .apexcharts-tooltip, .apexcharts-toolbar, .apexcharts-xaxistooltip, .apexcharts-yaxistooltip, .apexcharts-xcrosshairs, .apexcharts-ycrosshairs, .apexcharts-zoom-rect, .apexcharts-selection-rect {\\n                display: none;\\n              }\\n            </style>\\n              ').concat(l,\"\\n            </div>\\n          </foreignObject>\\n        </svg>\\n      \"),c=e.svgStringToNode(h);1!==s&&e.scaleSvgNode(c,s),e.convertImagesToBase64(c).then((function(){h=(new XMLSerializer).serializeToString(c),i(h.replace(/&nbsp;/g,\"&#160;\"))}))}))}},{key:\"convertImagesToBase64\",value:function(t){var e=this,i=t.getElementsByTagName(\"image\"),a=Array.from(i).map((function(t){var i=t.getAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\");return i&&!i.startsWith(\"data:\")?e.getBase64FromUrl(i).then((function(e){t.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",e)})).catch((function(t){console.error(\"Error converting image to base64:\",t)})):Promise.resolve()}));return Promise.all(a)}},{key:\"getBase64FromUrl\",value:function(t){return new Promise((function(e,i){var a=new Image;a.crossOrigin=\"Anonymous\",a.onload=function(){var t=document.createElement(\"canvas\");t.width=a.width,t.height=a.height,t.getContext(\"2d\").drawImage(a,0,0),e(t.toDataURL())},a.onerror=i,a.src=t}))}},{key:\"svgUrl\",value:function(){var t=this;return new Promise((function(e){t.getSvgString().then((function(t){var i=new Blob([t],{type:\"image/svg+xml;charset=utf-8\"});e(URL.createObjectURL(i))}))}))}},{key:\"dataURI\",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t?t.scale||t.width/a.globals.svgWidth:1,r=document.createElement(\"canvas\");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var n=\"transparent\"!==a.config.chart.background&&a.config.chart.background?a.config.chart.background:\"#fff\",o=r.getContext(\"2d\");o.fillStyle=n,o.fillRect(0,0,r.width*s,r.height*s),e.getSvgString(s).then((function(t){var e=\"data:image/svg+xml,\"+encodeURIComponent(t),a=new Image;a.crossOrigin=\"anonymous\",a.onload=function(){if(o.drawImage(a,0,0),r.msToBlob){var t=r.msToBlob();i({blob:t})}else{var e=r.toDataURL(\"image/png\");i({imgURI:e})}},a.src=e}))}))}},{key:\"exportToSVG\",value:function(){var t=this;this.svgUrl().then((function(e){t.triggerDownload(e,t.w.config.chart.toolbar.export.svg.filename,\".svg\")}))}},{key:\"exportToPng\",value:function(){var t=this,e=this.w.config.chart.toolbar.export.scale,i=this.w.config.chart.toolbar.export.width,a=e?{scale:e}:i?{width:i}:void 0;this.dataURI(a).then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+\".png\"):t.triggerDownload(i,t.w.config.chart.toolbar.export.png.filename,\".png\")}))}},{key:\"exportToCSV\",value:function(t){var e=this,i=t.series,a=t.fileName,s=t.columnDelimiter,r=void 0===s?\",\":s,n=t.lineDelimiter,o=void 0===n?\"\\n\":n,l=this.w;i||(i=l.config.series);var h=[],c=[],d=\"\",u=l.globals.series.map((function(t,e){return-1===l.globals.collapsedSeriesIndices.indexOf(e)?t:[]})),g=function(t){return\"function\"==typeof l.config.chart.toolbar.export.csv.categoryFormatter?l.config.chart.toolbar.export.csv.categoryFormatter(t):\"datetime\"===l.config.xaxis.type&&String(t).length>=10?new Date(t).toDateString():v.isNumber(t)?t:t.split(r).join(\"\")},p=function(t){return\"function\"==typeof l.config.chart.toolbar.export.csv.valueFormatter?l.config.chart.toolbar.export.csv.valueFormatter(t):t},x=Math.max.apply(Math,f(i.map((function(t){return t.data?t.data.length:0})))),b=new $i(this.ctx),m=new Ri(this.ctx),y=function(t){var i=\"\";if(l.globals.axisCharts){if(\"category\"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){var a=l.globals.yLabelFormatters[0],s=new Zi(e.ctx).getActiveConfigSeriesIndex();i=a(l.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:l})}else i=m.getLabel(l.globals.labels,l.globals.timescaleLabels,0,t).text;\"datetime\"===l.config.xaxis.type&&(l.config.xaxis.categories.length?i=l.config.xaxis.categories[t]:l.config.labels.length&&(i=l.config.labels[t]))}else i=l.config.labels[t];return null===i?\"nullvalue\":(Array.isArray(i)&&(i=i.join(\" \")),v.isNumber(i)?i:i.split(r).join(\"\"))},w=function(t,e){if(h.length&&0===e&&c.push(h.join(r)),t.data){t.data=t.data.length&&t.data||f(Array(x)).map((function(){return\"\"}));for(var a=0;a<t.data.length;a++){h=[];var s=y(a);if(\"nullvalue\"!==s){if(s||(b.isFormatXY()?s=i[e].data[a].x:b.isFormat2DArray()&&(s=i[e].data[a]?i[e].data[a][0]:\"\")),0===e){h.push(g(s));for(var n=0;n<l.globals.series.length;n++){var o,d=b.isFormatXY()?null===(o=i[n].data[a])||void 0===o?void 0:o.y:u[n][a];h.push(p(d))}}(\"candlestick\"===l.config.chart.type||t.type&&\"candlestick\"===t.type)&&(h.pop(),h.push(l.globals.seriesCandleO[e][a]),h.push(l.globals.seriesCandleH[e][a]),h.push(l.globals.seriesCandleL[e][a]),h.push(l.globals.seriesCandleC[e][a])),(\"boxPlot\"===l.config.chart.type||t.type&&\"boxPlot\"===t.type)&&(h.pop(),h.push(l.globals.seriesCandleO[e][a]),h.push(l.globals.seriesCandleH[e][a]),h.push(l.globals.seriesCandleM[e][a]),h.push(l.globals.seriesCandleL[e][a]),h.push(l.globals.seriesCandleC[e][a])),\"rangeBar\"===l.config.chart.type&&(h.pop(),h.push(l.globals.seriesRangeStart[e][a]),h.push(l.globals.seriesRangeEnd[e][a])),h.length&&c.push(h.join(r))}}}};h.push(l.config.chart.toolbar.export.csv.headerCategory),\"boxPlot\"===l.config.chart.type?(h.push(\"minimum\"),h.push(\"q1\"),h.push(\"median\"),h.push(\"q3\"),h.push(\"maximum\")):\"candlestick\"===l.config.chart.type?(h.push(\"open\"),h.push(\"high\"),h.push(\"low\"),h.push(\"close\")):\"rangeBar\"===l.config.chart.type?(h.push(\"minimum\"),h.push(\"maximum\")):i.map((function(t,e){var i=(t.name?t.name:\"series-\".concat(e))+\"\";l.globals.axisCharts&&h.push(i.split(r).join(\"\")?i.split(r).join(\"\"):\"series-\".concat(e))})),l.globals.axisCharts||(h.push(l.config.chart.toolbar.export.csv.headerValue),c.push(h.join(r))),l.globals.allSeriesHasEqualX||!l.globals.axisCharts||l.config.xaxis.categories.length||l.config.labels.length?i.map((function(t,e){l.globals.axisCharts?w(t,e):((h=[]).push(g(l.globals.labels[e])),h.push(p(u[e])),c.push(h.join(r)))})):function(){var t=new Set,e={};i.forEach((function(a,s){null==a||a.data.forEach((function(a){var r,n;if(b.isFormatXY())r=a.x,n=a.y;else{if(!b.isFormat2DArray())return;r=a[0],n=a[1]}e[r]||(e[r]=Array(i.length).fill(\"\")),e[r][s]=p(n),t.add(r)}))})),h.length&&c.push(h.join(r)),Array.from(t).sort().forEach((function(t){c.push([g(t),e[t].join(r)])}))}(),d+=c.join(o),this.triggerDownload(\"data:text/csv; charset=utf-8,\"+encodeURIComponent(\"\\ufeff\"+d),a||l.config.chart.toolbar.export.csv.filename,\".csv\")}},{key:\"triggerDownload\",value:function(t,e,i){var a=document.createElement(\"a\");a.href=t,a.download=(e||this.w.globals.chartID)+i,document.body.appendChild(a),a.click(),document.body.removeChild(a)}}]),t}(),Qi=function(){function t(e,a){i(this,t),this.ctx=e,this.elgrid=a,this.w=e.w;var s=this.w;this.axesUtils=new Ri(e),this.xaxisLabels=s.globals.labels.slice(),s.globals.timescaleLabels.length>0&&!s.globals.isBarHorizontal&&(this.xaxisLabels=s.globals.timescaleLabels.slice()),s.config.xaxis.overwriteCategories&&(this.xaxisLabels=s.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],\"top\"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal=\"bar\"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=s.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf(\"%\")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0]}return s(t,[{key:\"drawXaxis\",value:function(){var t=this.w,e=new Mi(this.ctx),i=e.group({class:\"apexcharts-xaxis\",transform:\"translate(\".concat(t.config.xaxis.offsetX,\", \").concat(t.config.xaxis.offsetY,\")\")}),a=e.group({class:\"apexcharts-xaxis-texts-g\",transform:\"translate(\".concat(t.globals.translateXAxisX,\", \").concat(t.globals.translateXAxisY,\")\")});i.add(a);for(var s=[],r=0;r<this.xaxisLabels.length;r++)s.push(this.xaxisLabels[r]);if(this.drawXAxisLabelAndGroup(!0,e,a,s,t.globals.isXNumeric,(function(t,e){return e})),t.globals.hasXaxisGroups){var n=t.globals.groups;s=[];for(var o=0;o<n.length;o++)s.push(n[o].title);var l={};t.config.xaxis.group.style&&(l.xaxisFontSize=t.config.xaxis.group.style.fontSize,l.xaxisFontFamily=t.config.xaxis.group.style.fontFamily,l.xaxisForeColors=t.config.xaxis.group.style.colors,l.fontWeight=t.config.xaxis.group.style.fontWeight,l.cssClass=t.config.xaxis.group.style.cssClass),this.drawXAxisLabelAndGroup(!1,e,a,s,!1,(function(t,e){return n[t].cols*e}),l)}if(void 0!==t.config.xaxis.title.text){var h=e.group({class:\"apexcharts-xaxis-title\"}),c=e.drawText({x:t.globals.gridWidth/2+t.config.xaxis.title.offsetX,y:this.offY+parseFloat(this.xaxisFontSize)+(\"bottom\"===t.config.xaxis.position?t.globals.xAxisLabelsHeight:-t.globals.xAxisLabelsHeight-10)+t.config.xaxis.title.offsetY,text:t.config.xaxis.title.text,textAnchor:\"middle\",fontSize:t.config.xaxis.title.style.fontSize,fontFamily:t.config.xaxis.title.style.fontFamily,fontWeight:t.config.xaxis.title.style.fontWeight,foreColor:t.config.xaxis.title.style.color,cssClass:\"apexcharts-xaxis-title-text \"+t.config.xaxis.title.style.cssClass});h.add(c),i.add(h)}if(t.config.xaxis.axisBorder.show){var d=t.globals.barPadForNumericAxis,u=e.drawLine(t.globals.padHorizontal+t.config.xaxis.axisBorder.offsetX-d,this.offY,this.xaxisBorderWidth+d,this.offY,t.config.xaxis.axisBorder.color,0,this.xaxisBorderHeight);this.elgrid&&this.elgrid.elGridBorders&&t.config.grid.show?this.elgrid.elGridBorders.add(u):i.add(u)}return i}},{key:\"drawXAxisLabelAndGroup\",value:function(t,e,i,a,s,r){var n,o=this,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{},h=[],c=[],d=this.w,u=l.xaxisFontSize||this.xaxisFontSize,g=l.xaxisFontFamily||this.xaxisFontFamily,p=l.xaxisForeColors||this.xaxisForeColors,f=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,m=a.length,v=\"category\"===d.config.xaxis.type?d.globals.dataPoints:m;if(0===v&&m>v&&(v=m),s){var y=Math.max(Number(d.config.xaxis.tickAmount)||1,v>1?v-1:v);n=d.globals.gridWidth/Math.min(y,m-1),b=b+r(0,n)/2+d.config.xaxis.labels.offsetX}else n=d.globals.gridWidth/v,b=b+r(0,n)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,n)/2+d.config.xaxis.labels.offsetX;0===s&&1===m&&n/2===b&&1===v&&(l=d.globals.gridWidth/2);var y=o.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,h,u,t),w=28;d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&\"top\"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(u)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&\"dataPoints\"!==d.config.xaxis.tickAmount&&\"datetime\"!==d.config.xaxis.type?o.axesUtils.checkLabelBasedOnTickamount(s,y,m):o.axesUtils.checkForOverflowingLabels(s,y,m,h,c);if(d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:o.offY+d.config.xaxis.labels.offsetY+w-(\"top\"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:\"middle\",fontWeight:y.isBold?600:f,fontSize:u,fontFamily:g,foreColor:Array.isArray(p)?t&&d.config.xaxis.convertedCatToNumeric?p[d.globals.minX+s-1]:p[s]:p,isPlainText:!1,cssClass:(t?\"apexcharts-xaxis-label \":\"apexcharts-xaxis-group-label \")+x});if(i.add(k),k.on(\"click\",(function(t){if(\"function\"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,o.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,\"title\");A.textContent=Array.isArray(y.text)?y.text.join(\" \"):y.text,k.node.appendChild(A),\"\"!==y.text&&(h.push(y.text),c.push(y))}}s<m-1&&(b+=r(s+1,n))},k=0;k<=m-1;k++)w(k)}},{key:\"drawXaxisInversed\",value:function(t){var e,i,a=this,s=this.w,r=new Mi(this.ctx),n=s.config.yaxis[0].opposite?s.globals.translateYAxisX[t]:0,o=r.group({class:\"apexcharts-yaxis apexcharts-xaxis-inversed\",rel:t}),l=r.group({class:\"apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g\",transform:\"translate(\"+n+\", 0)\"});o.add(l);var h=[];if(s.config.yaxis[t].show)for(var c=0;c<this.xaxisLabels.length;c++)h.push(this.xaxisLabels[c]);e=s.globals.gridHeight/h.length,i=-e/2.2;var d=s.globals.yLabelFormatters[0],u=s.config.yaxis[0].labels;if(u.show)for(var g=function(n){var o=void 0===h[n]?\"\":h[n];o=d(o,{seriesIndex:t,dataPointIndex:n,w:s});var c=a.axesUtils.getYAxisForeColor(u.style.colors,t),g=0;Array.isArray(o)&&(g=o.length/2*parseInt(u.style.fontSize,10));var p=u.offsetX-15,f=\"end\";a.yaxis.opposite&&(f=\"start\"),\"left\"===s.config.yaxis[0].labels.align?(p=u.offsetX,f=\"start\"):\"center\"===s.config.yaxis[0].labels.align?(p=u.offsetX,f=\"middle\"):\"right\"===s.config.yaxis[0].labels.align&&(f=\"end\");var x=r.drawText({x:p,y:i+e+u.offsetY-g,text:o,textAnchor:f,foreColor:Array.isArray(c)?c[n]:c,fontSize:u.style.fontSize,fontFamily:u.style.fontFamily,fontWeight:u.style.fontWeight,isPlainText:!1,cssClass:\"apexcharts-yaxis-label \"+u.style.cssClass,maxWidth:u.maxWidth});l.add(x),x.on(\"click\",(function(t){if(\"function\"==typeof s.config.chart.events.xAxisLabelClick){var e=Object.assign({},s,{labelIndex:n});s.config.chart.events.xAxisLabelClick(t,a.ctx,e)}}));var b=document.createElementNS(s.globals.SVGNS,\"title\");if(b.textContent=Array.isArray(o)?o.join(\" \"):o,x.node.appendChild(b),0!==s.config.yaxis[t].labels.rotate){var m=r.rotateAroundCenter(x.node);x.node.setAttribute(\"transform\",\"rotate(\".concat(s.config.yaxis[t].labels.rotate,\" 0 \").concat(m.y,\")\"))}i+=e},p=0;p<=h.length-1;p++)g(p);if(void 0!==s.config.yaxis[0].title.text){var f=r.group({class:\"apexcharts-yaxis-title apexcharts-xaxis-title-inversed\",transform:\"translate(\"+n+\", 0)\"}),x=r.drawText({x:s.config.yaxis[0].title.offsetX,y:s.globals.gridHeight/2+s.config.yaxis[0].title.offsetY,text:s.config.yaxis[0].title.text,textAnchor:\"middle\",foreColor:s.config.yaxis[0].title.style.color,fontSize:s.config.yaxis[0].title.style.fontSize,fontWeight:s.config.yaxis[0].title.style.fontWeight,fontFamily:s.config.yaxis[0].title.style.fontFamily,cssClass:\"apexcharts-yaxis-title-text \"+s.config.yaxis[0].title.style.cssClass});f.add(x),o.add(f)}var b=0;this.isCategoryBarHorizontal&&s.config.yaxis[0].opposite&&(b=s.globals.gridWidth);var m=s.config.xaxis.axisBorder;if(m.show){var v=r.drawLine(s.globals.padHorizontal+m.offsetX+b,1+m.offsetY,s.globals.padHorizontal+m.offsetX+b,s.globals.gridHeight+m.offsetY,m.color,0);this.elgrid&&this.elgrid.elGridBorders&&s.config.grid.show?this.elgrid.elGridBorders.add(v):o.add(v)}return s.config.yaxis[0].axisTicks.show&&this.axesUtils.drawYAxisTicks(b,h.length,s.config.yaxis[0].axisBorder,s.config.yaxis[0].axisTicks,0,e,o),o}},{key:\"drawXaxisTicks\",value:function(t,e,i){var a=this.w,s=t;if(!(t<0||t-2>a.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,\"top\"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var n=new Mi(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(n),n.node.classList.add(\"apexcharts-xaxis-tick\")}}}},{key:\"getXAxisTicksPositions\",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s<i;s++)a=this.xaxisLabels[s].position,e.push(a);else for(var r=i,n=0;n<r;n++){var o=r;t.globals.isXNumeric&&\"bar\"!==t.config.chart.type&&(o-=1),a+=t.globals.gridWidth/o,e.push(a)}return e}},{key:\"xAxisLabelCorrections\",value:function(){var t=this.w,e=new Mi(this.ctx),i=t.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-texts-g\"),a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-xaxis-texts-g text:not(.apexcharts-xaxis-group-label)\"),s=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis-inversed text\"),r=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-xaxis-inversed-texts-g text tspan\");if(t.globals.rotateXLabels||t.config.xaxis.labels.rotateAlways)for(var n=0;n<a.length;n++){var o=e.rotateAroundCenter(a[n]);o.y=o.y-1,o.x=o.x+1,a[n].setAttribute(\"transform\",\"rotate(\".concat(t.config.xaxis.labels.rotate,\" \").concat(o.x,\" \").concat(o.y,\")\")),a[n].setAttribute(\"text-anchor\",\"end\");i.setAttribute(\"transform\",\"translate(0, \".concat(-10,\")\"));var l=a[n].childNodes;t.config.xaxis.labels.trim&&Array.prototype.forEach.call(l,(function(i){e.placeTextWithEllipsis(i,i.textContent,t.globals.xAxisLabelsHeight-(\"bottom\"===t.config.legend.position?20:10))}))}else!function(){for(var i=t.globals.gridWidth/(t.globals.labels.length+1),s=0;s<a.length;s++){var r=a[s].childNodes;t.config.xaxis.labels.trim&&\"datetime\"!==t.config.xaxis.type&&Array.prototype.forEach.call(r,(function(t){e.placeTextWithEllipsis(t,t.textContent,i)}))}}();if(s.length>0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d<r.length;d++)e.placeTextWithEllipsis(r[d],r[d].textContent,t.config.yaxis[0].labels.maxWidth-(t.config.yaxis[0].title.text?2*parseFloat(t.config.yaxis[0].title.style.fontSize):0)-15)}}}]),t}(),Ki=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.xaxisLabels=a.globals.labels.slice(),this.axesUtils=new Ri(e),this.isRangeBar=a.globals.seriesRange.length&&a.globals.isBarHorizontal,a.globals.timescaleLabels.length>0&&(this.xaxisLabels=a.globals.timescaleLabels.slice())}return s(t,[{key:\"drawGridArea\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new Mi(this.ctx);t||(t=i.group({class:\"apexcharts-grid\"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,\"transparent\"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,\"transparent\");return t.add(s),t.add(a),t}},{key:\"drawGrid\",value:function(){if(this.w.globals.axisCharts){var t=this.renderGrid();return this.drawGridArea(t.el),t}return null}},{key:\"createGridMask\",value:function(){var t=this.w,e=t.globals,i=new Mi(this.ctx),a=Array.isArray(t.config.stroke.width)?Math.max.apply(Math,f(t.config.stroke.width)):t.config.stroke.width,s=function(t){var i=document.createElementNS(e.SVGNS,\"clipPath\");return i.setAttribute(\"id\",t),i};e.dom.elGridRectMask=s(\"gridRectMask\".concat(e.cuid)),e.dom.elGridRectBarMask=s(\"gridRectBarMask\".concat(e.cuid)),e.dom.elGridRectMarkerMask=s(\"gridRectMarkerMask\".concat(e.cuid)),e.dom.elForecastMask=s(\"forecastMask\".concat(e.cuid)),e.dom.elNonForecastMask=s(\"nonForecastMask\".concat(e.cuid));var r=0,n=0;([\"bar\",\"rangeBar\",\"candlestick\",\"boxPlot\"].includes(t.config.chart.type)||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(r=Math.max(t.config.grid.padding.left,e.barPadForNumericAxis),n=Math.max(t.config.grid.padding.right,e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(-a/2-2,-a/2-2,e.gridWidth+a+4,e.gridHeight+a+4,0,\"#fff\"),e.dom.elGridRectBar=i.drawRect(-a/2-r-2,-a/2-2,e.gridWidth+a+n+r+4,e.gridHeight+a+4,0,\"#fff\");var o=t.globals.markers.largestSize;e.dom.elGridRectMarker=i.drawRect(-o,-o,e.gridWidth+2*o,e.gridHeight+2*o,0,\"#fff\"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectBarMask.appendChild(e.dom.elGridRectBar.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var l=e.dom.baseEl.querySelector(\"defs\");l.appendChild(e.dom.elGridRectMask),l.appendChild(e.dom.elGridRectBarMask),l.appendChild(e.dom.elGridRectMarkerMask),l.appendChild(e.dom.elForecastMask),l.appendChild(e.dom.elNonForecastMask)}},{key:\"_drawGridLines\",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,n=t.xCount,o=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===n-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||\"radar\"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:n,parent:o});var h=0;if(l.globals.hasXaxisGroups&&\"between\"===l.config.xaxis.tickPlacement){var c=l.globals.groups;if(c){for(var d=0,u=0;d<e&&u<c.length;u++)d+=c[u].cols;d===e&&(h=.6*l.globals.xAxisLabelsHeight)}}new Qi(this.ctx).drawXaxisTicks(i,h,l.globals.dom.elGraphical)}}},{key:\"_drawGridLine\",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,n=t.xCount,o=t.parent,l=this.w,h=o.node.classList.contains(\"apexcharts-gridlines-horizontal\"),c=l.globals.barPadForNumericAxis,d=0===a&&0===r||0===i&&0===s||a===l.globals.gridHeight&&r===l.globals.gridHeight||l.globals.isBarHorizontal&&(0===e||e===n-1),u=new Mi(this).drawLine(i-(h?c:0),a,s+(h?c:0),r,l.config.grid.borderColor,l.config.grid.strokeDashArray);u.node.classList.add(\"apexcharts-gridline\"),d&&l.config.grid.show?this.elGridBorders.add(u):o.add(u)}},{key:\"_drawGridBandRect\",value:function(t){var e=t.c,i=t.x1,a=t.y1,s=t.x2,r=t.y2,n=t.type,o=this.w,l=new Mi(this.ctx),h=o.globals.barPadForNumericAxis,c=o.config.grid[n].colors[e],d=l.drawRect(i-(\"row\"===n?h:0),a,s+(\"row\"===n?2*h:0),r,0,c,o.config.grid[n].opacity);this.elg.add(d),d.attr(\"clip-path\",\"url(#gridRectMask\".concat(o.globals.cuid,\")\")),d.node.classList.add(\"apexcharts-grid-\".concat(n))}},{key:\"_drawXYLines\",value:function(t){var e=this,i=t.xCount,a=t.tickAmount,s=this.w;if(s.config.grid.xaxis.lines.show||s.config.xaxis.axisTicks.show){var r,n=s.globals.padHorizontal,o=s.globals.gridHeight;s.globals.timescaleLabels.length?function(t){for(var a=t.xC,s=t.x1,r=t.y1,n=t.x2,o=t.y2,l=0;l<a;l++)s=e.xaxisLabels[l].position,n=e.xaxisLabels[l].position,e._drawGridLines({i:l,x1:s,y1:r,x2:n,y2:o,xCount:i,parent:e.elgridLinesV})}({xC:i,x1:n,y1:0,x2:r,y2:o}):(s.globals.isXNumeric&&(i=s.globals.xAxisScale.result.length),function(t){for(var a=t.xC,r=t.x1,n=t.y1,o=t.x2,l=t.y2,h=0;h<a+(s.globals.isXNumeric?0:1);h++)0===h&&1===a&&1===s.globals.dataPoints&&(o=r=s.globals.gridWidth/2),e._drawGridLines({i:h,x1:r,y1:n,x2:o,y2:l,xCount:i,parent:e.elgridLinesV}),o=r+=s.globals.gridWidth/(s.globals.isXNumeric?a-1:a)}({xC:i,x1:n,y1:0,x2:r,y2:o}))}if(s.config.grid.yaxis.lines.show){var l=0,h=0,c=s.globals.gridWidth,d=a+1;this.isRangeBar&&(d=s.globals.labels.length);for(var u=0;u<d+(this.isRangeBar?1:0);u++)this._drawGridLine({i:u,xCount:d+(this.isRangeBar?1:0),x1:0,y1:l,x2:c,y2:h,parent:this.elgridLinesH}),h=l+=s.globals.gridHeight/(this.isRangeBar?d:a)}}},{key:\"_drawInvertedXYLines\",value:function(t){var e=t.xCount,i=this.w;if(i.config.grid.xaxis.lines.show||i.config.xaxis.axisTicks.show)for(var a,s=i.globals.padHorizontal,r=i.globals.gridHeight,n=0;n<e+1;n++){i.config.grid.xaxis.lines.show&&this._drawGridLine({i:n,xCount:e+1,x1:s,y1:0,x2:a,y2:r,parent:this.elgridLinesV}),new Qi(this.ctx).drawXaxisTicks(s,0,i.globals.dom.elGraphical),a=s+=i.globals.gridWidth/e}if(i.config.grid.yaxis.lines.show)for(var o=0,l=0,h=i.globals.gridWidth,c=0;c<i.globals.dataPoints+1;c++)this._drawGridLine({i:c,xCount:i.globals.dataPoints+1,x1:0,y1:o,x2:h,y2:l,parent:this.elgridLinesH}),l=o+=i.globals.gridHeight/i.globals.dataPoints}},{key:\"renderGrid\",value:function(){var t=this.w,e=t.globals,i=new Mi(this.ctx);this.elg=i.group({class:\"apexcharts-grid\"}),this.elgridLinesH=i.group({class:\"apexcharts-gridlines-horizontal\"}),this.elgridLinesV=i.group({class:\"apexcharts-gridlines-vertical\"}),this.elGridBorders=i.group({class:\"apexcharts-grid-borders\"}),this.elg.add(this.elgridLinesH),this.elg.add(this.elgridLinesV),t.config.grid.show||(this.elgridLinesV.hide(),this.elgridLinesH.hide(),this.elGridBorders.hide());for(var a=0;a<e.seriesYAxisMap.length&&e.ignoreYAxisIndexes.includes(a);)a++;a===e.seriesYAxisMap.length&&(a=0);var s,r=e.yAxisScale[a].result.length-1;if(!e.isBarHorizontal||this.isRangeBar){var n,o,l;if(s=this.xaxisLabels.length,this.isRangeBar)r=e.labels.length,t.config.xaxis.tickAmount&&t.config.xaxis.labels.formatter&&(s=t.config.xaxis.tickAmount),(null===(n=e.yAxisScale)||void 0===n||null===(o=n[a])||void 0===o||null===(l=o.result)||void 0===l?void 0:l.length)>0&&\"datetime\"!==t.config.xaxis.type&&(s=e.yAxisScale[a].result.length-1);this._drawXYLines({xCount:s,tickAmount:r})}else s=r,r=e.xTickAmount,this._drawInvertedXYLines({xCount:s,tickAmount:r});return this.drawGridBands(s,r),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:e.gridWidth/s}}},{key:\"drawGridBands\",value:function(t,e){var i,a,s=this,r=this.w;if((null===(i=r.config.grid.row.colors)||void 0===i?void 0:i.length)>0&&function(t,i,a,n,o,l){for(var h=0,c=0;h<i;h++,c++)c>=r.config.grid[t].colors.length&&(c=0),s._drawGridBandRect({c:c,x1:a,y1:n,x2:o,y2:l,type:t}),n+=r.globals.gridHeight/e}(\"row\",e,0,0,r.globals.gridWidth,r.globals.gridHeight/e),(null===(a=r.config.grid.column.colors)||void 0===a?void 0:a.length)>0){var n=r.globals.isBarHorizontal||\"on\"!==r.config.xaxis.tickPlacement||\"category\"!==r.config.xaxis.type&&!r.config.xaxis.convertedCatToNumeric?t:t-1;r.globals.isXNumeric&&(n=r.globals.xAxisScale.result.length-1);for(var o=r.globals.padHorizontal,l=r.globals.padHorizontal+r.globals.gridWidth/n,h=r.globals.gridHeight,c=0,d=0;c<t;c++,d++){var u;if(d>=r.config.grid.column.colors.length&&(d=0),\"datetime\"===r.config.xaxis.type)o=this.xaxisLabels[c].position,l=((null===(u=this.xaxisLabels[c+1])||void 0===u?void 0:u.position)||r.globals.gridWidth)-this.xaxisLabels[c].position;this._drawGridBandRect({c:d,x1:o,y1:0,x2:l,y2:h,type:\"column\"}),o+=r.globals.gridWidth/n}}}}]),t}(),ta=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.coreUtils=new Pi(this.ctx)}return s(t,[{key:\"niceScale\",value:function(t,e){var i,a,s,r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=1e-11,l=this.w,h=l.globals;h.isBarHorizontal?(i=l.config.xaxis,a=Math.max((h.svgWidth-100)/25,2)):(i=l.config.yaxis[n],a=Math.max((h.svgHeight-100)/15,2)),v.isNumber(a)||(a=10),s=void 0!==i.min&&null!==i.min,r=void 0!==i.max&&null!==i.min;var c=void 0!==i.stepSize&&null!==i.stepSize,d=void 0!==i.tickAmount&&null!==i.tickAmount,u=d?i.tickAmount:h.niceScaleDefaultTicks[Math.min(Math.round(a/2),h.niceScaleDefaultTicks.length-1)];if(h.isMultipleYAxis&&!d&&h.multiAxisTickAmount>0&&(u=h.multiAxisTickAmount,d=!0),u=\"dataPoints\"===u?h.dataPoints-1:Math.abs(Math.round(u)),(t===Number.MIN_VALUE&&0===e||!v.isNumber(t)&&!v.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE)&&(t=v.isNumber(i.min)?i.min:0,e=v.isNumber(i.max)?i.max:t+u,h.allSeriesCollapsed=!1),t>e){console.warn(\"axis.min cannot be greater than axis.max: swapping min and max\");var g=e;e=t,t=g}else t===e&&(t=0===t?0:t-1,e=0===e?2:e+1);var p=[];u<1&&(u=1);var f=u,x=Math.abs(e-t);!s&&t>0&&t/x<.15&&(t=0,s=!0),!r&&e<0&&-e/x<.15&&(e=0,r=!0);var b=(x=Math.abs(e-t))/f,m=b,y=Math.floor(Math.log10(m)),w=Math.pow(10,y),k=Math.ceil(m/w);if(b=m=(k=h.niceScaleAllowedMagMsd[0===h.yValueDecimal?0:1][k])*w,h.isBarHorizontal&&i.stepSize&&\"datetime\"!==i.type?(b=i.stepSize,c=!0):c&&(b=i.stepSize),c&&i.forceNiceScale){var A=Math.floor(Math.log10(b));b*=Math.pow(10,y-A)}if(s&&r){var C=x/f;if(d)if(c)if(0!=v.mod(x,b)){var S=v.getGCD(b,C);b=C/S<10?S:C}else 0==v.mod(b,C)?b=C:(C=b,d=!1);else b=C;else if(c)0==v.mod(x,b)?C=b:b=C;else if(0==v.mod(x,b))C=b;else{C=x/(f=Math.ceil(x/b));var L=v.getGCD(x,b);x/L<a&&(C=L),b=C}f=Math.round(x/b)}else{if(s||r){if(r)if(d)t=e-b*f;else{var M=t;t=b*Math.floor(t/b),Math.abs(e-t)/v.getGCD(x,b)>a&&(t=e-b*u,t+=b*Math.floor((M-t)/b))}else if(s)if(d)e=t+b*f;else{var P=e;e=b*Math.ceil(e/b),Math.abs(e-t)/v.getGCD(x,b)>a&&(e=t+b*u,e+=b*Math.ceil((P-e)/b))}}else if(h.isMultipleYAxis&&d){var I=b*Math.floor(t/b),T=I+b*f;T<e&&(b*=2),T=e,e=(t=I)+b*f,x=Math.abs(e-t),t>0&&t<Math.abs(T-e)&&(t=0,e=b*f),e<0&&-e<Math.abs(I-t)&&(e=0,t=-b*f)}else t=b*Math.floor(t/b),e=b*Math.ceil(e/b);x=Math.abs(e-t),b=v.getGCD(x,b),f=Math.round(x/b)}if(d||s||r||(f=Math.ceil((x-o)/(b+o)))>16&&v.getPrimeFactors(f).length<2&&f++,!d&&i.forceNiceScale&&0===h.yValueDecimal&&f>x&&(f=x,b=Math.round(x/f)),f>a&&(!d&&!c||i.forceNiceScale)){var z=v.getPrimeFactors(f),X=z.length-1,R=f;t:for(var E=0;E<X;E++)for(var Y=0;Y<=X-E;Y++){for(var H=Math.min(Y+E,X),O=R,F=1,D=Y;D<=H;D++)F*=z[D];if((O/=F)<a){R=O;break t}}b=R===f?x:x/R,f=Math.round(x/b)}h.isMultipleYAxis&&0==h.multiAxisTickAmount&&h.ignoreYAxisIndexes.indexOf(n)<0&&(h.multiAxisTickAmount=f);var _=t-b,N=b*o;do{_+=b,p.push(v.stripNumber(_,7))}while(e-_>N);return{result:p,niceMin:p[0],niceMax:p[p.length-1]}}},{key:\"linearScale\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,r=Math.abs(e-t),n=[];if(t===e)return{result:n=[t],niceMin:n[0],niceMax:n[n.length-1]};\"dataPoints\"===(i=this._adjustTicksForSmallRange(i,a,r))&&(i=this.w.globals.dataPoints-1),s||(s=r/i),s=Math.round(100*(s+Number.EPSILON))/100,i===Number.MAX_VALUE&&(i=5,s=1);for(var o=t;i>=0;)n.push(o),o=v.preciseAddition(o,s),i-=1;return{result:n,niceMin:n[0],niceMax:n[n.length-1]}}},{key:\"logarithmicScaleNice\",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r<s;r++)a.push(Math.pow(i,r));return{result:a,niceMin:a[0],niceMax:a[a.length-1]}}},{key:\"logarithmicScale\",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.log(e)/Math.log(i),r=Math.log(t)/Math.log(i),n=s-r,o=Math.round(n),l=n/o,h=0,c=r;h<o;h++,c+=l)a.push(Math.pow(i,c));return a.push(Math.pow(i,s)),{result:a,niceMin:t,niceMax:e}}},{key:\"_adjustTicksForSmallRange\",value:function(t,e,i){var a=t;if(void 0!==e&&this.w.config.yaxis[e].labels.formatter&&void 0===this.w.config.yaxis[e].tickAmount){var s=Number(this.w.config.yaxis[e].labels.formatter(1));v.isNumber(s)&&0===this.w.globals.yValueDecimal&&(a=Math.ceil(i))}return a<t?a:t}},{key:\"setYScaleForIndex\",value:function(t,e,i){var a=this.w.globals,s=this.w.config,r=a.isBarHorizontal?s.xaxis:s.yaxis[t];void 0===a.yAxisScale[t]&&(a.yAxisScale[t]=[]);var n=Math.abs(i-e);r.logarithmic&&n<=5&&(a.invalidLogScale=!0),r.logarithmic&&n>5?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase)):i!==-Number.MAX_VALUE&&v.isNumber(i)&&e!==Number.MAX_VALUE&&v.isNumber(e)?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.niceScale(e,i,t)):a.yAxisScale[t]=this.niceScale(Number.MIN_VALUE,0,t)}},{key:\"setXScale\",value:function(t,e){var i=this.w,a=i.globals;if(e!==-Number.MAX_VALUE&&v.isNumber(e)){var s=a.xTickAmount;a.xAxisScale=this.linearScale(t,e,s,0,i.config.xaxis.stepSize)}else a.xAxisScale=this.linearScale(0,10,10);return a.xAxisScale}},{key:\"scaleMultipleYAxes\",value:function(){var t=this,e=this.w.config,i=this.w.globals;this.coreUtils.setSeriesYAxisMappings();var a=i.seriesYAxisMap,s=i.minYArr,r=i.maxYArr;i.allSeriesCollapsed=!0,i.barGroups=[],a.forEach((function(a,n){var o=[];a.forEach((function(t){var i,a=null===(i=e.series[t])||void 0===i?void 0:i.group;o.indexOf(a)<0&&o.push(a)})),a.length>0?function(){var l,h,c=Number.MAX_VALUE,d=-Number.MAX_VALUE,u=c,g=d;if(e.chart.stacked)!function(){var t=new Array(i.dataPoints).fill(0),s=[],r=[],p=[];o.forEach((function(){s.push(t.map((function(){return Number.MIN_VALUE}))),r.push(t.map((function(){return Number.MIN_VALUE}))),p.push(t.map((function(){return Number.MIN_VALUE})))}));for(var f=function(t){!l&&e.series[a[t]].type&&(l=e.series[a[t]].type);var c=a[t];h=e.series[c].group?e.series[c].group:\"axis-\".concat(n),!(i.collapsedSeriesIndices.indexOf(c)<0&&i.ancillaryCollapsedSeriesIndices.indexOf(c)<0)||(i.allSeriesCollapsed=!1,o.forEach((function(t,a){if(e.series[c].group===t)for(var n=0;n<i.series[c].length;n++){var o=i.series[c][n];o>=0?r[a][n]+=o:p[a][n]+=o,s[a][n]+=o,u=Math.min(u,o),g=Math.max(g,o)}}))),\"bar\"!==l&&\"column\"!==l||i.barGroups.push(h)},x=0;x<a.length;x++)f(x);l||(l=e.chart.type),\"bar\"===l||\"column\"===l?o.forEach((function(t,e){c=Math.min(c,Math.min.apply(null,p[e])),d=Math.max(d,Math.max.apply(null,r[e]))})):(o.forEach((function(t,e){u=Math.min(u,Math.min.apply(null,s[e])),g=Math.max(g,Math.max.apply(null,s[e]))})),c=u,d=g),c===Number.MIN_VALUE&&d===Number.MIN_VALUE&&(d=-Number.MAX_VALUE)}();else for(var p=0;p<a.length;p++){var f=a[p];c=Math.min(c,s[f]),d=Math.max(d,r[f]),!(i.collapsedSeriesIndices.indexOf(f)<0&&i.ancillaryCollapsedSeriesIndices.indexOf(f)<0)||(i.allSeriesCollapsed=!1)}void 0!==e.yaxis[n].min&&(c=\"function\"==typeof e.yaxis[n].min?e.yaxis[n].min(c):e.yaxis[n].min),void 0!==e.yaxis[n].max&&(d=\"function\"==typeof e.yaxis[n].max?e.yaxis[n].max(d):e.yaxis[n].max),i.barGroups=i.barGroups.filter((function(t,e,i){return i.indexOf(t)===e})),t.setYScaleForIndex(n,c,d),a.forEach((function(t){s[t]=i.yAxisScale[n].niceMin,r[t]=i.yAxisScale[n].niceMax}))}():t.setYScaleForIndex(n,0,-Number.MAX_VALUE)}))}}]),t}(),ea=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.scales=new ta(e)}return s(t,[{key:\"init\",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:\"getMinYMaxY\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,n=-Number.MAX_VALUE,o=Number.MIN_VALUE;null===a&&(a=t+1);var l=r.series,h=l,c=l;\"candlestick\"===s.chart.type?(h=r.seriesCandleL,c=r.seriesCandleH):\"boxPlot\"===s.chart.type?(h=r.seriesCandleO,c=r.seriesCandleC):r.isRangeData&&(h=r.seriesRangeStart,c=r.seriesRangeEnd);var d=!1;if(r.seriesX.length>=a){var u,g=null===(u=r.brushSource)||void 0===u?void 0:u.w.config.chart.brush;(s.chart.zoom.enabled&&s.chart.zoom.autoScaleYaxis||null!=g&&g.enabled&&null!=g&&g.autoScaleYaxis)&&(d=!0)}for(var p=t;p<a;p++){r.dataPoints=Math.max(r.dataPoints,l[p].length);var f=s.series[p].type;r.categoryLabels.length&&(r.dataPoints=r.categoryLabels.filter((function(t){return void 0!==t})).length),r.labels.length&&\"datetime\"!==s.xaxis.type&&0!==r.series.reduce((function(t,e){return t+e.length}),0)&&(r.dataPoints=Math.max(r.dataPoints,r.labels.length));var x=0,b=l[p].length-1;if(d){if(s.xaxis.min)for(;x<b&&r.seriesX[p][x]<s.xaxis.min;x++);if(s.xaxis.max)for(;b>x&&r.seriesX[p][b]>s.xaxis.max;b--);}for(var m=x;m<=b&&m<r.series[p].length;m++){var y=l[p][m];if(null!==y&&v.isNumber(y)){switch(void 0!==c[p][m]&&(n=Math.max(n,c[p][m]),e=Math.min(e,c[p][m])),void 0!==h[p][m]&&(e=Math.min(e,h[p][m]),i=Math.max(i,h[p][m])),f){case\"candlestick\":void 0!==r.seriesCandleC[p][m]&&(n=Math.max(n,r.seriesCandleH[p][m]),e=Math.min(e,r.seriesCandleL[p][m]));break;case\"boxPlot\":void 0!==r.seriesCandleC[p][m]&&(n=Math.max(n,r.seriesCandleC[p][m]),e=Math.min(e,r.seriesCandleO[p][m]))}f&&\"candlestick\"!==f&&\"boxPlot\"!==f&&\"rangeArea\"!==f&&\"rangeBar\"!==f&&(n=Math.max(n,r.series[p][m]),e=Math.min(e,r.series[p][m])),r.seriesGoals[p]&&r.seriesGoals[p][m]&&Array.isArray(r.seriesGoals[p][m])&&r.seriesGoals[p][m].forEach((function(t){n=Math.max(n,t.value),e=Math.min(e,t.value)})),i=n,y=v.noExponents(y),v.isFloat(y)&&(r.yValueDecimal=Math.max(r.yValueDecimal,y.toString().split(\".\")[1].length)),o>h[p][m]&&h[p][m]<0&&(o=h[p][m])}else r.hasNullValues=!0}\"bar\"!==f&&\"column\"!==f||(o<0&&n<0&&(n=0,i=Math.max(i,0)),o===Number.MIN_VALUE&&(o=0,e=Math.min(e,0)))}return\"rangeBar\"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(o=e),\"bar\"===s.chart.type&&(o<0&&n<0&&(n=0),o===Number.MIN_VALUE&&(o=0)),{minY:o,maxY:n,lowestY:e,highestY:i}}},{key:\"setYRange\",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i,a=Number.MAX_VALUE;if(t.isMultipleYAxis){a=Number.MAX_VALUE;for(var s=0;s<t.series.length;s++)i=this.getMinYMaxY(s),t.minYArr[s]=i.lowestY,t.maxYArr[s]=i.highestY,a=Math.min(a,i.lowestY)}if(i=this.getMinYMaxY(0,a,null,t.series.length),\"bar\"===e.chart.type?(t.minY=i.minY,t.maxY=i.maxY):(t.minY=i.lowestY,t.maxY=i.highestY),a=i.lowestY,e.chart.stacked&&this._setStackedMinMax(),\"line\"===e.chart.type||\"area\"===e.chart.type||\"scatter\"===e.chart.type||\"candlestick\"===e.chart.type||\"boxPlot\"===e.chart.type||\"rangeBar\"===e.chart.type&&!t.isBarHorizontal?t.minY===Number.MIN_VALUE&&a!==-Number.MAX_VALUE&&a!==t.maxY&&(t.minY=a):t.minY=t.minY!==Number.MIN_VALUE?Math.min(i.minY,t.minY):i.minY,e.yaxis.forEach((function(e,i){void 0!==e.max&&(\"number\"==typeof e.max?t.maxYArr[i]=e.max:\"function\"==typeof e.max&&(t.maxYArr[i]=e.max(t.isMultipleYAxis?t.maxYArr[i]:t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&(\"number\"==typeof e.min?t.minYArr[i]=e.min:\"function\"==typeof e.min&&(t.minYArr[i]=e.min(t.isMultipleYAxis?t.minYArr[i]===Number.MIN_VALUE?0:t.minYArr[i]:t.minY)),t.minY=t.minYArr[i])})),t.isBarHorizontal){[\"min\",\"max\"].forEach((function(i){void 0!==e.xaxis[i]&&\"number\"==typeof e.xaxis[i]&&(\"min\"===i?t.minY=e.xaxis[i]:t.maxY=e.xaxis[i])}))}return t.isMultipleYAxis?(this.scales.scaleMultipleYAxes(),t.minY=a):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.minY,t.maxYArr[0]=t.maxY),t.barGroups=[],t.lineGroups=[],t.areaGroups=[],e.series.forEach((function(i){switch(i.type||e.chart.type){case\"bar\":case\"column\":t.barGroups.push(i.group);break;case\"line\":t.lineGroups.push(i.group);break;case\"area\":t.areaGroups.push(i.group)}})),t.barGroups=t.barGroups.filter((function(t,e,i){return i.indexOf(t)===e})),t.lineGroups=t.lineGroups.filter((function(t,e,i){return i.indexOf(t)===e})),t.areaGroups=t.areaGroups.filter((function(t,e,i){return i.indexOf(t)===e})),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr,yAxisScale:t.yAxisScale}}},{key:\"setXRange\",value:function(){var t=this.w.globals,e=this.w.config,i=\"numeric\"===e.xaxis.type||\"datetime\"===e.xaxis.type||\"category\"===e.xaxis.type&&!t.noLabelsProvided||t.noLabelsProvided||t.isXNumeric;if(t.isXNumeric&&function(){for(var e=0;e<t.series.length;e++)if(t.labels[e])for(var i=0;i<t.labels[e].length;i++)null!==t.labels[e][i]&&v.isNumber(t.labels[e][i])&&(t.maxX=Math.max(t.maxX,t.labels[e][i]),t.initialMaxX=Math.max(t.maxX,t.labels[e][i]),t.minX=Math.min(t.minX,t.labels[e][i]),t.initialMinX=Math.min(t.minX,t.labels[e][i]))}(),t.noLabelsProvided&&0===e.xaxis.categories.length&&(t.maxX=t.labels[t.labels.length-1],t.initialMaxX=t.labels[t.labels.length-1],t.minX=1,t.initialMinX=1),t.isXNumeric||t.noLabelsProvided||t.dataFormatXNumeric){var a=10;if(void 0===e.xaxis.tickAmount)a=Math.round(t.svgWidth/150),\"numeric\"===e.xaxis.type&&t.dataPoints<30&&(a=t.dataPoints-1),a>t.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1);else if(\"dataPoints\"===e.xaxis.tickAmount){if(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric){var s=Math.round(t.maxX-t.minX);s<30&&(a=s-1)}}else a=e.xaxis.tickAmount;if(t.xTickAmount=a,void 0!==e.xaxis.max&&\"number\"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&\"number\"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var r=[],n=t.minX-1;n<t.maxX;n++)r.push(n+1);t.xAxisScale={result:r,niceMin:r[0],niceMax:r[r.length-1]}}else t.xAxisScale=this.scales.setXScale(t.minX,t.maxX);else t.xAxisScale=this.scales.linearScale(0,a,a,0,e.xaxis.stepSize),t.noLabelsProvided&&t.labels.length>0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1,0,e.xaxis.stepSize),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:\"setZRange\",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e<t.series.length;e++)if(void 0!==t.seriesZ[e])for(var i=0;i<t.seriesZ[e].length;i++)null!==t.seriesZ[e][i]&&v.isNumber(t.seriesZ[e][i])&&(t.maxZ=Math.max(t.maxZ,t.seriesZ[e][i]),t.minZ=Math.min(t.minZ,t.seriesZ[e][i]))}},{key:\"_handleSingleDataPoint\",value:function(){var t=this.w.globals,e=this.w.config;if(t.minX===t.maxX){var i=new zi(this.ctx);if(\"datetime\"===e.xaxis.type){var a=i.getDate(t.minX);e.xaxis.labels.datetimeUTC?a.setUTCDate(a.getUTCDate()-2):a.setDate(a.getDate()-2),t.minX=new Date(a).getTime();var s=i.getDate(t.maxX);e.xaxis.labels.datetimeUTC?s.setUTCDate(s.getUTCDate()+2):s.setDate(s.getDate()+2),t.maxX=new Date(s).getTime()}else(\"numeric\"===e.xaxis.type||\"category\"===e.xaxis.type&&!t.noLabelsProvided)&&(t.minX=t.minX-2,t.initialMinX=t.minX,t.maxX=t.maxX+2,t.initialMaxX=t.maxX)}}},{key:\"_getMinXDiff\",value:function(){var t=this.w.globals;t.isXNumeric&&t.seriesX.forEach((function(e,i){if(e.length){1===e.length&&e.push(t.seriesX[t.maxValsInArrayIndex][t.seriesX[t.maxValsInArrayIndex].length-1]);var a=e.slice();a.sort((function(t,e){return t-e})),a.forEach((function(e,i){if(i>0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}}))}},{key:\"_setStackedMinMax\",value:function(){var t=this,e=this.w.globals;if(e.series.length){var i=e.seriesGroups;i.length||(i=[this.w.globals.seriesNames.map((function(t){return t}))]);var a={},s={};i.forEach((function(i){a[i]=[],s[i]=[],t.w.config.series.map((function(t,a){return i.indexOf(e.seriesNames[a])>-1?a:null})).filter((function(t){return null!==t})).forEach((function(r){for(var n=0;n<e.series[e.maxValsInArrayIndex].length;n++){var o,l,h,c;void 0===a[i][n]&&(a[i][n]=0,s[i][n]=0),(t.w.config.chart.stacked&&!e.comboCharts||t.w.config.chart.stacked&&e.comboCharts&&(!t.w.config.chart.stackOnlyBar||\"bar\"===(null===(o=t.w.config.series)||void 0===o||null===(l=o[r])||void 0===l?void 0:l.type)||\"column\"===(null===(h=t.w.config.series)||void 0===h||null===(c=h[r])||void 0===c?void 0:c.type)))&&null!==e.series[r][n]&&v.isNumber(e.series[r][n])&&(e.series[r][n]>0?a[i][n]+=parseFloat(e.series[r][n])+1e-4:s[i][n]+=parseFloat(e.series[r][n]))}}))})),Object.entries(a).forEach((function(t){var i=p(t,1)[0];a[i].forEach((function(t,r){e.maxY=Math.max(e.maxY,a[i][r]),e.minY=Math.min(e.minY,s[i][r])}))}))}}}]),t}(),ia=function(){function t(e,a){i(this,t),this.ctx=e,this.elgrid=a,this.w=e.w;var s=this.w;this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.axisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal=\"bar\"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xAxisoffX=\"bottom\"===s.config.xaxis.position?s.globals.gridHeight:0,this.drawnLabels=[],this.axesUtils=new Ri(e)}return s(t,[{key:\"drawYaxis\",value:function(t){var e=this.w,i=new Mi(this.ctx),a=e.config.yaxis[t].labels.style,s=a.fontSize,r=a.fontFamily,n=a.fontWeight,o=i.group({class:\"apexcharts-yaxis\",rel:t,transform:\"translate(\".concat(e.globals.translateYAxisX[t],\", 0)\")});if(this.axesUtils.isYAxisHidden(t))return o;var l=i.group({class:\"apexcharts-yaxis-texts-g\"});o.add(l);var h=e.globals.yAxisScale[t].result.length-1,c=e.globals.gridHeight/h,d=e.globals.yLabelFormatters[t],u=this.axesUtils.checkForReversedLabels(t,e.globals.yAxisScale[t].result.slice());if(e.config.yaxis[t].labels.show){var g=e.globals.translateY+e.config.yaxis[t].labels.offsetY;e.globals.isBarHorizontal?g=0:\"heatmap\"===e.config.chart.type&&(g-=c/2),g+=parseInt(s,10)/3;for(var p=h;p>=0;p--){var f=d(u[p],p,e),x=e.config.yaxis[t].labels.padding;e.config.yaxis[t].opposite&&0!==e.config.yaxis.length&&(x*=-1);var b=this.getTextAnchor(e.config.yaxis[t].labels.align,e.config.yaxis[t].opposite),m=this.axesUtils.getYAxisForeColor(a.colors,t),y=Array.isArray(m)?m[p]:m,w=v.listToArray(e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-label tspan\"))).map((function(t){return t.textContent})),k=i.drawText({x:x,y:g,text:w.includes(f)&&!e.config.yaxis[t].labels.showDuplicates?\"\":f,textAnchor:b,fontSize:s,fontFamily:r,fontWeight:n,maxWidth:e.config.yaxis[t].labels.maxWidth,foreColor:y,isPlainText:!1,cssClass:\"apexcharts-yaxis-label \".concat(a.cssClass)});l.add(k),this.addTooltip(k,f),0!==e.config.yaxis[t].labels.rotate&&this.rotateLabel(i,k,firstLabel,e.config.yaxis[t].labels.rotate),g+=c}}return this.addYAxisTitle(i,o,t),this.addAxisBorder(i,o,t,h,c),o}},{key:\"getTextAnchor\",value:function(t,e){return\"left\"===t?\"start\":\"center\"===t?\"middle\":\"right\"===t?\"end\":e?\"start\":\"end\"}},{key:\"addTooltip\",value:function(t,e){var i=document.createElementNS(this.w.globals.SVGNS,\"title\");i.textContent=Array.isArray(e)?e.join(\" \"):e,t.node.appendChild(i)}},{key:\"rotateLabel\",value:function(t,e,i,a){var s=t.rotateAroundCenter(i.node),r=t.rotateAroundCenter(e.node);e.node.setAttribute(\"transform\",\"rotate(\".concat(a,\" \").concat(s.x,\" \").concat(r.y,\")\"))}},{key:\"addYAxisTitle\",value:function(t,e,i){var a=this.w;if(void 0!==a.config.yaxis[i].title.text){var s=t.group({class:\"apexcharts-yaxis-title\"}),r=a.config.yaxis[i].opposite?a.globals.translateYAxisX[i]:0,n=t.drawText({x:r,y:a.globals.gridHeight/2+a.globals.translateY+a.config.yaxis[i].title.offsetY,text:a.config.yaxis[i].title.text,textAnchor:\"end\",foreColor:a.config.yaxis[i].title.style.color,fontSize:a.config.yaxis[i].title.style.fontSize,fontWeight:a.config.yaxis[i].title.style.fontWeight,fontFamily:a.config.yaxis[i].title.style.fontFamily,cssClass:\"apexcharts-yaxis-title-text \".concat(a.config.yaxis[i].title.style.cssClass)});s.add(n),e.add(s)}}},{key:\"addAxisBorder\",value:function(t,e,i,a,s){var r=this.w,n=r.config.yaxis[i].axisBorder,o=31+n.offsetX;if(r.config.yaxis[i].opposite&&(o=-31-n.offsetX),n.show){var l=t.drawLine(o,r.globals.translateY+n.offsetY-2,o,r.globals.gridHeight+r.globals.translateY+n.offsetY+2,n.color,0,n.width);e.add(l)}r.config.yaxis[i].axisTicks.show&&this.axesUtils.drawYAxisTicks(o,a,n,r.config.yaxis[i].axisTicks,i,s,e)}},{key:\"drawYaxisInversed\",value:function(t){var e=this.w,i=new Mi(this.ctx),a=i.group({class:\"apexcharts-xaxis apexcharts-yaxis-inversed\"}),s=i.group({class:\"apexcharts-xaxis-texts-g\",transform:\"translate(\".concat(e.globals.translateXAxisX,\", \").concat(e.globals.translateXAxisY,\")\")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,n=e.globals.gridWidth/r+.1,o=n+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=this.axesUtils.checkForReversedLabels(t,e.globals.yAxisScale[t].result.slice()),c=e.globals.timescaleLabels;if(c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),e.config.xaxis.labels.show)for(var d=c.length?0:r;c.length?d<c.length:d>=0;c.length?d++:d--){var u=l(h[d],d,e),g=e.globals.gridWidth+e.globals.padHorizontal-(o-n+e.config.xaxis.labels.offsetX);if(c.length){var p=this.axesUtils.getLabel(h,c,g,d,this.drawnLabels,this.xaxisFontSize);g=p.x,u=p.text,this.drawnLabels.push(p.text),0===d&&e.globals.skipFirstTimelinelabel&&(u=\"\"),d===h.length-1&&e.globals.skipLastTimelinelabel&&(u=\"\")}var f=i.drawText({x:g,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-(\"top\"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:u,textAnchor:\"middle\",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:\"apexcharts-xaxis-label \".concat(e.config.xaxis.labels.style.cssClass)});s.add(f),f.tspan(u),this.addTooltip(f,u),o+=n}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:\"inversedYAxisBorder\",value:function(t){var e=this.w,i=new Mi(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;\"bar\"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders&&e.config.grid.show?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:\"inversedYAxisTitleText\",value:function(t){var e=this.w,i=new Mi(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:\"apexcharts-xaxis-title apexcharts-yaxis-title-inversed\"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:\"middle\",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:\"apexcharts-xaxis-title-text \".concat(e.config.xaxis.title.style.cssClass)});a.add(s),t.add(a)}}},{key:\"yAxisTitleRotate\",value:function(t,e){var i=this.w,a=new Mi(this.ctx),s=i.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-texts-g\")),r=s?s.getBoundingClientRect():{width:0,height:0},n=i.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-title text\")),o=n?n.getBoundingClientRect():{width:0,height:0};if(n){var l=this.xPaddingForYAxisTitle(t,r,o,e);n.setAttribute(\"x\",l.xPos-(e?10:0));var h=a.rotateAroundCenter(n);n.setAttribute(\"transform\",\"rotate(\".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate,\" \").concat(h.x,\" \").concat(h.y,\")\"))}}},{key:\"xPaddingForYAxisTitle\",value:function(t,e,i,a){var s=this.w,r=0,n=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:r,padd:0}:(a?r=e.width+s.config.yaxis[t].title.offsetX+i.width/2+n/2:(r=-1*e.width+s.config.yaxis[t].title.offsetX+n/2+i.width/2,s.globals.isBarHorizontal&&(n=25,r=-1*e.width-s.config.yaxis[t].title.offsetX-n)),{xPos:r,padd:n})}},{key:\"setYAxisXPosition\",value:function(t,e){var i=this.w,a=0,s=0,r=18,n=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.forEach((function(o,l){var h=i.globals.ignoreYAxisIndexes.includes(l)||!o.show||o.floating||0===t[l].width,c=t[l].width+e[l].width;o.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-o.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+n,h||(n+=c+20),i.globals.translateYAxisX[l]=s-o.labels.offsetX+20):(a=i.globals.translateX-r,h||(r+=c+20),i.globals.translateYAxisX[l]=a+o.labels.offsetX)}))}},{key:\"setYAxisTextAlignments\",value:function(){var t=this.w;v.listToArray(t.globals.dom.baseEl.getElementsByClassName(\"apexcharts-yaxis\")).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&!a.floating&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(i,\"'] .apexcharts-yaxis-texts-g\")),r=v.listToArray(t.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis[rel='\".concat(i,\"'] .apexcharts-yaxis-label\"))),n=s.getBoundingClientRect();r.forEach((function(t){t.setAttribute(\"text-anchor\",a.labels.align)})),\"left\"!==a.labels.align||a.opposite?\"center\"===a.labels.align?s.setAttribute(\"transform\",\"translate(\".concat(n.width/2*(a.opposite?1:-1),\", 0)\")):\"right\"===a.labels.align&&a.opposite&&s.setAttribute(\"transform\",\"translate(\".concat(n.width,\", 0)\")):s.setAttribute(\"transform\",\"translate(-\".concat(n.width,\", 0)\"))}}))}}]),t}(),aa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.documentEvent=v.bind(this.documentEvent,this)}return s(t,[{key:\"addEventListener\",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:\"removeEventListener\",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:\"fireEvent\",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r<s;r++)a[r].apply(null,e)}}},{key:\"setupEventHandlers\",value:function(){var t=this,e=this.w,i=this.ctx,a=e.globals.dom.baseEl.querySelector(e.globals.chartClass);this.ctx.eventList.forEach((function(t){a.addEventListener(t,(function(t){var a=Object.assign({},e,{seriesIndex:e.globals.axisCharts?e.globals.capturedSeriesIndex:0,dataPointIndex:e.globals.capturedDataPointIndex});\"mousemove\"===t.type||\"touchmove\"===t.type?\"function\"==typeof e.config.chart.events.mouseMove&&e.config.chart.events.mouseMove(t,i,a):\"mouseleave\"===t.type||\"touchleave\"===t.type?\"function\"==typeof e.config.chart.events.mouseLeave&&e.config.chart.events.mouseLeave(t,i,a):(\"mouseup\"===t.type&&1===t.which||\"touchend\"===t.type)&&(\"function\"==typeof e.config.chart.events.click&&e.config.chart.events.click(t,i,a),i.ctx.events.fireEvent(\"click\",[t,i,a]))}),{capture:!1,passive:!0})})),this.ctx.eventList.forEach((function(i){e.globals.dom.baseEl.addEventListener(i,t.documentEvent,{passive:!0})})),this.ctx.core.setupBrushHandler()}},{key:\"documentEvent\",value:function(t){var e=this.w,i=t.target.className;if(\"click\"===t.type){var a=e.globals.dom.baseEl.querySelector(\".apexcharts-menu\");a&&a.classList.contains(\"apexcharts-menu-open\")&&\"apexcharts-menu-icon\"!==i&&a.classList.remove(\"apexcharts-menu-open\")}e.globals.clientX=\"touchmove\"===t.type?t.touches[0].clientX:t.clientX,e.globals.clientY=\"touchmove\"===t.type?t.touches[0].clientY:t.clientY}}]),t}(),sa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"setCurrentLocaleValues\",value:function(t){var e=this.w.config.chart.locales;window.Apex.chart&&window.Apex.chart.locales&&window.Apex.chart.locales.length>0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error(\"Wrong locale name provided. Please make sure you set the correct locale name in options\");var a=v.extend(Hi,i);this.w.globals.locale=a.options}}]),t}(),ra=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"drawAxis\",value:function(t,e){var i,a,s=this,r=this.w.globals,n=this.w.config,o=new Qi(this.ctx,e),l=new ia(this.ctx,e);r.axisCharts&&\"radar\"!==t&&(r.isBarHorizontal?(a=l.drawYaxisInversed(0),i=o.drawXaxisInversed(0),r.dom.elGraphical.add(i),r.dom.elGraphical.add(a)):(i=o.drawXaxis(),r.dom.elGraphical.add(i),n.yaxis.map((function(t,e){if(-1===r.ignoreYAxisIndexes.indexOf(e)&&(a=l.drawYaxis(e),r.dom.Paper.add(a),\"back\"===s.w.config.grid.position)){var i=r.dom.Paper.children()[1];i.remove(),r.dom.Paper.add(i)}}))))}}]),t}(),na=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"drawXCrosshairs\",value:function(){var t=this.w,e=new Mi(this.ctx),i=new Li(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,n=a.colorFrom,o=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,u=s.left,g=s.top,p=s.blur,f=s.color,x=s.opacity,b=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){\"gradient\"===r&&(b=e.drawGradient(\"vertical\",n,o,l,h,null,c,null));var m=e.drawRect();1===t.config.xaxis.crosshairs.width&&(m=e.drawLine());var y=t.globals.gridHeight;(!v.isNumber(y)||y<0)&&(y=0);var w=t.config.xaxis.crosshairs.width;(!v.isNumber(w)||w<0)&&(w=0),m.attr({class:\"apexcharts-xcrosshairs\",x:0,y:0,y2:y,width:w,height:y,fill:b,filter:\"none\",\"fill-opacity\":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,\"stroke-width\":t.config.xaxis.crosshairs.stroke.width,\"stroke-dasharray\":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(m=i.dropShadow(m,{left:u,top:g,blur:p,color:f,opacity:x})),t.globals.dom.elGraphical.add(m)}}},{key:\"drawYCrosshairs\",value:function(){var t=this.w,e=new Mi(this.ctx),i=t.config.yaxis[0].crosshairs,a=t.globals.barPadForNumericAxis;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:\"apexcharts-ycrosshairs\"}),t.globals.dom.elGraphical.add(s)}var r=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:\"apexcharts-ycrosshairs-hidden\"}),t.globals.dom.elGraphical.add(r)}}]),t}(),oa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"checkResponsiveConfig\",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new Wi({}),n=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,n=window.innerWidth>0?window.innerWidth:screen.width;if(n>a){var o=v.clone(i.globals.initialConfig);o.series=v.clone(i.config.series);var l=Pi.extendArrayProps(r,o,i);t=v.extend(l,t),t=v.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var h=0;h<s.length;h++)n<s[h].breakpoint&&(t=Pi.extendArrayProps(r,s[h].options,i),t=v.extend(i.config,t),e.overrideResponsiveOptions(t))};if(t){var o=Pi.extendArrayProps(r,t,i);o=v.extend(i.config,o),n(o=v.extend(o,t))}else n({})}}},{key:\"overrideResponsiveOptions\",value:function(t){var e=new Wi(t).init({responsiveOverride:!0});this.w.config=e}}]),t}(),la=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.colors=[],this.isColorFn=!1,this.isHeatmapDistributed=this.checkHeatmapDistributed(),this.isBarDistributed=this.checkBarDistributed()}return s(t,[{key:\"checkHeatmapDistributed\",value:function(){var t=this.w.config,e=t.chart,i=t.plotOptions;return\"treemap\"===e.type&&i.treemap&&i.treemap.distributed||\"heatmap\"===e.type&&i.heatmap&&i.heatmap.distributed}},{key:\"checkBarDistributed\",value:function(){var t=this.w.config,e=t.chart,i=t.plotOptions;return i.bar&&i.bar.distributed&&(\"bar\"===e.type||\"rangeBar\"===e.type)}},{key:\"init\",value:function(){this.setDefaultColors()}},{key:\"setDefaultColors\",value:function(){var t=this.w,e=new v;t.globals.dom.elWrap.classList.add(\"apexcharts-theme-\".concat(t.config.theme.mode));var i=f(t.config.colors||t.config.fill.colors||[]);t.globals.colors=this.getColors(i),this.applySeriesColors(t.globals.seriesColors,t.globals.colors),t.config.theme.monochrome.enabled&&(t.globals.colors=this.getMonochromeColors(t.config.theme.monochrome,t.globals.series,e));var a=t.globals.colors.slice();this.pushExtraColors(t.globals.colors),this.applyColorTypes([\"fill\",\"stroke\"],a),this.applyDataLabelsColors(a),this.applyRadarPolygonsColors(),this.applyMarkersColors(a)}},{key:\"getColors\",value:function(t){var e=this,i=this.w;return t&&0!==t.length?Array.isArray(t)&&t.length>0&&\"function\"==typeof t[0]?(this.isColorFn=!0,i.config.series.map((function(a,s){var r=t[s]||t[0];return\"function\"==typeof r?r({value:i.globals.axisCharts?i.globals.series[s][0]||0:i.globals.series[s],seriesIndex:s,dataPointIndex:s,w:e.w}):r}))):t:this.predefined()}},{key:\"applySeriesColors\",value:function(t,e){t.forEach((function(t,i){t&&(e[i]=t)}))}},{key:\"getMonochromeColors\",value:function(t,e,i){var a=t.color,s=t.shadeIntensity,r=t.shadeTo,n=this.isBarDistributed||this.isHeatmapDistributed?e[0].length*e.length:e.length,o=1/(n/s),l=0;return Array.from({length:n},(function(){var t=\"dark\"===r?i.shadeColor(-1*l,a):i.shadeColor(l,a);return l+=o,t}))}},{key:\"applyColorTypes\",value:function(t,e){var i=this,a=this.w;t.forEach((function(t){a.globals[t].colors=void 0===a.config[t].colors?i.isColorFn?a.config.colors:e:a.config[t].colors.slice(),i.pushExtraColors(a.globals[t].colors)}))}},{key:\"applyDataLabelsColors\",value:function(t){var e=this.w;e.globals.dataLabels.style.colors=void 0===e.config.dataLabels.style.colors?t:e.config.dataLabels.style.colors.slice(),this.pushExtraColors(e.globals.dataLabels.style.colors,50)}},{key:\"applyRadarPolygonsColors\",value:function(){var t=this.w;t.globals.radarPolygons.fill.colors=void 0===t.config.plotOptions.radar.polygons.fill.colors?[\"dark\"===t.config.theme.mode?\"#424242\":\"none\"]:t.config.plotOptions.radar.polygons.fill.colors.slice(),this.pushExtraColors(t.globals.radarPolygons.fill.colors,20)}},{key:\"applyMarkersColors\",value:function(t){var e=this.w;e.globals.markers.colors=void 0===e.config.markers.colors?t:e.config.markers.colors.slice(),this.pushExtraColors(e.globals.markers.colors)}},{key:\"pushExtraColors\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||\"heatmap\"===a.config.chart.type&&a.config.plotOptions.heatmap&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.length<s)for(var r=s-t.length,n=0;n<r;n++)t.push(t[n])}},{key:\"updateThemeOptions\",value:function(t){t.chart=t.chart||{},t.tooltip=t.tooltip||{};var e=t.theme.mode,i=\"dark\"===e?\"palette4\":\"light\"===e?\"palette1\":t.theme.palette||\"palette1\",a=\"dark\"===e?\"#f6f7f8\":\"light\"===e?\"#373d3f\":t.chart.foreColor||\"#373d3f\";return t.tooltip.theme=e||\"light\",t.chart.foreColor=a,t.theme.palette=i,t}},{key:\"predefined\",value:function(){var t={palette1:[\"#008FFB\",\"#00E396\",\"#FEB019\",\"#FF4560\",\"#775DD0\"],palette2:[\"#3f51b5\",\"#03a9f4\",\"#4caf50\",\"#f9ce1d\",\"#FF9800\"],palette3:[\"#33b2df\",\"#546E7A\",\"#d4526e\",\"#13d8aa\",\"#A5978B\"],palette4:[\"#4ecdc4\",\"#c7f464\",\"#81D4FA\",\"#fd6a6a\",\"#546E7A\"],palette5:[\"#2b908f\",\"#f9a3a4\",\"#90ee7e\",\"#fa4443\",\"#69d2e7\"],palette6:[\"#449DD1\",\"#F86624\",\"#EA3546\",\"#662E9B\",\"#C5D86D\"],palette7:[\"#D7263D\",\"#1B998B\",\"#2E294E\",\"#F46036\",\"#E2C044\"],palette8:[\"#662E9B\",\"#F86624\",\"#F9C80E\",\"#EA3546\",\"#43BCCD\"],palette9:[\"#5C4742\",\"#A5978B\",\"#8D5B4C\",\"#5A2A27\",\"#C4BBAF\"],palette10:[\"#A300D6\",\"#7D02EB\",\"#5653FE\",\"#2983FF\",\"#00B1F2\"],default:[\"#008FFB\",\"#00E396\",\"#FEB019\",\"#FF4560\",\"#775DD0\"]};return t[this.w.config.theme.palette]||t.default}}]),t}(),ha=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"draw\",value:function(){this.drawTitleSubtitle(\"title\"),this.drawTitleSubtitle(\"subtitle\")}},{key:\"drawTitleSubtitle\",value:function(t){var e=this.w,i=\"title\"===t?e.config.title:e.config.subtitle,a=e.globals.svgWidth/2,s=i.offsetY,r=\"middle\";if(\"left\"===i.align?(a=10,r=\"start\"):\"right\"===i.align&&(a=e.globals.svgWidth-10,r=\"end\"),a+=i.offsetX,s=s+parseInt(i.style.fontSize,10)+i.margin/2,void 0!==i.text){var n=new Mi(this.ctx).drawText({x:a,y:s,text:i.text,textAnchor:r,fontSize:i.style.fontSize,fontFamily:i.style.fontFamily,fontWeight:i.style.fontWeight,foreColor:i.style.color,opacity:1});n.node.setAttribute(\"class\",\"apexcharts-\".concat(t,\"-text\")),e.globals.dom.Paper.add(n)}}}]),t}(),ca=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:\"getTitleSubtitleCoords\",value:function(t){var e=this.w,i=0,a=0,s=\"title\"===t?e.config.title.floating:e.config.subtitle.floating,r=e.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(t,\"-text\"));if(null!==r&&!s){var n=r.getBoundingClientRect();i=n.width,a=e.globals.axisCharts?n.height+5:n.height}return{width:i,height:a}}},{key:\"getLegendsRect\",value:function(){var t=this.w,e=t.globals.dom.elLegendWrap;t.config.legend.height||\"top\"!==t.config.legend.position&&\"bottom\"!==t.config.legend.position||(e.style.maxHeight=t.globals.svgHeight/2+\"px\");var i=Object.assign({},v.getBoundingClientRect(e));return null!==e&&!t.config.legend.floating&&t.config.legend.show?this.dCtx.lgRect={x:i.x,y:i.y,height:i.height,width:0===i.height?0:i.width}:this.dCtx.lgRect={x:0,y:0,height:0,width:0},\"left\"!==t.config.legend.position&&\"right\"!==t.config.legend.position||1.5*this.dCtx.lgRect.width>t.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:\"getDatalabelsRect\",value:function(){var t=this,e=this.w,i=[];e.config.series.forEach((function(s,r){s.data.forEach((function(s,n){var o;o=e.globals.series[r][n],a=e.config.dataLabels.formatter(o,{ctx:t.dCtx.ctx,seriesIndex:r,dataPointIndex:n,w:e}),i.push(a)}))}));var a=v.getLargestStringFromArr(i),s=new Mi(this.dCtx.ctx),r=e.config.dataLabels.style,n=s.getTextRects(a,parseInt(r.fontSize),r.fontFamily);return{width:1.05*n.width,height:n.height}}},{key:\"getLargestStringFromMultiArr\",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,f(a));i=e[a.indexOf(s)]}return i}}]),t}(),da=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:\"getxAxisLabelsCoords\",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends=\"left\"!==e.config.legend.position&&\"right\"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=v.getLargestStringFromArr(i),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(n=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var o=new Xi(this.dCtx.ctx),l=r;r=o.xLabelFormat(s,r,l,{i:void 0,dateFormatter:new zi(this.dCtx.ctx).formatDate,w:e}),n=o.xLabelFormat(s,n,l,{i:void 0,dateFormatter:new zi(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||\"\"===String(r).trim())&&(n=r=\"1\");var h=new Mi(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==n&&(d=h.getTextRects(n,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var u=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,\"rotate(\".concat(e.config.xaxis.labels.rotate,\" 0 0)\"),!1)};c=u(r),r!==n&&(d=u(n)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:\"getxAxisGroupLabelsCoords\",value:function(){var t,e=this.w;if(!e.globals.hasXaxisGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=v.getLargestStringFromArr(s),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),o=new Mi(this.dCtx.ctx),l=o.getTextRects(r,a),h=l;return r!==n&&(h=o.getTextRects(n,a)),i={width:l.width>=h.width?l.width:h.width,height:l.height>=h.height?l.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:\"getxAxisTitleCoords\",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new Mi(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:\"getxAxisTimeScaleLabelsCoords\",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error(\"You have possibly supplied invalid Date format. Please supply a valid JavaScript Date\"),0):t.length>e.length?t:e}),0);return 1.05*(t=new Mi(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:\"additionalPaddingXLabels\",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,n=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var o=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,o){s.yaxis.length>1&&function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)}(o)||function(t){if(e.dCtx.timescaleLabels&&e.dCtx.timescaleLabels.length){var o=e.dCtx.timescaleLabels[0],l=e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length-1].position+n/1.75-e.dCtx.yAxisWidthRight,h=o.position-n/1.75+e.dCtx.yAxisWidthLeft,c=\"right\"===i.config.legend.position&&e.dCtx.lgRect.width>0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-c&&(a.skipLastTimelinelabel=!0),h<-(t.show&&!t.floating||\"bar\"!==s.chart.type&&\"candlestick\"!==s.chart.type&&\"rangeBar\"!==s.chart.type&&\"boxPlot\"!==s.chart.type?10:n/1.75)&&(a.skipFirstTimelinelabel=!0)}else\"datetime\"===r?e.dCtx.gridPad.right<n&&!a.rotateXLabels&&(a.skipLastTimelinelabel=!0):\"datetime\"!==r&&e.dCtx.gridPad.right<n/2-e.dCtx.yAxisWidthRight&&!a.rotateXLabels&&!i.config.xaxis.labels.trim&&(e.dCtx.xPadRight=n/2+1)}(t)};s.yaxis.forEach((function(t,i){o?(e.dCtx.gridPad.left<n&&(e.dCtx.xPadLeft=n/2+1),e.dCtx.xPadRight=n/2+1):l(t,i)}))}}]),t}(),ua=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:\"getyAxisLabelsCoords\",value:function(){var t=this,e=this.w,i=[],a=10,s=new Ri(this.dCtx.ctx);return e.config.yaxis.map((function(r,n){var o={seriesIndex:n,dataPointIndex:-1,w:e},l=e.globals.yAxisScale[n],h=0;if(!s.isYAxisHidden(n)&&r.labels.show&&void 0!==r.labels.minWidth&&(h=r.labels.minWidth),!s.isYAxisHidden(n)&&r.labels.show&&l.result.length){var c=e.globals.yLabelFormatters[n],d=l.niceMin===Number.MIN_VALUE?0:l.niceMin,u=l.result.reduce((function(t,e){var i,a;return(null===(i=String(c(t,o)))||void 0===i?void 0:i.length)>(null===(a=String(c(e,o)))||void 0===a?void 0:a.length)?t:e}),d),g=u=c(u,o);if(void 0!==u&&0!==u.length||(u=l.niceMax),e.globals.isBarHorizontal){a=0;var p=e.globals.labels.slice();u=v.getLargestStringFromArr(p),u=c(u,{seriesIndex:n,dataPointIndex:-1,w:e}),g=t.dCtx.dimHelpers.getLargestStringFromMultiArr(u,p)}var f=new Mi(t.dCtx.ctx),x=\"rotate(\".concat(r.labels.rotate,\" 0 0)\"),b=f.getTextRects(u,r.labels.style.fontSize,r.labels.style.fontFamily,x,!1),m=b;u!==g&&(m=f.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,x,!1)),i.push({width:(h>m.width||h>b.width?h:m.width>b.width?m.width:b.width)+a,height:m.height>b.height?m.height:b.height})}else i.push({width:0,height:0})})),i}},{key:\"getyAxisTitleCoords\",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new Mi(t.dCtx.ctx),r=\"rotate(\".concat(e.title.rotate,\" 0 0)\"),n=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:n.width,height:n.height})}else i.push({width:0,height:0})})),i}},{key:\"getTotalYAxisWidth\",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new Ri(this.dCtx.ctx),n=function(n,o){var l=t.config.yaxis[o].floating,h=0;n.width>0&&!l?(h=n.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(o)&&(h=h-n.width-s)):h=l||r.isYAxisHidden(o)?0:5,t.config.yaxis[o].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){n(t,e)})),t.globals.yTitleCoords.map((function(t,e){n(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),ga=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:\"gridPadForColumnsInNumericAxis\",value:function(t){var e=this.w,i=e.config,a=e.globals;if(a.noData||a.collapsedSeries.length+a.ancillaryCollapsedSeries.length===i.series.length)return 0;var s=function(t){return[\"bar\",\"rangeBar\",\"candlestick\",\"boxPlot\"].includes(t)},r=i.chart.type,n=0,o=s(r)?i.series.length:1;a.comboBarCount>0&&(o=a.comboBarCount),a.collapsedSeries.forEach((function(t){s(t.type)&&(o-=1)})),i.chart.stacked&&(o=1);var l=s(r)||a.comboBarCount>0,h=Math.abs(a.initialMaxX-a.initialMinX);if(l&&a.isXNumeric&&!a.isBarHorizontal&&o>0&&0!==h){h<=3&&(h=a.dataPoints);var c=h/t,d=a.minXDiff&&a.minXDiff/c>0?a.minXDiff/c:0;d>t/2&&(d/=2),(n=d*parseInt(i.plotOptions.bar.columnWidth,10)/100)<1&&(n=1),a.barPadForNumericAxis=n}return n}},{key:\"gridPadFortitleSubtitle\",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!i.axisCharts?0:10;[\"title\",\"subtitle\"].forEach((function(s){void 0!==e.config[s].text?a+=e.config[s].margin:a+=t.dCtx.isSparkline||!i.axisCharts?0:5})),!e.config.legend.show||\"bottom\"!==e.config.legend.position||e.config.legend.floating||i.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords(\"title\"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords(\"subtitle\");i.gridHeight-=s.height+r.height+a,i.translateY+=s.height+r.height+a}},{key:\"setGridXPosForDualYAxis\",value:function(t,e){var i=this.w,a=new Ri(this.dCtx.ctx);i.config.yaxis.forEach((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX-=e[r].width+t[r].width+parseInt(s.labels.style.fontSize,10)/1.2+12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}]),t}(),pa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new ca(this),this.dimYAxis=new ua(this),this.dimXAxis=new da(this),this.dimGrid=new ga(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return s(t,[{key:\"plotCoords\",value:function(){var t=this,e=this.w,i=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.datalabelsCoords={width:0,height:0};var a=Array.isArray(e.config.stroke.width)?Math.max.apply(Math,f(e.config.stroke.width)):e.config.stroke.width;this.isSparkline&&((e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i=p(e,2),a=i[0],s=i[1];t.gridPad[a]=Math.max(s,t.w.globals.markers.largestSize/1.5)})),this.gridPad.top=Math.max(a/2,this.gridPad.top),this.gridPad.bottom=Math.max(a/2,this.gridPad.bottom)),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var s=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*s,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(s>0?s:0),i.translateY=i.translateY+this.gridPad.top}},{key:\"setDimensionsForAxisCharts\",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();i.isSlopeChart&&(this.datalabelsCoords=this.dimHelpers.getDatalabelsRect()),e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),n=this.dimXAxis.getxAxisGroupLabelsCoords(),o=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,o,n),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,h=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-o.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var c=10;(\"radar\"===e.config.chart.type||this.isSparkline)&&(l=0,h=0),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||\"treemap\"===e.config.chart.type)&&(l=0,h=0,c=0),this.isSparkline||\"treemap\"===e.config.chart.type||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l+t.datalabelsCoords.width,i.gridHeight=i.svgHeight-t.lgRect.height-h-(t.isSparkline||\"treemap\"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l-2*t.datalabelsCoords.width};switch(\"top\"===e.config.xaxis.position&&(c=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case\"bottom\":i.translateY=c,d();break;case\"top\":i.translateY=this.lgRect.height+c,d();break;case\"left\":i.translateY=c,i.translateX=this.lgRect.width+l+this.datalabelsCoords.width,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-2*this.datalabelsCoords.width;break;case\"right\":i.translateY=c,i.translateX=l+this.datalabelsCoords.width,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-2*this.datalabelsCoords.width-5;break;default:throw new Error(\"Legend position not supported\")}this.dimGrid.setGridXPosForDualYAxis(s,a),new ia(this.ctx).setYAxisXPosition(a,s)}},{key:\"setDimensionsForNonAxisCharts\",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s=\"pie\"===i.chart.type||\"polarArea\"===i.chart.type||\"donut\"===i.chart.type?\"pie\":\"radialBar\",r=i.plotOptions[s].offsetY,n=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating){e.gridHeight=e.svgHeight;var o=e.dom.elWrap.getBoundingClientRect().width;return e.gridWidth=Math.min(o,e.gridHeight),e.translateY=r,void(e.translateX=n+(e.svgWidth-e.gridWidth)/2)}switch(i.legend.position){case\"bottom\":e.gridHeight=e.svgHeight-this.lgRect.height,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=n+(e.svgWidth-e.gridWidth)/2;break;case\"top\":e.gridHeight=e.svgHeight-this.lgRect.height,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=n+(e.svgWidth-e.gridWidth)/2;break;case\"left\":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight=\"auto\"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=n+this.lgRect.width+a;break;case\"right\":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight=\"auto\"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=n+10;break;default:throw new Error(\"Legend position not supported\")}}},{key:\"conditionalChecksForAxisCoords\",value:function(t,e,i){var a=this.w,s=a.globals.hasXaxisGroups?2:1,r=i.height+t.height+e.height,n=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,o=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&\"bottom\"===a.config.legend.position?10:0;this.xAxisHeight=r*n+s*o+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeight<a.config.xaxis.labels.minHeight&&(this.xAxisHeight=a.config.xaxis.labels.minHeight),a.config.xaxis.floating&&(this.xAxisHeight=0);var h=0,c=0;a.config.yaxis.forEach((function(t){h+=t.labels.minWidth,c+=t.labels.maxWidth})),this.yAxisWidth<h&&(this.yAxisWidth=h),this.yAxisWidth>c&&(this.yAxisWidth=c)}}]),t}(),fa=function(){function t(e){i(this,t),this.w=e.w,this.lgCtx=e}return s(t,[{key:\"getLegendStyles\",value:function(){var t,e,i,a=document.createElement(\"style\");a.setAttribute(\"type\",\"text/css\");var s=(null===(t=this.lgCtx.ctx)||void 0===t||null===(e=t.opts)||void 0===e||null===(i=e.chart)||void 0===i?void 0:i.nonce)||this.w.config.chart.nonce;s&&a.setAttribute(\"nonce\",s);var r=document.createTextNode(\"\\n      .apexcharts-flip-y {\\n        transform: scaleY(-1) translateY(-100%);\\n        transform-origin: top;\\n        transform-box: fill-box;\\n      }\\n      .apexcharts-flip-x {\\n        transform: scaleX(-1);\\n        transform-origin: center;\\n        transform-box: fill-box;\\n      }\\n      .apexcharts-legend {\\n        display: flex;\\n        overflow: auto;\\n        padding: 0 10px;\\n      }\\n      .apexcharts-legend.apexcharts-legend-group-horizontal {\\n        flex-direction: column;\\n      }\\n      .apexcharts-legend-group {\\n        display: flex;\\n      }\\n      .apexcharts-legend-group-vertical {\\n        flex-direction: column-reverse;\\n      }\\n      .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\\n        flex-wrap: wrap\\n      }\\n      .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\\n        flex-direction: column;\\n        bottom: 0;\\n      }\\n      .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\\n        justify-content: flex-start;\\n        align-items: flex-start;\\n      }\\n      .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\\n        justify-content: center;\\n        align-items: center;\\n      }\\n      .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\\n        justify-content: flex-end;\\n        align-items: flex-end;\\n      }\\n      .apexcharts-legend-series {\\n        cursor: pointer;\\n        line-height: normal;\\n        display: flex;\\n        align-items: center;\\n      }\\n      .apexcharts-legend-text {\\n        position: relative;\\n        font-size: 14px;\\n      }\\n      .apexcharts-legend-text *, .apexcharts-legend-marker * {\\n        pointer-events: none;\\n      }\\n      .apexcharts-legend-marker {\\n        position: relative;\\n        display: flex;\\n        align-items: center;\\n        justify-content: center;\\n        cursor: pointer;\\n        margin-right: 1px;\\n      }\\n\\n      .apexcharts-legend-series.apexcharts-no-click {\\n        cursor: auto;\\n      }\\n      .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\\n        display: none !important;\\n      }\\n      .apexcharts-inactive-legend {\\n        opacity: 0.45;\\n      }\\n\\n    \");return a.appendChild(r),a}},{key:\"getLegendDimensions\",value:function(){var t=this.w.globals.dom.baseEl.querySelector(\".apexcharts-legend\").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:\"appendToForeignObject\",value:function(){this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles())}},{key:\"toggleDataSeries\",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||\"radialBar\"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"']\")),r=parseInt(s.getAttribute(\"data:realIndex\"),10)):(s=a.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(t+1,\"']\")),r=parseInt(s.getAttribute(\"rel\"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var n=a.globals.dom.Paper.findOne(\" .apexcharts-series[rel='\".concat(t+1,\"'] path\")),o=a.config.chart.type;if(\"pie\"===o||\"polarArea\"===o||\"donut\"===o){var l=a.config.plotOptions.pie.donut.labels;new Mi(this.lgCtx.ctx).pathMouseDown(n,null),this.lgCtx.ctx.pie.printDataLabelsInner(n.node,l)}n.fire(\"click\")}}},{key:\"getSeriesAfterCollapsing\",value:function(t){var e=t.realIndex,i=this.w,a=i.globals,s=v.clone(i.config.series);if(a.axisCharts){var r=i.config.yaxis[a.seriesYAxisReverseMap[e]],n={index:e,data:s[e].data.slice(),type:s[e].type||i.config.chart.type};if(r&&r.show&&r.showAlways)a.ancillaryCollapsedSeriesIndices.indexOf(e)<0&&(a.ancillaryCollapsedSeries.push(n),a.ancillaryCollapsedSeriesIndices.push(e));else if(a.collapsedSeriesIndices.indexOf(e)<0){a.collapsedSeries.push(n),a.collapsedSeriesIndices.push(e);var o=a.risingSeries.indexOf(e);a.risingSeries.splice(o,1)}}else a.collapsedSeries.push({index:e,data:s[e]}),a.collapsedSeriesIndices.push(e);return a.allSeriesCollapsed=a.collapsedSeries.length+a.ancillaryCollapsedSeries.length===i.config.series.length,this._getSeriesBasedOnCollapsedState(s)}},{key:\"hideSeries\",value:function(t){for(var e=t.seriesEl,i=t.realIndex,a=this.w,s=this.getSeriesAfterCollapsing({realIndex:i}),r=e.childNodes,n=0;n<r.length;n++)r[n].classList.contains(\"apexcharts-series-markers-wrap\")&&(r[n].classList.contains(\"apexcharts-hide\")?r[n].classList.remove(\"apexcharts-hide\"):r[n].classList.add(\"apexcharts-hide\"));this.lgCtx.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled)}},{key:\"riseCollapsedSeries\",value:function(t,e,i){var a=this.w,s=v.clone(a.config.series);if(t.length>0){for(var r=0;r<t.length;r++)t[r].index===i&&(a.globals.axisCharts?s[i].data=t[r].data.slice():s[i]=t[r].data,\"number\"!=typeof s[i]&&(s[i].hidden=!1),t.splice(r,1),e.splice(r,1),a.globals.risingSeries.push(i));s=this._getSeriesBasedOnCollapsedState(s),this.lgCtx.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled)}}},{key:\"_getSeriesBasedOnCollapsedState\",value:function(t){var e=this.w,i=0;return e.globals.axisCharts?t.forEach((function(a,s){e.globals.collapsedSeriesIndices.indexOf(s)<0&&e.globals.ancillaryCollapsedSeriesIndices.indexOf(s)<0||(t[s].data=[],i++)})):t.forEach((function(a,s){!e.globals.collapsedSeriesIndices.indexOf(s)<0&&(t[s]=0,i++)})),e.globals.allSeriesCollapsed=i===t.length,t}}]),t}(),xa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed=\"bar\"===this.w.config.chart.type&&this.w.config.plotOptions.bar.distributed&&1===this.w.config.series.length,this.legendHelpers=new fa(this)}return s(t,[{key:\"init\",value:function(){var t=this.w,e=t.globals,i=t.config,a=i.legend.showForSingleSeries&&1===e.series.length||this.isBarsDistributed||e.series.length>1;if(this.legendHelpers.appendToForeignObject(),(a||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),\"bottom\"===i.legend.position||\"top\"===i.legend.position?this.legendAlignHorizontal():\"right\"!==i.legend.position&&\"left\"!==i.legend.position||this.legendAlignVertical()}}},{key:\"createLegendMarker\",value:function(t){var e=t.i,i=t.fillcolor,a=this.w,s=document.createElement(\"span\");s.classList.add(\"apexcharts-legend-marker\");var r=a.config.legend.markers.shape||a.config.markers.shape,n=r;Array.isArray(r)&&(n=r[e]);var o=Array.isArray(a.config.legend.markers.size)?parseFloat(a.config.legend.markers.size[e]):parseFloat(a.config.legend.markers.size),l=Array.isArray(a.config.legend.markers.offsetX)?parseFloat(a.config.legend.markers.offsetX[e]):parseFloat(a.config.legend.markers.offsetX),h=Array.isArray(a.config.legend.markers.offsetY)?parseFloat(a.config.legend.markers.offsetY[e]):parseFloat(a.config.legend.markers.offsetY),c=Array.isArray(a.config.legend.markers.strokeWidth)?parseFloat(a.config.legend.markers.strokeWidth[e]):parseFloat(a.config.legend.markers.strokeWidth),d=s.style;if(d.height=2*(o+c)+\"px\",d.width=2*(o+c)+\"px\",d.left=l+\"px\",d.top=h+\"px\",a.config.legend.markers.customHTML)d.background=\"transparent\",d.color=i[e],Array.isArray(a.config.legend.markers.customHTML)?a.config.legend.markers.customHTML[e]&&(s.innerHTML=a.config.legend.markers.customHTML[e]()):s.innerHTML=a.config.legend.markers.customHTML();else{var g=new Vi(this.ctx).getMarkerConfig({cssClass:\"apexcharts-legend-marker apexcharts-marker apexcharts-marker-\".concat(n),seriesIndex:e,strokeWidth:c,size:o}),p=window.SVG().addTo(s).size(\"100%\",\"100%\"),f=new Mi(this.ctx).drawMarker(0,0,u(u({},g),{},{pointFillColor:Array.isArray(i)?i[e]:g.pointFillColor,shape:n}));a.globals.dom.Paper.find(\".apexcharts-legend-marker.apexcharts-marker\").forEach((function(t){t.node.classList.contains(\"apexcharts-marker-triangle\")?t.node.style.transform=\"translate(50%, 45%)\":t.node.style.transform=\"translate(50%, 50%)\"})),p.add(f)}return s}},{key:\"drawLegends\",value:function(){var t=this,e=this,i=this.w,a=i.config.legend.fontFamily,s=i.globals.seriesNames,r=i.config.legend.markers.fillColors?i.config.legend.markers.fillColors.slice():i.globals.colors.slice();if(\"heatmap\"===i.config.chart.type){var n=i.config.plotOptions.heatmap.colorScale.ranges;s=n.map((function(t){return t.name?t.name:t.from+\" - \"+t.to})),r=n.map((function(t){return t.color}))}else this.isBarsDistributed&&(s=i.globals.labels.slice());i.config.legend.customLegendItems.length&&(s=i.config.legend.customLegendItems);var o=i.globals.legendFormatter,l=i.config.legend.inverseOrder,h=[];i.globals.seriesGroups.length>1&&i.config.legend.clusterGroupedSeries&&i.globals.seriesGroups.forEach((function(t,e){h[e]=document.createElement(\"div\"),h[e].classList.add(\"apexcharts-legend-group\",\"apexcharts-legend-group-\".concat(e)),\"horizontal\"===i.config.legend.clusterGroupedSeriesOrientation?i.globals.dom.elLegendWrap.classList.add(\"apexcharts-legend-group-horizontal\"):h[e].classList.add(\"apexcharts-legend-group-vertical\")}));for(var c=function(e){var n,l=o(s[e],{seriesIndex:e,w:i}),c=!1,d=!1;if(i.globals.collapsedSeries.length>0)for(var u=0;u<i.globals.collapsedSeries.length;u++)i.globals.collapsedSeries[u].index===e&&(c=!0);if(i.globals.ancillaryCollapsedSeriesIndices.length>0)for(var g=0;g<i.globals.ancillaryCollapsedSeriesIndices.length;g++)i.globals.ancillaryCollapsedSeriesIndices[g]===e&&(d=!0);var p=t.createLegendMarker({i:e,fillcolor:r});Mi.setAttrs(p,{rel:e+1,\"data:collapsed\":c||d}),(c||d)&&p.classList.add(\"apexcharts-inactive-legend\");var f=document.createElement(\"div\"),x=document.createElement(\"span\");x.classList.add(\"apexcharts-legend-text\"),x.innerHTML=Array.isArray(l)?l.join(\" \"):l;var b=i.config.legend.labels.useSeriesColors?i.globals.colors[e]:Array.isArray(i.config.legend.labels.colors)?null===(n=i.config.legend.labels.colors)||void 0===n?void 0:n[e]:i.config.legend.labels.colors;b||(b=i.config.chart.foreColor),x.style.color=b,x.style.fontSize=parseFloat(i.config.legend.fontSize)+\"px\",x.style.fontWeight=i.config.legend.fontWeight,x.style.fontFamily=a||i.config.chart.fontFamily,Mi.setAttrs(x,{rel:e+1,i:e,\"data:default-text\":encodeURIComponent(l),\"data:collapsed\":c||d}),f.appendChild(p),f.appendChild(x);var m=new Pi(t.ctx);i.config.legend.showForZeroSeries||0===m.getSeriesTotalByIndex(e)&&m.seriesHaveSameValues(e)&&!m.isSeriesNull(e)&&-1===i.globals.collapsedSeriesIndices.indexOf(e)&&-1===i.globals.ancillaryCollapsedSeriesIndices.indexOf(e)&&f.classList.add(\"apexcharts-hidden-zero-series\");i.config.legend.showForNullSeries||m.isSeriesNull(e)&&-1===i.globals.collapsedSeriesIndices.indexOf(e)&&-1===i.globals.ancillaryCollapsedSeriesIndices.indexOf(e)&&f.classList.add(\"apexcharts-hidden-null-series\"),h.length?i.globals.seriesGroups.forEach((function(t,a){var s;t.includes(null===(s=i.config.series[e])||void 0===s?void 0:s.name)&&(i.globals.dom.elLegendWrap.appendChild(h[a]),h[a].appendChild(f))})):i.globals.dom.elLegendWrap.appendChild(f),i.globals.dom.elLegendWrap.classList.add(\"apexcharts-align-\".concat(i.config.legend.horizontalAlign)),i.globals.dom.elLegendWrap.classList.add(\"apx-legend-position-\"+i.config.legend.position),f.classList.add(\"apexcharts-legend-series\"),f.style.margin=\"\".concat(i.config.legend.itemMargin.vertical,\"px \").concat(i.config.legend.itemMargin.horizontal,\"px\"),i.globals.dom.elLegendWrap.style.width=i.config.legend.width?i.config.legend.width+\"px\":\"\",i.globals.dom.elLegendWrap.style.height=i.config.legend.height?i.config.legend.height+\"px\":\"\",Mi.setAttrs(f,{rel:e+1,seriesName:v.escapeString(s[e]),\"data:collapsed\":c||d}),(c||d)&&f.classList.add(\"apexcharts-inactive-legend\"),i.config.legend.onItemClick.toggleDataSeries||f.classList.add(\"apexcharts-no-click\")},d=l?s.length-1:0;l?d>=0:d<=s.length-1;l?d--:d++)c(d);i.globals.dom.elWrap.addEventListener(\"click\",e.onLegendClick,!0),i.config.legend.onItemHover.highlightDataSeries&&0===i.config.legend.customLegendItems.length&&(i.globals.dom.elWrap.addEventListener(\"mousemove\",e.onLegendHovered,!0),i.globals.dom.elWrap.addEventListener(\"mouseout\",e.onLegendHovered,!0))}},{key:\"setLegendWrapXY\",value:function(t,e){var i=this.w,a=i.globals.dom.elLegendWrap,s=a.clientHeight,r=0,n=0;if(\"bottom\"===i.config.legend.position)n=i.globals.svgHeight-Math.min(s,i.globals.svgHeight/2)-5;else if(\"top\"===i.config.legend.position){var o=new pa(this.ctx),l=o.dimHelpers.getTitleSubtitleCoords(\"title\").height,h=o.dimHelpers.getTitleSubtitleCoords(\"subtitle\").height;n=(l>0?l-10:0)+(h>0?h-10:0)}a.style.position=\"absolute\",r=r+t+i.config.legend.offsetX,n=n+e+i.config.legend.offsetY,a.style.left=r+\"px\",a.style.top=n+\"px\",\"right\"===i.config.legend.position&&(a.style.left=\"auto\",a.style.right=25+i.config.legend.offsetX+\"px\");[\"width\",\"height\"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+\"px\")}))}},{key:\"legendAlignHorizontal\",value:function(){var t=this.w;t.globals.dom.elLegendWrap.style.right=0;var e=new pa(this.ctx),i=e.dimHelpers.getTitleSubtitleCoords(\"title\"),a=e.dimHelpers.getTitleSubtitleCoords(\"subtitle\"),s=0;\"top\"===t.config.legend.position&&(s=i.height+a.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,s)}},{key:\"legendAlignVertical\",value:function(){var t=this.w,e=this.legendHelpers.getLegendDimensions(),i=0;\"left\"===t.config.legend.position&&(i=20),\"right\"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:\"onLegendHovered\",value:function(t){var e=this.w,i=t.target.classList.contains(\"apexcharts-legend-series\")||t.target.classList.contains(\"apexcharts-legend-text\")||t.target.classList.contains(\"apexcharts-legend-marker\");if(\"heatmap\"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute(\"rel\"),10)-1;this.ctx.events.fireEvent(\"legendHover\",[this.ctx,a,this.w]),new Zi(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains(\"apexcharts-inactive-legend\")&&i&&new Zi(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:\"onLegendClick\",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains(\"apexcharts-legend-series\")||t.target.classList.contains(\"apexcharts-legend-text\")||t.target.classList.contains(\"apexcharts-legend-marker\"))){var i=parseInt(t.target.getAttribute(\"rel\"),10)-1,a=\"true\"===t.target.getAttribute(\"data:collapsed\"),s=this.w.config.chart.events.legendClick;\"function\"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent(\"legendClick\",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;\"function\"==typeof r&&t.target.classList.contains(\"apexcharts-legend-marker\")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent(\"legendMarkerClick\",[this.ctx,i,this.w])),\"treemap\"!==e.config.chart.type&&\"heatmap\"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),t}(),ba=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.ev=this.w.config.chart.events,this.selectedClass=\"apexcharts-selected\",this.localeValues=this.w.globals.locale.toolbar,this.minX=a.globals.minX,this.maxX=a.globals.maxX}return s(t,[{key:\"createToolbar\",value:function(){var t=this,e=this.w,i=function(){return document.createElement(\"div\")},a=i();if(a.setAttribute(\"class\",\"apexcharts-toolbar\"),a.style.top=e.config.chart.toolbar.offsetY+\"px\",a.style.right=3-e.config.chart.toolbar.offsetX+\"px\",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s<this.t.customIcons.length;s++)this.elCustomIcons.push(i());var r=[],n=function(i,a,s){var n=i.toLowerCase();t.t[n]&&e.config.chart.zoom.enabled&&r.push({el:a,icon:\"string\"==typeof t.t[n]?t.t[n]:s,title:t.localeValues[i],class:\"apexcharts-\".concat(n,\"-icon\")})};n(\"zoomIn\",this.elZoomIn,'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n    <path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\\n</svg>\\n'),n(\"zoomOut\",this.elZoomOut,'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n    <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\\n</svg>\\n');var o=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:\"zoom\"===i?t.elZoom:t.elSelection,icon:\"string\"==typeof t.t[i]?t.t[i]:\"zoom\"===i?'<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\\n    <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/>\\n    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\\n    <path d=\"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"/>\\n</svg>':'<svg fill=\"#6E8192\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n    <path d=\"M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z\"/>\\n</svg>',title:t.localeValues[\"zoom\"===i?\"selectionZoom\":\"selection\"],class:e.globals.isTouchDevice?\"apexcharts-element-hidden\":\"apexcharts-\".concat(i,\"-icon\")})};o(\"zoom\"),o(\"selection\"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:\"string\"==typeof this.t.pan?this.t.pan:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\\n    <defs>\\n        <path d=\"M0 0h24v24H0z\" id=\"a\"/>\\n    </defs>\\n    <clipPath id=\"b\">\\n        <use overflow=\"visible\" xlink:href=\"#a\"/>\\n    </clipPath>\\n    <path clip-path=\"url(#b)\" d=\"M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\"/>\\n</svg>',title:this.localeValues.pan,class:e.globals.isTouchDevice?\"apexcharts-element-hidden\":\"apexcharts-pan-icon\"}),n(\"reset\",this.elZoomReset,'<svg fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\\n    <path d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"/>\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n</svg>'),this.t.download&&r.push({el:this.elMenuIcon,icon:\"string\"==typeof this.t.download?this.t.download:'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"/></svg>',title:this.localeValues.menu,class:\"apexcharts-menu-icon\"});for(var l=0;l<this.elCustomIcons.length;l++)r.push({el:this.elCustomIcons[l],icon:this.t.customIcons[l].icon,title:this.t.customIcons[l].title,index:this.t.customIcons[l].index,class:\"apexcharts-toolbar-custom-icon \"+this.t.customIcons[l].class});r.forEach((function(t,e){t.index&&v.moveIndexInArray(r,e,t.index)}));for(var h=0;h<r.length;h++)Mi.setAttrs(r[h].el,{class:r[h].class,title:r[h].title}),r[h].el.innerHTML=r[h].icon,a.appendChild(r[h].el);this._createHamburgerMenu(a),e.globals.zoomEnabled?this.elZoom.classList.add(this.selectedClass):e.globals.panEnabled?this.elPan.classList.add(this.selectedClass):e.globals.selectionEnabled&&this.elSelection.classList.add(this.selectedClass),this.addToolbarEventListeners()}},{key:\"_createHamburgerMenu\",value:function(t){this.elMenuItems=[],t.appendChild(this.elMenu),Mi.setAttrs(this.elMenu,{class:\"apexcharts-menu\"});for(var e=[{name:\"exportSVG\",title:this.localeValues.exportToSVG},{name:\"exportPNG\",title:this.localeValues.exportToPNG},{name:\"exportCSV\",title:this.localeValues.exportToCSV}],i=0;i<e.length;i++)this.elMenuItems.push(document.createElement(\"div\")),this.elMenuItems[i].innerHTML=e[i].title,Mi.setAttrs(this.elMenuItems[i],{class:\"apexcharts-menu-item \".concat(e[i].name),title:e[i].title}),this.elMenu.appendChild(this.elMenuItems[i])}},{key:\"addToolbarEventListeners\",value:function(){var t=this;this.elZoomReset.addEventListener(\"click\",this.handleZoomReset.bind(this)),this.elSelection.addEventListener(\"click\",this.toggleZoomSelection.bind(this,\"selection\")),this.elZoom.addEventListener(\"click\",this.toggleZoomSelection.bind(this,\"zoom\")),this.elZoomIn.addEventListener(\"click\",this.handleZoomIn.bind(this)),this.elZoomOut.addEventListener(\"click\",this.handleZoomOut.bind(this)),this.elPan.addEventListener(\"click\",this.togglePanning.bind(this)),this.elMenuIcon.addEventListener(\"click\",this.toggleMenu.bind(this)),this.elMenuItems.forEach((function(e){e.classList.contains(\"exportSVG\")?e.addEventListener(\"click\",t.handleDownload.bind(t,\"svg\")):e.classList.contains(\"exportPNG\")?e.addEventListener(\"click\",t.handleDownload.bind(t,\"png\")):e.classList.contains(\"exportCSV\")&&e.addEventListener(\"click\",t.handleDownload.bind(t,\"csv\"))}));for(var e=0;e<this.t.customIcons.length;e++)this.elCustomIcons[e].addEventListener(\"click\",this.t.customIcons[e].click.bind(this,this.ctx,this.ctx.w))}},{key:\"toggleZoomSelection\",value:function(t){this.ctx.getSyncedCharts().forEach((function(e){e.ctx.toolbar.toggleOtherControls();var i=\"selection\"===t?e.ctx.toolbar.elSelection:e.ctx.toolbar.elZoom,a=\"selection\"===t?\"selectionEnabled\":\"zoomEnabled\";e.w.globals[a]=!e.w.globals[a],i.classList.contains(e.ctx.toolbar.selectedClass)?i.classList.remove(e.ctx.toolbar.selectedClass):i.classList.add(e.ctx.toolbar.selectedClass)}))}},{key:\"getToolbarIconsReference\",value:function(){var t=this.w;this.elZoom||(this.elZoom=t.globals.dom.baseEl.querySelector(\".apexcharts-zoom-icon\")),this.elPan||(this.elPan=t.globals.dom.baseEl.querySelector(\".apexcharts-pan-icon\")),this.elSelection||(this.elSelection=t.globals.dom.baseEl.querySelector(\".apexcharts-selection-icon\"))}},{key:\"enableZoomPanFromToolbar\",value:function(t){this.toggleOtherControls(),\"pan\"===t?this.w.globals.panEnabled=!0:this.w.globals.zoomEnabled=!0;var e=\"pan\"===t?this.elPan:this.elZoom,i=\"pan\"===t?this.elZoom:this.elPan;e&&e.classList.add(this.selectedClass),i&&i.classList.remove(this.selectedClass)}},{key:\"togglePanning\",value:function(){this.ctx.getSyncedCharts().forEach((function(t){t.ctx.toolbar.toggleOtherControls(),t.w.globals.panEnabled=!t.w.globals.panEnabled,t.ctx.toolbar.elPan.classList.contains(t.ctx.toolbar.selectedClass)?t.ctx.toolbar.elPan.classList.remove(t.ctx.toolbar.selectedClass):t.ctx.toolbar.elPan.classList.add(t.ctx.toolbar.selectedClass)}))}},{key:\"toggleOtherControls\",value:function(){var t=this,e=this.w;e.globals.panEnabled=!1,e.globals.zoomEnabled=!1,e.globals.selectionEnabled=!1,this.getToolbarIconsReference(),[this.elPan,this.elSelection,this.elZoom].forEach((function(e){e&&e.classList.remove(t.selectedClass)}))}},{key:\"handleZoomIn\",value:function(){var t=this.w;t.globals.isRangeBar&&(this.minX=t.globals.minY,this.maxX=t.globals.maxY);var e=(this.minX+this.maxX)/2,i=(this.minX+e)/2,a=(this.maxX+e)/2,s=this._getNewMinXMaxX(i,a);t.globals.disableZoomIn||this.zoomUpdateOptions(s.minX,s.maxX)}},{key:\"handleZoomOut\",value:function(){var t=this.w;if(t.globals.isRangeBar&&(this.minX=t.globals.minY,this.maxX=t.globals.maxY),!(\"datetime\"===t.config.xaxis.type&&new Date(this.minX).getUTCFullYear()<1e3)){var e=(this.minX+this.maxX)/2,i=this.minX-(e-this.minX),a=this.maxX-(e-this.maxX),s=this._getNewMinXMaxX(i,a);t.globals.disableZoomOut||this.zoomUpdateOptions(s.minX,s.maxX)}}},{key:\"_getNewMinXMaxX\",value:function(t,e){var i=this.w.config.xaxis.convertedCatToNumeric;return{minX:i?Math.floor(t):t,maxX:i?Math.floor(e):e}}},{key:\"zoomUpdateOptions\",value:function(t,e){var i=this.w;if(void 0!==t||void 0!==e){if(!(i.config.xaxis.convertedCatToNumeric&&(t<1&&(t=1,e=i.globals.dataPoints),e-t<2))){var a={min:t,max:e},s=this.getBeforeZoomRange(a);s&&(a=s.xaxis);var r={xaxis:a},n=v.clone(i.globals.initialConfig.yaxis);i.config.chart.group||(r.yaxis=n),this.w.globals.zoomed=!0,this.ctx.updateHelpers._updateOptions(r,!1,this.w.config.chart.animations.dynamicAnimation.enabled),this.zoomCallback(a,n)}}else this.handleZoomReset()}},{key:\"zoomCallback\",value:function(t,e){\"function\"==typeof this.ev.zoomed&&this.ev.zoomed(this.ctx,{xaxis:t,yaxis:e})}},{key:\"getBeforeZoomRange\",value:function(t,e){var i=null;return\"function\"==typeof this.ev.beforeZoom&&(i=this.ev.beforeZoom(this,{xaxis:t,yaxis:e})),i}},{key:\"toggleMenu\",value:function(){var t=this;window.setTimeout((function(){t.elMenu.classList.contains(\"apexcharts-menu-open\")?t.elMenu.classList.remove(\"apexcharts-menu-open\"):t.elMenu.classList.add(\"apexcharts-menu-open\")}),0)}},{key:\"handleDownload\",value:function(t){var e=this.w,i=new Ji(this.ctx);switch(t){case\"svg\":i.exportToSVG(this.ctx);break;case\"png\":i.exportToPng(this.ctx);break;case\"csv\":i.exportToCSV({series:e.config.series,columnDelimiter:e.config.chart.toolbar.export.csv.columnDelimiter})}}},{key:\"handleZoomReset\",value:function(t){this.ctx.getSyncedCharts().forEach((function(t){var e=t.w;if(e.globals.lastXAxis.min=e.globals.initialConfig.xaxis.min,e.globals.lastXAxis.max=e.globals.initialConfig.xaxis.max,t.updateHelpers.revertDefaultAxisMinMax(),\"function\"==typeof e.config.chart.events.beforeResetZoom){var i=e.config.chart.events.beforeResetZoom(t,e);i&&t.updateHelpers.revertDefaultAxisMinMax(i)}\"function\"==typeof e.config.chart.events.zoomed&&t.ctx.toolbar.zoomCallback({min:e.config.xaxis.min,max:e.config.xaxis.max}),e.globals.zoomed=!1;var a=t.ctx.series.emptyCollapsedSeries(v.clone(e.globals.initialSeries));t.updateHelpers._updateSeries(a,e.config.chart.animations.dynamicAnimation.enabled)}))}},{key:\"destroy\",value:function(){this.elZoom=null,this.elZoomIn=null,this.elZoomOut=null,this.elPan=null,this.elSelection=null,this.elZoomReset=null,this.elMenuIcon=null}}]),t}(),ma=function(t){h(a,ba);var e=n(a);function a(t){var s;return i(this,a),(s=e.call(this,t)).ctx=t,s.w=t.w,s.dragged=!1,s.graphics=new Mi(s.ctx),s.eventList=[\"mousedown\",\"mouseleave\",\"mousemove\",\"touchstart\",\"touchmove\",\"mouseup\",\"touchend\",\"wheel\"],s.clientX=0,s.clientY=0,s.startX=0,s.endX=0,s.dragX=0,s.startY=0,s.endY=0,s.dragY=0,s.moveDirection=\"none\",s.debounceTimer=null,s.debounceDelay=100,s.wheelDelay=400,s}return s(a,[{key:\"init\",value:function(t){var e=this,i=t.xyRatios,a=this.w,s=this;this.xyRatios=i,this.zoomRect=this.graphics.drawRect(0,0,0,0),this.selectionRect=this.graphics.drawRect(0,0,0,0),this.gridRect=a.globals.dom.baseEl.querySelector(\".apexcharts-grid\"),this.constraints=new kt(0,0,a.globals.gridWidth,a.globals.gridHeight),this.zoomRect.node.classList.add(\"apexcharts-zoom-rect\"),this.selectionRect.node.classList.add(\"apexcharts-selection-rect\"),a.globals.dom.Paper.add(this.zoomRect),a.globals.dom.Paper.add(this.selectionRect),\"x\"===a.config.chart.selection.type?this.slDraggableRect=this.selectionRect.draggable({minX:0,minY:0,maxX:a.globals.gridWidth,maxY:a.globals.gridHeight}).on(\"dragmove.namespace\",this.selectionDragging.bind(this,\"dragging\")):\"y\"===a.config.chart.selection.type?this.slDraggableRect=this.selectionRect.draggable({minX:0,maxX:a.globals.gridWidth}).on(\"dragmove.namespace\",this.selectionDragging.bind(this,\"dragging\")):this.slDraggableRect=this.selectionRect.draggable().on(\"dragmove.namespace\",this.selectionDragging.bind(this,\"dragging\")),this.preselectedSelection(),this.hoverArea=a.globals.dom.baseEl.querySelector(\"\".concat(a.globals.chartClass,\" .apexcharts-svg\")),this.hoverArea.classList.add(\"apexcharts-zoomable\"),this.eventList.forEach((function(t){e.hoverArea.addEventListener(t,s.svgMouseEvents.bind(s,i),{capture:!1,passive:!0})})),a.config.chart.zoom.enabled&&a.config.chart.zoom.allowMouseWheelZoom&&this.hoverArea.addEventListener(\"wheel\",s.mouseWheelEvent.bind(s),{capture:!1,passive:!1})}},{key:\"destroy\",value:function(){this.slDraggableRect&&(this.slDraggableRect.draggable(!1),this.slDraggableRect.off(),this.selectionRect.off()),this.selectionRect=null,this.zoomRect=null,this.gridRect=null}},{key:\"svgMouseEvents\",value:function(t,e){var i=this.w,a=this.ctx.toolbar,s=i.globals.zoomEnabled?i.config.chart.zoom.type:i.config.chart.selection.type,r=i.config.chart.toolbar.autoSelected;if(e.shiftKey?(this.shiftWasPressed=!0,a.enableZoomPanFromToolbar(\"pan\"===r?\"zoom\":\"pan\")):this.shiftWasPressed&&(a.enableZoomPanFromToolbar(r),this.shiftWasPressed=!1),e.target){var n,o=e.target.classList;if(e.target.parentNode&&null!==e.target.parentNode&&(n=e.target.parentNode.classList),!(o.contains(\"apexcharts-legend-marker\")||o.contains(\"apexcharts-legend-text\")||n&&n.contains(\"apexcharts-toolbar\"))){if(this.clientX=\"touchmove\"===e.type||\"touchstart\"===e.type?e.touches[0].clientX:\"touchend\"===e.type?e.changedTouches[0].clientX:e.clientX,this.clientY=\"touchmove\"===e.type||\"touchstart\"===e.type?e.touches[0].clientY:\"touchend\"===e.type?e.changedTouches[0].clientY:e.clientY,\"mousedown\"===e.type&&1===e.which||\"touchstart\"===e.type){var l=this.gridRect.getBoundingClientRect();this.startX=this.clientX-l.left-i.globals.barPadForNumericAxis,this.startY=this.clientY-l.top,this.dragged=!1,this.w.globals.mousedown=!0}(\"mousemove\"===e.type&&1===e.which||\"touchmove\"===e.type)&&(this.dragged=!0,i.globals.panEnabled?(i.globals.selection=null,this.w.globals.mousedown&&this.panDragging({context:this,zoomtype:s,xyRatios:t})):(this.w.globals.mousedown&&i.globals.zoomEnabled||this.w.globals.mousedown&&i.globals.selectionEnabled)&&(this.selection=this.selectionDrawing({context:this,zoomtype:s}))),\"mouseup\"!==e.type&&\"touchend\"!==e.type&&\"mouseleave\"!==e.type||this.handleMouseUp({zoomtype:s}),this.makeSelectionRectDraggable()}}}},{key:\"handleMouseUp\",value:function(t){var e,i=t.zoomtype,a=t.isResized,s=this.w,r=null===(e=this.gridRect)||void 0===e?void 0:e.getBoundingClientRect();r&&(this.w.globals.mousedown||a)&&(this.endX=this.clientX-r.left-s.globals.barPadForNumericAxis,this.endY=this.clientY-r.top,this.dragX=Math.abs(this.endX-this.startX),this.dragY=Math.abs(this.endY-this.startY),(s.globals.zoomEnabled||s.globals.selectionEnabled)&&this.selectionDrawn({context:this,zoomtype:i}),s.globals.panEnabled&&s.config.xaxis.convertedCatToNumeric&&this.delayedPanScrolled()),s.globals.zoomEnabled&&this.hideSelectionRect(this.selectionRect),this.dragged=!1,this.w.globals.mousedown=!1}},{key:\"mouseWheelEvent\",value:function(t){var e=this,i=this.w;t.preventDefault();var a=Date.now();a-i.globals.lastWheelExecution>this.wheelDelay&&(this.executeMouseWheelZoom(t),i.globals.lastWheelExecution=a),this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout((function(){a-i.globals.lastWheelExecution>e.wheelDelay&&(e.executeMouseWheelZoom(t),i.globals.lastWheelExecution=a)}),this.debounceDelay)}},{key:\"executeMouseWheelZoom\",value:function(t){var e,i=this.w;this.minX=i.globals.isRangeBar?i.globals.minY:i.globals.minX,this.maxX=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;var a=null===(e=this.gridRect)||void 0===e?void 0:e.getBoundingClientRect();if(a){var s,r,n,o=(t.clientX-a.left)/a.width,l=this.minX,h=this.maxX,c=h-l;if(t.deltaY<0){var d=l+o*c;r=d-(s=.5*c)/2,n=d+s/2}else r=l-(s=1.5*c)/2,n=h+s/2;if(!i.globals.isRangeBar){r=Math.max(r,i.globals.initialMinX),n=Math.min(n,i.globals.initialMaxX);var u=.01*(i.globals.initialMaxX-i.globals.initialMinX);if(n-r<u){var g=(r+n)/2;r=g-u/2,n=g+u/2}}var p=this._getNewMinXMaxX(r,n);isNaN(p.minX)||isNaN(p.maxX)||this.zoomUpdateOptions(p.minX,p.maxX)}}},{key:\"makeSelectionRectDraggable\",value:function(){var t=this,e=this.w;if(this.selectionRect){var i=this.selectionRect.node.getBoundingClientRect();i.width>0&&i.height>0&&(this.selectionRect.select(!1).resize(!1),this.selectionRect.select({createRot:function(){},updateRot:function(){},createHandle:function(t,e,i,a,s){return\"l\"===s||\"r\"===s?t.circle(8).css({\"stroke-width\":1,stroke:\"#333\",fill:\"#fff\"}):t.circle(0)},updateHandle:function(t,e){return t.center(e[0],e[1])}}).resize().on(\"resize\",(function(){var i=e.globals.zoomEnabled?e.config.chart.zoom.type:e.config.chart.selection.type;t.handleMouseUp({zoomtype:i,isResized:!0})})))}}},{key:\"preselectedSelection\",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(u(u({},t.globals.selection),{},{translateX:t.globals.translateX,translateY:t.globals.translateY}));else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a=t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i;t.globals.isRangeBar&&(i=(t.config.chart.selection.xaxis.min-t.globals.yAxisScale[0].niceMin)/e.invertedYRatio,a=(t.config.chart.selection.xaxis.max-t.config.chart.selection.xaxis.min)/e.invertedYRatio);var s={x:i,y:0,width:a,height:t.globals.gridHeight,translateX:t.globals.translateX,translateY:t.globals.translateY,selectionEnabled:!0};this.drawSelectionRect(s),this.makeSelectionRectDraggable(),\"function\"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:\"drawSelectionRect\",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,n=void 0===r?0:r,o=t.translateY,l=void 0===o?0:o,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var u={transform:\"translate(\"+n+\", \"+l+\")\"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,\"fill-opacity\":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,\"stroke-width\":h.config.chart.zoom.zoomedArea.stroke.width,\"stroke-opacity\":h.config.chart.zoom.zoomedArea.stroke.opacity}),Mi.setAttrs(c.node,u)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,\"fill-opacity\":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,\"stroke-width\":h.config.chart.selection.stroke.width,\"stroke-dasharray\":h.config.chart.selection.stroke.dashArray,\"stroke-opacity\":h.config.chart.selection.stroke.opacity}),Mi.setAttrs(d.node,u))}}},{key:\"hideSelectionRect\",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:\"selectionDrawing\",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),n=s.startX-1,o=s.startY,l=!1,h=!1,c=s.clientX-r.left-a.globals.barPadForNumericAxis,d=s.clientY-r.top,g=c-n,p=d-o,f={translateX:a.globals.translateX,translateY:a.globals.translateY};return Math.abs(g+n)>a.globals.gridWidth?g=a.globals.gridWidth-n:c<0&&(g=n),n>c&&(l=!0,g=Math.abs(g)),o>d&&(h=!0,p=Math.abs(p)),f=u(u({},f=\"x\"===i?{x:l?n-g:n,y:0,width:g,height:a.globals.gridHeight}:\"y\"===i?{x:0,y:h?o-p:o,width:a.globals.gridWidth,height:p}:{x:l?n-g:n,y:h?o-p:o,width:g,height:p}),{},{translateX:a.globals.translateX,translateY:a.globals.translateY}),s.drawSelectionRect(f),s.selectionDragging(\"resizing\"),f}},{key:\"selectionDragging\",value:function(t,e){var i=this,a=this.w;if(e){e.preventDefault();var s=e.detail,r=s.handler,n=s.box,o=n.x,l=n.y;o<this.constraints.x&&(o=this.constraints.x),l<this.constraints.y&&(l=this.constraints.y),n.x2>this.constraints.x2&&(o=this.constraints.x2-n.w),n.y2>this.constraints.y2&&(l=this.constraints.y2-n.h),r.move(o,l);var h=this.xyRatios,c=this.selectionRect,d=0;\"resizing\"===t&&(d=30);var u=function(t){return parseFloat(c.node.getAttribute(t))},g={x:u(\"x\"),y:u(\"y\"),width:u(\"width\"),height:u(\"height\")};a.globals.selection=g,\"function\"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t,e,s,r,n=i.gridRect.getBoundingClientRect(),o=c.node.getBoundingClientRect();a.globals.isRangeBar?(t=a.globals.yAxisScale[0].niceMin+(o.left-n.left)*h.invertedYRatio,e=a.globals.yAxisScale[0].niceMin+(o.right-n.left)*h.invertedYRatio,s=0,r=1):(t=a.globals.xAxisScale.niceMin+(o.left-n.left)*h.xRatio,e=a.globals.xAxisScale.niceMin+(o.right-n.left)*h.xRatio,s=a.globals.yAxisScale[0].niceMin+(n.bottom-o.bottom)*h.yRatio[0],r=a.globals.yAxisScale[0].niceMax-(o.top-n.top)*h.yRatio[0]);var l={xaxis:{min:t,max:e},yaxis:{min:s,max:r}};a.config.chart.events.selection(i.ctx,l),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,l)}),d))}}},{key:\"selectionDrawn\",value:function(t){var e,i,a=t.context,s=t.zoomtype,r=this.w,n=a,o=this.xyRatios,l=this.ctx.toolbar,h=r.globals.zoomEnabled?n.zoomRect.node.getBoundingClientRect():n.selectionRect.node.getBoundingClientRect(),c=n.gridRect.getBoundingClientRect(),d=h.left-c.left-r.globals.barPadForNumericAxis,u=h.right-c.left-r.globals.barPadForNumericAxis,g=h.top-c.top,p=h.bottom-c.top;r.globals.isRangeBar?(e=r.globals.yAxisScale[0].niceMin+d*o.invertedYRatio,i=r.globals.yAxisScale[0].niceMin+u*o.invertedYRatio):(e=r.globals.xAxisScale.niceMin+d*o.xRatio,i=r.globals.xAxisScale.niceMin+u*o.xRatio);var f=[],x=[];if(r.config.yaxis.forEach((function(t,e){var i=r.globals.seriesYAxisMap[e][0],a=r.globals.yAxisScale[e].niceMax-o.yRatio[i]*g,s=r.globals.yAxisScale[e].niceMax-o.yRatio[i]*p;f.push(a),x.push(s)})),n.dragged&&(n.dragX>10||n.dragY>10)&&e!==i)if(r.globals.zoomEnabled){var b=v.clone(r.globals.initialConfig.yaxis),m=v.clone(r.globals.initialConfig.xaxis);if(r.globals.zoomed=!0,r.config.xaxis.convertedCatToNumeric&&(e=Math.floor(e),i=Math.floor(i),e<1&&(e=1,i=r.globals.dataPoints),i-e<2&&(i=e+1)),\"xy\"!==s&&\"x\"!==s||(m={min:e,max:i}),\"xy\"!==s&&\"y\"!==s||b.forEach((function(t,e){b[e].min=x[e],b[e].max=f[e]})),l){var y=l.getBeforeZoomRange(m,b);y&&(m=y.xaxis?y.xaxis:m,b=y.yaxis?y.yaxis:b)}var w={xaxis:m};r.config.chart.group||(w.yaxis=b),n.ctx.updateHelpers._updateOptions(w,!1,n.w.config.chart.animations.dynamicAnimation.enabled),\"function\"==typeof r.config.chart.events.zoomed&&l.zoomCallback(m,b)}else if(r.globals.selectionEnabled){var k,A=null;k={min:e,max:i},\"xy\"!==s&&\"y\"!==s||(A=v.clone(r.config.yaxis)).forEach((function(t,e){A[e].min=x[e],A[e].max=f[e]})),r.globals.selection=n.selection,\"function\"==typeof r.config.chart.events.selection&&r.config.chart.events.selection(n.ctx,{xaxis:k,yaxis:A})}}},{key:\"panDragging\",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection=\"left\":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection=\"right\":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection=\"up\":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection=\"down\")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var n=i.globals.isRangeBar?i.globals.minY:i.globals.minX,o=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(n,o)}},{key:\"delayedPanScrolled\",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;\"left\"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):\"right\"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:\"panScrolled\",value:function(t,e){var i=this.w,a=this.xyRatios,s=v.clone(i.globals.initialConfig.yaxis),r=a.xRatio,n=i.globals.minX,o=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,n=i.globals.minY,o=i.globals.maxY),\"left\"===this.moveDirection?(t=n+i.globals.gridWidth/15*r,e=o+i.globals.gridWidth/15*r):\"right\"===this.moveDirection&&(t=n-i.globals.gridWidth/15*r,e=o-i.globals.gridWidth/15*r),i.globals.isRangeBar||(t<i.globals.initialMinX||e>i.globals.initialMaxX)&&(t=n,e=o);var l={xaxis:{min:t,max:e}};i.config.chart.group||(l.yaxis=s),this.updateScrolledChart(l,t,e)}},{key:\"updateScrolledChart\",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),\"function\"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),a}(),va=function(){function t(e){i(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return s(t,[{key:\"getNearestValues\",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,n=i.getBoundingClientRect(),o=n.width,l=n.height,h=o/(r.globals.dataPoints-1),c=l/r.globals.dataPoints,d=this.hasBars();!r.globals.comboCharts&&!d||r.config.xaxis.convertedCatToNumeric||(h=o/r.globals.dataPoints);var u=a-n.left-r.globals.barPadForNumericAxis,g=s-n.top;u<0||g<0||u>o||g>l?(e.classList.remove(\"hovering-zoom\"),e.classList.remove(\"hovering-pan\")):r.globals.zoomEnabled?(e.classList.remove(\"hovering-pan\"),e.classList.add(\"hovering-zoom\")):r.globals.panEnabled&&(e.classList.remove(\"hovering-zoom\"),e.classList.add(\"hovering-pan\"));var p=Math.round(u/h),f=Math.floor(g/c);d&&!r.config.xaxis.convertedCatToNumeric&&(p=Math.ceil(u/h),p-=1);var x=null,b=null,m=r.globals.seriesXvalues.map((function(t){return t.filter((function(t){return v.isNumber(t)}))})),y=r.globals.seriesYvalues.map((function(t){return t.filter((function(t){return v.isNumber(t)}))}));if(r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=u*(w.width/o),A=g*(w.height/l);x=(b=this.closestInMultiArray(k,A,m,y)).index,p=b.j,null!==x&&r.globals.hasNullValues&&(m=r.globals.seriesXvalues[x],p=(b=this.closestInArray(k,m)).j)}return r.globals.capturedSeriesIndex=null===x?-1:x,(!p||p<1)&&(p=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=f:r.globals.capturedDataPointIndex=p,{capturedSeries:x,j:r.globals.isBarHorizontal?f:p,hoverX:u,hoverY:g}}},{key:\"getFirstActiveXArray\",value:function(t){for(var e=this.w,i=0,a=t.map((function(t,e){return t.length>0?e:-1})),s=0;s<a.length;s++)if(-1!==a[s]&&-1===e.globals.collapsedSeriesIndices.indexOf(s)&&-1===e.globals.ancillaryCollapsedSeriesIndices.indexOf(s)){i=a[s];break}return i}},{key:\"closestInMultiArray\",value:function(t,e,i,a){for(var s,r=this.w,n=1/0,o=null,l=null,h=0;h<i.length;h++)if(s=h,-1===r.globals.collapsedSeriesIndices.indexOf(s)&&-1===r.globals.ancillaryCollapsedSeriesIndices.indexOf(s))for(var c=i[h],d=a[h],u=Math.min(c.length,d.length),g=0;g<u;g++){var p=t-c[g],f=Math.sqrt(p*p);if(!r.globals.allSeriesHasEqualX){var x=e-d[g];f=Math.sqrt(p*p+x*x)}f<n&&(n=f,o=h,l=g)}return{index:o,j:l}}},{key:\"closestInArray\",value:function(t,e){for(var i=e[0],a=null,s=Math.abs(t-i),r=0;r<e.length;r++){var n=Math.abs(t-e[r]);n<s&&(s=n,a=r)}return{j:a}}},{key:\"isXoverlap\",value:function(t){var e=[],i=this.w.globals.seriesX.filter((function(t){return void 0!==t[0]}));if(i.length>0)for(var a=0;a<i.length-1;a++)void 0!==i[a][t]&&void 0!==i[a+1][t]&&i[a][t]!==i[a+1][t]&&e.push(\"unEqual\");return 0===e.length}},{key:\"isInitialSeriesSameLen\",value:function(){for(var t=!0,e=this.w.globals.initialSeries,i=0;i<e.length-1;i++)if(e[i].data.length!==e[i+1].data.length){t=!1;break}return t}},{key:\"getBarsHeight\",value:function(t){return f(t).reduce((function(t,e){return t+e.getBBox().height}),0)}},{key:\"getElMarkers\",value:function(t){return\"number\"==typeof t?this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"'] .apexcharts-series-markers-wrap > *\")):this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers-wrap > *\")}},{key:\"getAllMarkers\",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers-wrap\");i=f(i),e&&(i=i.filter((function(e){var i=Number(e.getAttribute(\"data:realIndex\"));return-1===t.w.globals.collapsedSeriesIndices.indexOf(i)}))),i.sort((function(t,e){var i=Number(t.getAttribute(\"data:realIndex\")),a=Number(e.getAttribute(\"data:realIndex\"));return a<i?1:a>i?-1:0}));var a=[];return i.forEach((function(t){a.push(t.querySelector(\".apexcharts-marker\"))})),a}},{key:\"hasMarkers\",value:function(t){return this.getElMarkers(t).length>0}},{key:\"getPathFromPoint\",value:function(t,e){var i=Number(t.getAttribute(\"cx\")),a=Number(t.getAttribute(\"cy\")),s=t.getAttribute(\"shape\");return new Mi(this.ctx).getMarkerPath(i,a,s,e)}},{key:\"getElBars\",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-bar-series,  .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series\")}},{key:\"hasBars\",value:function(){return this.getElBars().length>0}},{key:\"getHoverMarkerSize\",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:\"toggleAllTooltipSeriesGroups\",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-tooltip-series-group\"));for(var a=i.allTooltipSeriesGroups,s=0;s<a.length;s++)\"enable\"===t?(a[s].classList.add(\"apexcharts-active\"),a[s].style.display=e.config.tooltip.items.display):(a[s].classList.remove(\"apexcharts-active\"),a[s].style.display=\"none\")}}]),t}(),ya=function(){function t(e){i(this,t),this.w=e.w,this.ctx=e.ctx,this.ttCtx=e,this.tooltipUtil=new va(e)}return s(t,[{key:\"drawSeriesTexts\",value:function(t){var e=t.shared,i=void 0===e||e,a=t.ttItems,s=t.i,r=void 0===s?0:s,n=t.j,o=void 0===n?null:n,l=t.y1,h=t.y2,c=t.e,d=this.w;void 0!==d.config.tooltip.custom?this.handleCustomTooltip({i:r,j:o,y1:l,y2:h,w:d}):this.toggleActiveInactiveSeries(i,r);var u=this.getValuesToPrint({i:r,j:o});this.printLabels({i:r,j:o,values:u,ttItems:a,shared:i,e:c});var g=this.ttCtx.getElTooltip();this.ttCtx.tooltipRect.ttWidth=g.getBoundingClientRect().width,this.ttCtx.tooltipRect.ttHeight=g.getBoundingClientRect().height}},{key:\"printLabels\",value:function(t){var e,i=this,a=t.i,s=t.j,r=t.values,n=t.ttItems,o=t.shared,l=t.e,h=this.w,c=[],d=function(t){return h.globals.seriesGoals[t]&&h.globals.seriesGoals[t][s]&&Array.isArray(h.globals.seriesGoals[t][s])},g=r.xVal,p=r.zVal,f=r.xAxisTTVal,x=\"\",b=h.globals.colors[a];null!==s&&h.config.plotOptions.bar.distributed&&(b=h.globals.colors[s]);for(var m=function(t,r){var m=i.getFormatters(a);x=i.getSeriesName({fn:m.yLbTitleFormatter,index:a,seriesIndex:a,j:s}),\"treemap\"===h.config.chart.type&&(x=m.yLbTitleFormatter(String(h.config.series[a].data[s].x),{series:h.globals.series,seriesIndex:a,dataPointIndex:s,w:h}));var v=h.config.tooltip.inverseOrder?r:t;if(h.globals.axisCharts){var y=function(t){var e,i,a,r;return h.globals.isRangeData?m.yLbFormatter(null===(e=h.globals.seriesRangeStart)||void 0===e||null===(i=e[t])||void 0===i?void 0:i[s],{series:h.globals.seriesRangeStart,seriesIndex:t,dataPointIndex:s,w:h})+\" - \"+m.yLbFormatter(null===(a=h.globals.seriesRangeEnd)||void 0===a||null===(r=a[t])||void 0===r?void 0:r[s],{series:h.globals.seriesRangeEnd,seriesIndex:t,dataPointIndex:s,w:h}):m.yLbFormatter(h.globals.series[t][s],{series:h.globals.series,seriesIndex:t,dataPointIndex:s,w:h})};if(o)m=i.getFormatters(v),x=i.getSeriesName({fn:m.yLbTitleFormatter,index:v,seriesIndex:a,j:s}),b=h.globals.colors[v],e=y(v),d(v)&&(c=h.globals.seriesGoals[v][s].map((function(t){return{attrs:t,val:m.yLbFormatter(t.value,{seriesIndex:v,dataPointIndex:s,w:h})}})));else{var w,k=null==l||null===(w=l.target)||void 0===w?void 0:w.getAttribute(\"fill\");k&&(-1!==k.indexOf(\"url\")?-1!==k.indexOf(\"Pattern\")&&(b=h.globals.dom.baseEl.querySelector(k.substr(4).slice(0,-1)).childNodes[0].getAttribute(\"stroke\")):b=k),e=y(a),d(a)&&Array.isArray(h.globals.seriesGoals[a][s])&&(c=h.globals.seriesGoals[a][s].map((function(t){return{attrs:t,val:m.yLbFormatter(t.value,{seriesIndex:a,dataPointIndex:s,w:h})}})))}}null===s&&(e=m.yLbFormatter(h.globals.series[a],u(u({},h),{},{seriesIndex:a,dataPointIndex:a}))),i.DOMHandling({i:a,t:v,j:s,ttItems:n,values:{val:e,goalVals:c,xVal:g,xAxisTTVal:f,zVal:p},seriesName:x,shared:o,pColor:b})},v=0,y=h.globals.series.length-1;v<h.globals.series.length;v++,y--)m(v,y)}},{key:\"getFormatters\",value:function(t){var e,i=this.w,a=i.globals.yLabelFormatters[t];return void 0!==i.globals.ttVal?Array.isArray(i.globals.ttVal)?(a=i.globals.ttVal[t]&&i.globals.ttVal[t].formatter,e=i.globals.ttVal[t]&&i.globals.ttVal[t].title&&i.globals.ttVal[t].title.formatter):(a=i.globals.ttVal.formatter,\"function\"==typeof i.globals.ttVal.title.formatter&&(e=i.globals.ttVal.title.formatter)):e=i.config.tooltip.y.title.formatter,\"function\"!=typeof a&&(a=i.globals.yLabelFormatters[0]?i.globals.yLabelFormatters[0]:function(t){return t}),\"function\"!=typeof e&&(e=function(t){return t?t+\": \":\"\"}),{yLbFormatter:a,yLbTitleFormatter:e}}},{key:\"getSeriesName\",value:function(t){var e=t.fn,i=t.index,a=t.seriesIndex,s=t.j,r=this.w;return e(String(r.globals.seriesNames[i]),{series:r.globals.series,seriesIndex:a,dataPointIndex:s,w:r})}},{key:\"DOMHandling\",value:function(t){t.i;var e=t.t,i=t.j,a=t.ttItems,s=t.values,r=t.seriesName,n=t.shared,o=t.pColor,l=this.w,h=this.ttCtx,c=s.val,d=s.goalVals,u=s.xVal,g=s.xAxisTTVal,p=s.zVal,f=null;f=a[e].children,l.config.tooltip.fillSeriesColor&&(a[e].style.backgroundColor=o,f[0].style.display=\"none\"),h.showTooltipTitle&&(null===h.tooltipTitle&&(h.tooltipTitle=l.globals.dom.baseEl.querySelector(\".apexcharts-tooltip-title\")),h.tooltipTitle.innerHTML=u),h.isXAxisTooltipEnabled&&(h.xaxisTooltipText.innerHTML=\"\"!==g?g:u);var x=a[e].querySelector(\".apexcharts-tooltip-text-y-label\");x&&(x.innerHTML=r||\"\");var b=a[e].querySelector(\".apexcharts-tooltip-text-y-value\");b&&(b.innerHTML=void 0!==c?c:\"\"),f[0]&&f[0].classList.contains(\"apexcharts-tooltip-marker\")&&(l.config.tooltip.marker.fillColors&&Array.isArray(l.config.tooltip.marker.fillColors)&&(o=l.config.tooltip.marker.fillColors[e]),l.config.tooltip.fillSeriesColor?f[0].style.backgroundColor=o:f[0].style.color=o),l.config.tooltip.marker.show||(f[0].style.display=\"none\");var m=a[e].querySelector(\".apexcharts-tooltip-text-goals-label\"),v=a[e].querySelector(\".apexcharts-tooltip-text-goals-value\");if(d.length&&l.globals.seriesGoals[e]){var y=function(){var t=\"<div>\",e=\"<div>\";d.forEach((function(i,a){t+=' <div style=\"display: flex\"><span class=\"apexcharts-tooltip-marker\" style=\"background-color: '.concat(i.attrs.strokeColor,'; height: 3px; border-radius: 0; top: 5px;\"></span> ').concat(i.attrs.name,\"</div>\"),e+=\"<div>\".concat(i.val,\"</div>\")})),m.innerHTML=t+\"</div>\",v.innerHTML=e+\"</div>\"};n?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(m.innerHTML=\"\",v.innerHTML=\"\"):y()}else m.innerHTML=\"\",v.innerHTML=\"\";null!==p&&(a[e].querySelector(\".apexcharts-tooltip-text-z-label\").innerHTML=l.config.tooltip.z.title,a[e].querySelector(\".apexcharts-tooltip-text-z-value\").innerHTML=void 0!==p?p:\"\");if(n&&f[0]){if(l.config.tooltip.hideEmptySeries){var w=a[e].querySelector(\".apexcharts-tooltip-marker\"),k=a[e].querySelector(\".apexcharts-tooltip-text\");0==parseFloat(c)?(w.style.display=\"none\",k.style.display=\"none\"):(w.style.display=\"block\",k.style.display=\"block\")}null==c||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1||Array.isArray(h.tConfig.enabledOnSeries)&&-1===h.tConfig.enabledOnSeries.indexOf(e)?f[0].parentNode.style.display=\"none\":f[0].parentNode.style.display=l.config.tooltip.items.display}else Array.isArray(h.tConfig.enabledOnSeries)&&-1===h.tConfig.enabledOnSeries.indexOf(e)&&(f[0].parentNode.style.display=\"none\")}},{key:\"toggleActiveInactiveSeries\",value:function(t,e){var i=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups(\"enable\");else{this.tooltipUtil.toggleAllTooltipSeriesGroups(\"disable\");var a=i.globals.dom.baseEl.querySelector(\".apexcharts-tooltip-series-group-\".concat(e));a&&(a.classList.add(\"apexcharts-active\"),a.style.display=i.config.tooltip.items.display)}}},{key:\"getValuesToPrint\",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r=\"\",n=\"\",o=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&\"treemap\"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=new $i(this.ctx).isFormatXY()?void 0!==a.config.series[e].data[i]?a.config.series[e].data[i].x:\"\":void 0!==a.globals.labels[i]?a.globals.labels[i]:\"\";var d=r;a.globals.isXNumeric&&\"datetime\"===a.config.xaxis.type?r=new Xi(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new zi(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,h):a.globals.xLabelFormatter(d,h);return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(o=c(a.globals.seriesZ[e][i],a)),n=\"function\"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(\" \"):l,xVal:Array.isArray(r)?r.join(\" \"):r,xAxisTTVal:Array.isArray(n)?n.join(\" \"):n,zVal:o}}},{key:\"handleCustomTooltip\",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,n=this.ttCtx.getElTooltip(),o=r.config.tooltip.custom;Array.isArray(o)&&o[e]&&(o=o[e]);var l=o({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r});\"string\"==typeof l?n.innerHTML=l:(l instanceof Element||\"string\"==typeof l.nodeName)&&(n.innerHTML=\"\",n.appendChild(l.cloneNode(!0)))}}]),t}(),wa=function(){function t(e){i(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return s(t,[{key:\"moveXCrosshairs\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,n=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/n*e),null===s||a.globals.isBarHorizontal||(s.setAttribute(\"x\",r),s.setAttribute(\"x1\",r),s.setAttribute(\"x2\",r),s.setAttribute(\"y2\",a.globals.gridHeight),s.classList.add(\"apexcharts-active\")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var o=r;\"tickWidth\"!==a.config.xaxis.crosshairs.width&&\"barWidth\"!==a.config.xaxis.crosshairs.width||(o=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:\"moveYCrosshairs\",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&Mi.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&Mi.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:\"moveXAxisTooltip\",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add(\"apexcharts-active\");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new Mi(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+\"px\",i.xaxisTooltip.style.left=t+\"px\",i.xaxisTooltip.style.top=a+\"px\"}}}},{key:\"moveYAxisTooltip\",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxistooltip\"));var a=parseInt(i.ycrosshairsHidden.getAttribute(\"y1\"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,n=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(n-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add(\"apexcharts-active\"),i.yaxisTTEls[t].style.top=s+\"px\",i.yaxisTTEls[t].style.left=n+e.config.yaxis[t].tooltip.offsetX+\"px\"):i.yaxisTTEls[t].classList.remove(\"apexcharts-active\")}},{key:\"moveTooltip\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),n=s.tooltipRect,o=null!==i?parseFloat(i):1,l=parseFloat(t)+o+5,h=parseFloat(e)+o/2;if(l>a.globals.gridWidth/2&&(l=l-n.ttWidth-o-10),l>a.globals.gridWidth-n.ttWidth-10&&(l=a.globals.gridWidth-n.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid().getBoundingClientRect();(l=s.e.clientX-c.left)>a.globals.gridWidth/2&&(l-=s.tooltipRect.ttWidth),(h=s.e.clientY+a.globals.translateY-c.top)>a.globals.gridHeight/2&&(h-=s.tooltipRect.ttHeight)}else a.globals.isBarHorizontal||n.ttHeight/2+h>a.globals.gridHeight&&(h=a.globals.gridHeight-n.ttHeight+a.globals.translateY);isNaN(l)||(l+=a.globals.translateX,r.style.left=l+\"px\",r.style.top=h+\"px\")}},{key:\"moveMarkers\",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(\" .apexcharts-series[data\\\\:realIndex='\".concat(t,\"'] .apexcharts-marker\")),r=0;r<s.length;r++)parseInt(s[r].getAttribute(\"rel\"),10)===e&&(a.marker.resetPointsSize(),a.marker.enlargeCurrentPoint(e,s[r]));else a.marker.resetPointsSize(),this.moveDynamicPointOnHover(e,t)}},{key:\"moveDynamicPointOnHover\",value:function(t,e){var i,a,s,r,n=this.w,o=this.ttCtx,l=new Mi(this.ctx),h=n.globals.pointsArray,c=o.tooltipUtil.getHoverMarkerSize(e),d=n.config.series[e].type;if(!d||\"column\"!==d&&\"candlestick\"!==d&&\"boxPlot\"!==d){s=null===(i=h[e][t])||void 0===i?void 0:i[0],r=(null===(a=h[e][t])||void 0===a?void 0:a[1])||0;var u=n.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(e,\"'] .apexcharts-series-markers path\"));if(u&&r<n.globals.gridHeight&&r>0){var g=u.getAttribute(\"shape\"),p=l.getMarkerPath(s,r,g,1.5*c);u.setAttribute(\"d\",p)}this.moveXCrosshairs(s),o.fixedTooltip||this.moveTooltip(s,r,c)}}},{key:\"moveDynamicPointsOnHover\",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,n=a.globals.pointsArray,o=new Zi(this.ctx),l=new Mi(this.ctx);e=o.getActiveConfigSeriesIndex(\"asc\",[\"line\",\"area\",\"scatter\",\"bubble\"]);var h=i.tooltipUtil.getHoverMarkerSize(e);if(n[e]&&(s=n[e][t][0],r=n[e][t][1]),!isNaN(s)){var c=i.tooltipUtil.getAllMarkers();if(c.length)for(var d=0;d<a.globals.series.length;d++){var u=n[d];if(a.globals.comboCharts&&void 0===u&&c.splice(d,0,null),u&&u.length){var g=n[d][t][1],p=void 0;c[d].setAttribute(\"cx\",s);var f=c[d].getAttribute(\"shape\");if(\"rangeArea\"===a.config.chart.type&&!a.globals.comboCharts){var x=t+a.globals.series[d].length;p=n[d][x][1],g-=Math.abs(g-p)/2}if(null!==g&&!isNaN(g)&&g<a.globals.gridHeight+h&&g+h>0){var b=l.getMarkerPath(s,g,f,h);c[d].setAttribute(\"d\",b)}else c[d].setAttribute(\"d\",\"\")}}this.moveXCrosshairs(s),i.fixedTooltip||this.moveTooltip(s,r||a.globals.gridHeight,h)}}},{key:\"moveStickyTooltipOverBars\",value:function(t,e){var i=this.w,a=this.ttCtx,s=i.globals.columnSeries?i.globals.columnSeries.length:i.globals.series.length;i.config.chart.stacked&&(s=i.globals.barGroups.length);var r=s>=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1;i.globals.isBarHorizontal&&(r=new Zi(this.ctx).getActiveConfigSeriesIndex(\"desc\")+1);var n=i.globals.dom.baseEl.querySelector(\".apexcharts-bar-series .apexcharts-series[rel='\".concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-candlestick-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-boxPlot-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-rangebar-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"']\"));n||\"number\"!=typeof e||(n=i.globals.dom.baseEl.querySelector(\".apexcharts-bar-series .apexcharts-series[data\\\\:realIndex='\".concat(e,\"'] path[j='\").concat(t,\"'],\\n        .apexcharts-candlestick-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"'],\\n        .apexcharts-boxPlot-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"'],\\n        .apexcharts-rangebar-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"']\")));var o=n?parseFloat(n.getAttribute(\"cx\")):0,l=n?parseFloat(n.getAttribute(\"cy\")):0,h=n?parseFloat(n.getAttribute(\"barWidth\")):0,c=a.getElGrid().getBoundingClientRect(),d=n&&(n.classList.contains(\"apexcharts-candlestick-area\")||n.classList.contains(\"apexcharts-boxPlot-area\"));i.globals.isXNumeric?(n&&!d&&(o-=s%2!=0?h/2:0),n&&d&&(o-=h/2)):i.globals.isBarHorizontal||(o=a.xAxisTicksPositions[t-1]+a.dataPointsDividedWidth/2,isNaN(o)&&(o=a.xAxisTicksPositions[t]-a.dataPointsDividedWidth/2)),i.globals.isBarHorizontal?l-=a.tooltipRect.ttHeight:i.config.tooltip.followCursor?l=a.e.clientY-c.top-a.tooltipRect.ttHeight/2:l+a.tooltipRect.ttHeight+15>i.globals.gridHeight&&(l=i.globals.gridHeight),i.globals.isBarHorizontal||this.moveXCrosshairs(o),a.fixedTooltip||this.moveTooltip(o,l||i.globals.gridHeight)}}]),t}(),ka=function(){function t(e){i(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new wa(e)}return s(t,[{key:\"drawDynamicPoints\",value:function(){var t=this.w,e=new Mi(this.ctx),i=new Vi(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series\");a=f(a),t.config.chart.stacked&&a.sort((function(t,e){return parseFloat(t.getAttribute(\"data:realIndex\"))-parseFloat(e.getAttribute(\"data:realIndex\"))}));for(var s=0;s<a.length;s++){var r=a[s].querySelector(\".apexcharts-series-markers-wrap\");if(null!==r){var n=void 0,o=\"apexcharts-marker w\".concat((Math.random()+1).toString(36).substring(4));\"line\"!==t.config.chart.type&&\"area\"!==t.config.chart.type||t.globals.comboCharts||t.config.tooltip.intersect||(o+=\" no-pointer-events\");var l=i.getMarkerConfig({cssClass:o,seriesIndex:Number(r.getAttribute(\"data:realIndex\"))});(n=e.drawMarker(0,0,l)).node.setAttribute(\"default-marker-size\",0);var h=document.createElementNS(t.globals.SVGNS,\"g\");h.classList.add(\"apexcharts-series-markers\"),h.appendChild(n.node),r.appendChild(h)}}}},{key:\"enlargeCurrentPoint\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;\"bubble\"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute(\"cx\"),n=e.getAttribute(\"cy\");if(null!==i&&null!==a&&(r=i,n=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if(\"radar\"===s.config.chart.type){var o=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-o.left}this.tooltipPosition.moveTooltip(r,n,s.config.markers.hover.size)}}},{key:\"enlargePoints\",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker\"),n=e.config.markers.hover.size,o=0;o<r.length;o++){var l=r[o].getAttribute(\"rel\"),h=r[o].getAttribute(\"index\");if(void 0===n&&(n=e.globals.markers.size[h]+e.config.markers.hover.sizeOffset),s===parseInt(l,10)){i.newPointSize(s,r[o]);var c=r[o].getAttribute(\"cx\"),d=r[o].getAttribute(\"cy\");i.tooltipPosition.moveXCrosshairs(c),a.fixedTooltip||i.tooltipPosition.moveTooltip(c,d,n)}else i.oldPointSize(r[o])}}},{key:\"newPointSize\",value:function(t,e){var i=this.w,a=i.config.markers.hover.size,s=0===t?e.parentNode.firstChild:e.parentNode.lastChild;if(\"0\"!==s.getAttribute(\"default-marker-size\")){var r=parseInt(s.getAttribute(\"index\"),10);void 0===a&&(a=i.globals.markers.size[r]+i.config.markers.hover.sizeOffset),a<0&&(a=0);var n=this.ttCtx.tooltipUtil.getPathFromPoint(e,a);e.setAttribute(\"d\",n)}}},{key:\"oldPointSize\",value:function(t){var e=parseFloat(t.getAttribute(\"default-marker-size\")),i=this.ttCtx.tooltipUtil.getPathFromPoint(t,e);t.setAttribute(\"d\",i)}},{key:\"resetPointsSize\",value:function(){for(var t=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker\"),e=0;e<t.length;e++){var i=parseFloat(t[e].getAttribute(\"default-marker-size\"));if(v.isNumber(i)&&i>0){var a=this.ttCtx.tooltipUtil.getPathFromPoint(t[e],i);t[e].setAttribute(\"d\",a)}else t[e].setAttribute(\"d\",\"M0,0\")}}}]),t}(),Aa=function(){function t(e){i(this,t),this.w=e.w;var a=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!a.globals.isBarHorizontal&&\"rangeBar\"===a.config.chart.type&&a.config.plotOptions.bar.rangeBarGroupRows}return s(t,[{key:\"getAttr\",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:\"handleHeatTreeTooltip\",value:function(t){var e=t.e,i=t.opt,a=t.x,s=t.y,r=t.type,n=this.ttCtx,o=this.w;if(e.target.classList.contains(\"apexcharts-\".concat(r,\"-rect\"))){var l=this.getAttr(e,\"i\"),h=this.getAttr(e,\"j\"),c=this.getAttr(e,\"cx\"),d=this.getAttr(e,\"cy\"),u=this.getAttr(e,\"width\"),g=this.getAttr(e,\"height\");if(n.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:l,j:h,shared:!1,e:e}),o.globals.capturedSeriesIndex=l,o.globals.capturedDataPointIndex=h,a=c+n.tooltipRect.ttWidth/2+u,s=d+n.tooltipRect.ttHeight/2-g/2,n.tooltipPosition.moveXCrosshairs(c+u/2),a>o.globals.gridWidth/2&&(a=c-n.tooltipRect.ttWidth/2+u),n.w.config.tooltip.followCursor){var p=o.globals.dom.elWrap.getBoundingClientRect();a=o.globals.clientX-p.left-(a>o.globals.gridWidth/2?n.tooltipRect.ttWidth:0),s=o.globals.clientY-p.top-(s>o.globals.gridHeight/2?n.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:\"handleMarkerTooltip\",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,n=t.y,o=this.w,l=this.ttCtx;if(a.target.classList.contains(\"apexcharts-marker\")){var h=parseInt(s.paths.getAttribute(\"cx\"),10),c=parseInt(s.paths.getAttribute(\"cy\"),10),d=parseFloat(s.paths.getAttribute(\"val\"));if(i=parseInt(s.paths.getAttribute(\"rel\"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute(\"rel\"),10)-1,l.intersect){var u=v.findAncestor(s.paths,\"apexcharts-series\");u&&(e=parseInt(u.getAttribute(\"data:realIndex\"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&o.config.tooltip.shared,e:a}),\"mouseup\"===a.type&&l.markerClick(a,e,i),o.globals.capturedSeriesIndex=e,o.globals.capturedDataPointIndex=i,r=h,n=c+o.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var g=l.getElGrid().getBoundingClientRect();n=l.e.clientY+o.globals.translateY-g.top}d<0&&(n=c),l.marker.enlargeCurrentPoint(i,s.paths,r,n)}return{x:r,y:n}}},{key:\"handleBarTooltip\",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,n=this.ttCtx,o=n.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});if(null!==d.j||0!==d.barHeight||0!==d.barWidth){e=d.i;var u=d.j;if(r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=u,r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)&&(c=r.globals.svgHeight-n.tooltipRect.ttHeight),parseInt(s.paths.parentNode.getAttribute(\"data:realIndex\"),10),h+n.tooltipRect.ttWidth>r.globals.gridWidth?h-=n.tooltipRect.ttWidth:h<0&&(h=0),n.w.config.tooltip.followCursor){var g=n.getElGrid().getBoundingClientRect();c=n.e.clientY-g.top}null===n.tooltip&&(n.tooltip=r.globals.dom.baseEl.querySelector(\".apexcharts-tooltip\")),r.config.tooltip.shared||(r.globals.comboBarCount>0?n.tooltipPosition.moveXCrosshairs(l+i/2):n.tooltipPosition.moveXCrosshairs(l)),!n.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars())&&(c=c+r.globals.translateY-n.tooltipRect.ttHeight/2,o.style.left=h+r.globals.translateX+\"px\",o.style.top=c+\"px\")}}},{key:\"getBarTooltipXY\",value:function(t){var e=this,i=t.e,a=t.opt,s=this.w,r=null,n=this.ttCtx,o=0,l=0,h=0,c=0,d=0,u=i.target.classList;if(u.contains(\"apexcharts-bar-area\")||u.contains(\"apexcharts-candlestick-area\")||u.contains(\"apexcharts-boxPlot-area\")||u.contains(\"apexcharts-rangebar-area\")){var g=i.target,p=g.getBoundingClientRect(),f=a.elGrid.getBoundingClientRect(),x=p.height;d=p.height;var b=p.width,m=parseInt(g.getAttribute(\"cx\"),10),v=parseInt(g.getAttribute(\"cy\"),10);c=parseFloat(g.getAttribute(\"barWidth\"));var y=\"touchmove\"===i.type?i.touches[0].clientX:i.clientX;r=parseInt(g.getAttribute(\"j\"),10),o=parseInt(g.parentNode.getAttribute(\"rel\"),10)-1;var w=g.getAttribute(\"data-range-y1\"),k=g.getAttribute(\"data-range-y2\");s.globals.comboCharts&&(o=parseInt(g.parentNode.getAttribute(\"data:realIndex\"),10));var A=function(t){return s.globals.isXNumeric?m-b/2:e.isVerticalGroupedRangeBar?m+b/2:m-n.dataPointsDividedWidth+b/2},C=function(){return v-n.dataPointsDividedHeight+x/2-n.tooltipRect.ttHeight/2};n.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:o,j:r,y1:w?parseInt(w,10):null,y2:k?parseInt(k,10):null,shared:!n.showOnIntersect&&s.config.tooltip.shared,e:i}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(l=y-f.left+15,h=C()):(l=A(),h=i.clientY-f.top-n.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((l=m)<n.xyRatios.baseLineInvertedY&&(l=m-n.tooltipRect.ttWidth),h=C()):(l=A(),h=v)}return{x:l,y:h,barHeight:d,barWidth:c,i:o,j:r}}}]),t}(),Ca=function(){function t(e){i(this,t),this.w=e.w,this.ttCtx=e}return s(t,[{key:\"drawXaxisTooltip\",value:function(){var t=this.w,e=this.ttCtx,i=\"bottom\"===t.config.xaxis.position;e.xaxisOffY=i?t.globals.gridHeight+1:-t.globals.xAxisHeight-t.config.xaxis.axisTicks.height+3;var a=i?\"apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom\":\"apexcharts-xaxistooltip apexcharts-xaxistooltip-top\",s=t.globals.dom.elWrap;e.isXAxisTooltipEnabled&&(null===t.globals.dom.baseEl.querySelector(\".apexcharts-xaxistooltip\")&&(e.xaxisTooltip=document.createElement(\"div\"),e.xaxisTooltip.setAttribute(\"class\",a+\" apexcharts-theme-\"+t.config.tooltip.theme),s.appendChild(e.xaxisTooltip),e.xaxisTooltipText=document.createElement(\"div\"),e.xaxisTooltipText.classList.add(\"apexcharts-xaxistooltip-text\"),e.xaxisTooltipText.style.fontFamily=t.config.xaxis.tooltip.style.fontFamily||t.config.chart.fontFamily,e.xaxisTooltipText.style.fontSize=t.config.xaxis.tooltip.style.fontSize,e.xaxisTooltip.appendChild(e.xaxisTooltipText)))}},{key:\"drawYaxisTooltip\",value:function(){for(var t=this.w,e=this.ttCtx,i=0;i<t.config.yaxis.length;i++){var a=t.config.yaxis[i].opposite||t.config.yaxis[i].crosshairs.opposite;e.yaxisOffX=a?t.globals.gridWidth+1:1;var s=\"apexcharts-yaxistooltip apexcharts-yaxistooltip-\".concat(i,a?\" apexcharts-yaxistooltip-right\":\" apexcharts-yaxistooltip-left\"),r=t.globals.dom.elWrap;null===t.globals.dom.baseEl.querySelector(\".apexcharts-yaxistooltip apexcharts-yaxistooltip-\".concat(i))&&(e.yaxisTooltip=document.createElement(\"div\"),e.yaxisTooltip.setAttribute(\"class\",s+\" apexcharts-theme-\"+t.config.tooltip.theme),r.appendChild(e.yaxisTooltip),0===i&&(e.yaxisTooltipText=[]),e.yaxisTooltipText[i]=document.createElement(\"div\"),e.yaxisTooltipText[i].classList.add(\"apexcharts-yaxistooltip-text\"),e.yaxisTooltip.appendChild(e.yaxisTooltipText[i]))}}},{key:\"setXCrosshairWidth\",value:function(){var t=this.w,e=this.ttCtx,i=e.getElXCrosshairs();if(e.xcrosshairsWidth=parseInt(t.config.xaxis.crosshairs.width,10),t.globals.comboCharts){var a=t.globals.dom.baseEl.querySelector(\".apexcharts-bar-area\");if(null!==a&&\"barWidth\"===t.config.xaxis.crosshairs.width){var s=parseFloat(a.getAttribute(\"barWidth\"));e.xcrosshairsWidth=s}else if(\"tickWidth\"===t.config.xaxis.crosshairs.width){var r=t.globals.labels.length;e.xcrosshairsWidth=t.globals.gridWidth/r}}else if(\"tickWidth\"===t.config.xaxis.crosshairs.width){var n=t.globals.labels.length;e.xcrosshairsWidth=t.globals.gridWidth/n}else if(\"barWidth\"===t.config.xaxis.crosshairs.width){var o=t.globals.dom.baseEl.querySelector(\".apexcharts-bar-area\");if(null!==o){var l=parseFloat(o.getAttribute(\"barWidth\"));e.xcrosshairsWidth=l}else e.xcrosshairsWidth=1}t.globals.isBarHorizontal&&(e.xcrosshairsWidth=0),null!==i&&e.xcrosshairsWidth>0&&i.setAttribute(\"width\",e.xcrosshairsWidth)}},{key:\"handleYCrosshair\",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs\"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs-hidden\")}},{key:\"drawYaxisTooltipText\",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals,n=r.seriesYAxisMap[t];if(a.yaxisTooltips[t]&&n.length>0){var o=r.yLabelFormatters[t],l=a.getElGrid().getBoundingClientRect(),h=n[0],c=0;i.yRatio.length>1&&(c=h);var d=(e-l.top)*i.yRatio[c],u=r.maxYArr[h]-r.minYArr[h],g=r.minYArr[h]+(u-d);s.config.yaxis[t].reversed&&(g=r.maxYArr[h]-(u-d)),a.tooltipPosition.moveYCrosshairs(e-l.top),a.yaxisTooltipText[t].innerHTML=o(g),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),Sa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.tConfig=a.config.tooltip,this.tooltipUtil=new va(this),this.tooltipLabels=new ya(this),this.tooltipPosition=new wa(this),this.marker=new ka(this),this.intersect=new Aa(this),this.axesTooltip=new Ca(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!a.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return s(t,[{key:\"getElTooltip\",value:function(t){return t||(t=this),t.w.globals.dom.baseEl?t.w.globals.dom.baseEl.querySelector(\".apexcharts-tooltip\"):null}},{key:\"getElXCrosshairs\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-xcrosshairs\")}},{key:\"getElGrid\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-grid\")}},{key:\"drawTooltip\",value:function(t){var e=this.w;this.xyRatios=t,this.isXAxisTooltipEnabled=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.yaxisTooltips=e.config.yaxis.map((function(t,i){return!!(t.show&&t.tooltip.enabled&&e.globals.axisCharts)})),this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement(\"div\");if(i.classList.add(\"apexcharts-tooltip\"),e.config.tooltip.cssClass&&i.classList.add(e.config.tooltip.cssClass),i.classList.add(\"apexcharts-theme-\".concat(this.tConfig.theme)),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new Qi(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&\"rangeBar\"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement(\"div\"),this.tooltipTitle.classList.add(\"apexcharts-tooltip-title\"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-legend-text\"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:\"createTTElements\",value:function(t){for(var e=this,i=this.w,a=[],s=this.getElTooltip(),r=function(r){var n=document.createElement(\"div\");n.classList.add(\"apexcharts-tooltip-series-group\",\"apexcharts-tooltip-series-group-\".concat(r)),n.style.order=i.config.tooltip.inverseOrder?t-r:r+1;var o=document.createElement(\"span\");o.classList.add(\"apexcharts-tooltip-marker\"),i.config.tooltip.fillSeriesColor?o.style.backgroundColor=i.globals.colors[r]:o.style.color=i.globals.colors[r];var l=i.config.markers.shape,h=l;Array.isArray(l)&&(h=l[r]),o.setAttribute(\"shape\",h),n.appendChild(o);var c=document.createElement(\"div\");c.classList.add(\"apexcharts-tooltip-text\"),c.style.fontFamily=e.tConfig.style.fontFamily||i.config.chart.fontFamily,c.style.fontSize=e.tConfig.style.fontSize,[\"y\",\"goals\",\"z\"].forEach((function(t){var e=document.createElement(\"div\");e.classList.add(\"apexcharts-tooltip-\".concat(t,\"-group\"));var i=document.createElement(\"span\");i.classList.add(\"apexcharts-tooltip-text-\".concat(t,\"-label\")),e.appendChild(i);var a=document.createElement(\"span\");a.classList.add(\"apexcharts-tooltip-text-\".concat(t,\"-value\")),e.appendChild(a),c.appendChild(e)})),n.appendChild(c),s.appendChild(n),a.push(n)},n=0;n<t;n++)r(n);return a}},{key:\"addSVGEvents\",value:function(){var t=this.w,e=t.config.chart.type,i=this.getElTooltip(),a=!(\"bar\"!==e&&\"candlestick\"!==e&&\"boxPlot\"!==e&&\"rangeBar\"!==e),s=\"area\"===e||\"line\"===e||\"scatter\"===e||\"bubble\"===e||\"radar\"===e,r=t.globals.dom.Paper.node,n=this.getElGrid();n&&(this.seriesBound=n.getBoundingClientRect());var o,l=[],h=[],c={hoverArea:r,elGrid:n,tooltipEl:i,tooltipY:l,tooltipX:h,ttItems:this.ttItems};if(t.globals.axisCharts&&(s?o=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series[data\\\\:longestSeries='true'] .apexcharts-marker\"):a?o=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-boxPlot-area, .apexcharts-series .apexcharts-rangebar-area\"):\"heatmap\"!==e&&\"treemap\"!==e||(o=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series .apexcharts-heatmap, .apexcharts-series .apexcharts-treemap\")),o&&o.length))for(var d=0;d<o.length;d++)l.push(o[d].getAttribute(\"cy\")),h.push(o[d].getAttribute(\"cx\"));if(t.globals.xyCharts&&!this.showOnIntersect||t.globals.comboCharts&&!this.showOnIntersect||a&&this.tooltipUtil.hasBars()&&this.tConfig.shared)this.addPathsEventListeners([r],c);else if(a&&!t.globals.comboCharts||s&&this.showOnIntersect)this.addDatapointEventsListeners(c);else if(!t.globals.axisCharts||\"heatmap\"===e||\"treemap\"===e){var u=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series\");this.addPathsEventListeners(u,c)}if(this.showOnIntersect){var g=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-line-series .apexcharts-marker, .apexcharts-area-series .apexcharts-marker\");g.length>0&&this.addPathsEventListeners(g,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:\"drawFixedTooltipRect\",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,n=this.tConfig.fixed.offsetY,o=this.tConfig.fixed.position.toLowerCase();return o.indexOf(\"right\")>-1&&(r=r+t.globals.svgWidth-a+10),o.indexOf(\"bottom\")>-1&&(n=n+t.globals.svgHeight-s-10),e.style.left=r+\"px\",e.style.top=n+\"px\",{x:r,y:n,ttWidth:a,ttHeight:s}}},{key:\"addDatapointEventsListeners\",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area\");this.addPathsEventListeners(e,t)}},{key:\"addPathsEventListeners\",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};[\"mousemove\",\"mouseup\",\"touchmove\",\"mouseout\",\"touchend\"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s<t.length;s++)a(s)}},{key:\"onSeriesHover\",value:function(t,e){var i=this,a=Date.now()-this.lastHoverTime;a>=20?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),20-a))}},{key:\"seriesHover\",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e:e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:\"seriesHoverByContext\",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,n=this.getElTooltip(e);if(n){if(i.tooltipRect={x:0,y:0,ttWidth:n.getBoundingClientRect().width,ttHeight:n.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared)if(this.tConfig.onDatasetHover.highlightDataSeries)new Zi(e).toggleSeriesOnHover(s,s.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect})}}},{key:\"axisChartsTooltips\",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,n=s.elGrid.getBoundingClientRect(),o=\"touchmove\"===a.type?a.touches[0].clientX:a.clientX,l=\"touchmove\"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=o,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,l<n.top||l>n.top+n.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute(\"index\"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),u=[];r.config.chart.group&&(u=this.ctx.getSyncedCharts());var g=r.globals.xyCharts||\"bar\"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if(\"mousemove\"===a.type||\"touchmove\"===a.type||\"mouseup\"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add(\"apexcharts-active\");var p=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&p.length&&this.ycrosshairs.classList.add(\"apexcharts-active\"),g&&!this.showOnIntersect||u.length>1)this.handleStickyTooltip(a,o,l,s);else if(\"heatmap\"===r.config.chart.type||\"treemap\"===r.config.chart.type){var f=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=f.x,i=f.y,c.style.left=e+\"px\",c.style.top=i+\"px\"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var x=0;x<r.config.yaxis.length;x++)this.axesTooltip.drawYaxisTooltipText(x,l,this.xyRatios);r.globals.dom.baseEl.classList.add(\"apexcharts-tooltip-active\"),s.tooltipEl.classList.add(\"apexcharts-active\")}else\"mouseout\"!==a.type&&\"touchend\"!==a.type||this.handleMouseOut(s)}}},{key:\"nonAxisChartsTooltips\",value:function(t){var e=t.e,i=t.opt,a=t.tooltipRect,s=this.w,r=i.paths.getAttribute(\"rel\"),n=this.getElTooltip(),o=s.globals.dom.elWrap.getBoundingClientRect();if(\"mousemove\"===e.type||\"touchmove\"===e.type){s.globals.dom.baseEl.classList.add(\"apexcharts-tooltip-active\"),n.classList.add(\"apexcharts-active\"),this.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:parseInt(r,10)-1,shared:!1});var l=s.globals.clientX-o.left-a.ttWidth/2,h=s.globals.clientY-o.top-a.ttHeight-10;if(n.style.left=l+\"px\",n.style.top=h+\"px\",s.config.legend.tooltipHoverFormatter){var c=r-1,d=(0,s.config.legend.tooltipHoverFormatter)(this.legendLabels[c].getAttribute(\"data:default-text\"),{seriesIndex:c,dataPointIndex:c,w:s});this.legendLabels[c].innerHTML=d}}else\"mouseout\"!==e.type&&\"touchend\"!==e.type||(n.classList.remove(\"apexcharts-active\"),s.globals.dom.baseEl.classList.remove(\"apexcharts-tooltip-active\"),s.config.legend.tooltipHoverFormatter&&this.legendLabels.forEach((function(t){var e=t.getAttribute(\"data:default-text\");t.innerHTML=decodeURIComponent(e)})))}},{key:\"handleStickyTooltip\",value:function(t,e,i,a){var s=this.w,r=this.tooltipUtil.getNearestValues({context:this,hoverArea:a.hoverArea,elGrid:a.elGrid,clientX:e,clientY:i}),n=r.j,o=r.capturedSeries;s.globals.collapsedSeriesIndices.includes(o)&&(o=null);var l=a.elGrid.getBoundingClientRect();if(r.hoverX<0||r.hoverX>l.width)this.handleMouseOut(a);else if(null!==o)this.handleStickyCapturedSeries(t,o,a,n);else if(this.tooltipUtil.isXoverlap(n)||s.globals.isBarHorizontal){var h=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,h,n,a.ttItems)}}},{key:\"handleStickyCapturedSeries\",value:function(t,e,i,a){var s=this.w;if(!this.tConfig.shared&&null===s.globals.series[e][a])return void this.handleMouseOut(i);if(void 0!==s.globals.series[e][a])this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1);else if(this.tooltipUtil.isXoverlap(a)){var r=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,r,a,i.ttItems)}}},{key:\"deactivateHoverFilter\",value:function(){for(var t=this.w,e=new Mi(this.ctx),i=t.globals.dom.Paper.find(\".apexcharts-bar-area\"),a=0;a<i.length;a++)e.pathMouseLeave(i[a])}},{key:\"handleMouseOut\",value:function(t){var e=this.w,i=this.getElXCrosshairs();if(e.globals.dom.baseEl.classList.remove(\"apexcharts-tooltip-active\"),t.tooltipEl.classList.remove(\"apexcharts-active\"),this.deactivateHoverFilter(),\"bubble\"!==e.config.chart.type&&this.marker.resetPointsSize(),null!==i&&i.classList.remove(\"apexcharts-active\"),null!==this.ycrosshairs&&this.ycrosshairs.classList.remove(\"apexcharts-active\"),this.isXAxisTooltipEnabled&&this.xaxisTooltip.classList.remove(\"apexcharts-active\"),this.yaxisTooltips.length){null===this.yaxisTTEls&&(this.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxistooltip\"));for(var a=0;a<this.yaxisTTEls.length;a++)this.yaxisTTEls[a].classList.remove(\"apexcharts-active\")}e.config.legend.tooltipHoverFormatter&&this.legendLabels.forEach((function(t){var e=t.getAttribute(\"data:default-text\");t.innerHTML=decodeURIComponent(e)}))}},{key:\"markerClick\",value:function(t,e,i){var a=this.w;\"function\"==typeof a.config.chart.events.markerClick&&a.config.chart.events.markerClick(t,this.ctx,{seriesIndex:e,dataPointIndex:i,w:a}),this.ctx.events.fireEvent(\"markerClick\",[t,this.ctx,{seriesIndex:e,dataPointIndex:i,w:a}])}},{key:\"create\",value:function(t,e,i,a,s){var r,n,o,l,h,c,d,g,p,f,x,b,m,v,y,w,k=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,A=this.w,C=e;\"mouseup\"===t.type&&this.markerClick(t,i,a),null===k&&(k=this.tConfig.shared);var S=this.tooltipUtil.hasMarkers(i),L=this.tooltipUtil.getElBars(),M=function(){A.globals.markers.largestSize>0?C.marker.enlargePoints(a):C.tooltipPosition.moveDynamicPointsOnHover(a)};if(A.config.legend.tooltipHoverFormatter){var P=A.config.legend.tooltipHoverFormatter,I=Array.from(this.legendLabels);I.forEach((function(t){var e=t.getAttribute(\"data:default-text\");t.innerHTML=decodeURIComponent(e)}));for(var T=0;T<I.length;T++){var z=I[T],X=parseInt(z.getAttribute(\"i\"),10),R=decodeURIComponent(z.getAttribute(\"data:default-text\")),E=P(R,{seriesIndex:k?X:i,dataPointIndex:a,w:A});if(k)z.innerHTML=A.globals.collapsedSeriesIndices.indexOf(X)<0?E:R;else if(z.innerHTML=X===i?E:R,i===X)break}}var Y=u(u({ttItems:s,i:i,j:a},void 0!==(null===(r=A.globals.seriesRange)||void 0===r||null===(n=r[i])||void 0===n||null===(o=n[a])||void 0===o||null===(l=o.y[0])||void 0===l?void 0:l.y1)&&{y1:null===(h=A.globals.seriesRange)||void 0===h||null===(c=h[i])||void 0===c||null===(d=c[a])||void 0===d||null===(g=d.y[0])||void 0===g?void 0:g.y1}),void 0!==(null===(p=A.globals.seriesRange)||void 0===p||null===(f=p[i])||void 0===f||null===(x=f[a])||void 0===x||null===(b=x.y[0])||void 0===b?void 0:b.y2)&&{y2:null===(m=A.globals.seriesRange)||void 0===m||null===(v=m[i])||void 0===v||null===(y=v[a])||void 0===y||null===(w=y.y[0])||void 0===w?void 0:w.y2});if(k){if(C.tooltipLabels.drawSeriesTexts(u(u({},Y),{},{shared:!this.showOnIntersect&&this.tConfig.shared})),S)M();else if(this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(L),this.barSeriesHeight>0)){var H=new Mi(this.ctx),O=A.globals.dom.Paper.find(\".apexcharts-bar-area[j='\".concat(a,\"']\"));this.deactivateHoverFilter(),C.tooltipPosition.moveStickyTooltipOverBars(a,i),C.tooltipUtil.getAllMarkers(!0).length&&M();for(var F=0;F<O.length;F++)H.pathMouseEnter(O[F])}}else C.tooltipLabels.drawSeriesTexts(u({shared:!1},Y)),this.tooltipUtil.hasBars()&&C.tooltipPosition.moveStickyTooltipOverBars(a,i),S&&C.tooltipPosition.moveMarkers(i,a)}}]),t}(),La=function(){function t(e){i(this,t),this.w=e.w,this.barCtx=e,this.totalFormatter=this.w.config.plotOptions.bar.dataLabels.total.formatter,this.totalFormatter||(this.totalFormatter=this.w.config.dataLabels.formatter)}return s(t,[{key:\"handleBarDataLabels\",value:function(t){var e,i,a=t.x,s=t.y,r=t.y1,n=t.y2,o=t.i,l=t.j,h=t.realIndex,c=t.columnGroupIndex,d=t.series,g=t.barHeight,p=t.barWidth,f=t.barXPosition,x=t.barYPosition,b=t.visibleSeries,m=t.renderedPath,v=this.w,y=new Mi(this.barCtx.ctx),w=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[h]:this.barCtx.strokeWidth;v.globals.isXNumeric&&!v.globals.isBarHorizontal?(e=a+parseFloat(p*(b+1)),i=s+parseFloat(g*(b+1))-w):(e=a+parseFloat(p*b),i=s+parseFloat(g*b));var k,A=null,C=a,S=s,L={},M=v.config.dataLabels,P=this.barCtx.barOptions.dataLabels,I=this.barCtx.barOptions.dataLabels.total;void 0!==x&&this.barCtx.isRangeBar&&(i=x,S=x),void 0!==f&&this.barCtx.isVerticalGroupedRangeBar&&(e=f,C=f);var T=M.offsetX,z=M.offsetY,X={width:0,height:0};if(v.config.dataLabels.enabled){var R=v.globals.series[o][l];X=y.getTextRects(v.config.dataLabels.formatter?v.config.dataLabels.formatter(R,u(u({},v),{},{seriesIndex:o,dataPointIndex:l,w:v})):v.globals.yLabelFormatters[0](R),parseFloat(M.style.fontSize))}var E={x:a,y:s,i:o,j:l,realIndex:h,columnGroupIndex:c,renderedPath:m,bcx:e,bcy:i,barHeight:g,barWidth:p,textRects:X,strokeWidth:w,dataLabelsX:C,dataLabelsY:S,dataLabelsConfig:M,barDataLabelsConfig:P,barTotalDataLabelsConfig:I,offX:T,offY:z};return L=this.barCtx.isHorizontal?this.calculateBarsDataLabelsPosition(E):this.calculateColumnsDataLabelsPosition(E),m.attr({cy:L.bcy,cx:L.bcx,j:l,val:v.globals.series[o][l],barHeight:g,barWidth:p}),k=this.drawCalculatedDataLabels({x:L.dataLabelsX,y:L.dataLabelsY,val:this.barCtx.isRangeBar?[r,n]:\"100%\"===v.config.chart.stackType?d[h][l]:v.globals.series[h][l],i:h,j:l,barWidth:p,barHeight:g,textRects:X,dataLabelsConfig:M}),v.config.chart.stacked&&I.enabled&&(A=this.drawTotalDataLabels({x:L.totalDataLabelsX,y:L.totalDataLabelsY,barWidth:p,barHeight:g,realIndex:h,textAnchor:L.totalDataLabelsAnchor,val:this.getStackedTotalDataLabel({realIndex:h,j:l}),dataLabelsConfig:M,barTotalDataLabelsConfig:I})),{dataLabels:k,totalDataLabels:A}}},{key:\"getStackedTotalDataLabel\",value:function(t){var e=t.realIndex,i=t.j,a=this.w,s=this.barCtx.stackedSeriesTotals[i];return this.totalFormatter&&(s=this.totalFormatter(s,u(u({},a),{},{seriesIndex:e,dataPointIndex:i,w:a}))),s}},{key:\"calculateColumnsDataLabelsPosition\",value:function(t){var e=this,i=this.w,a=t.i,s=t.j,r=t.realIndex;t.columnGroupIndex;var n,o,l=t.y,h=t.bcx,c=t.barWidth,d=t.barHeight,u=t.textRects,g=t.dataLabelsX,p=t.dataLabelsY,f=t.dataLabelsConfig,x=t.barDataLabelsConfig,b=t.barTotalDataLabelsConfig,m=t.strokeWidth,v=t.offX,y=t.offY,w=h;d=Math.abs(d);var k=\"vertical\"===i.config.plotOptions.bar.dataLabels.orientation,A=this.barCtx.barHelpers.getZeroValueEncounters({i:a,j:s}).zeroEncounters;h-=m/2;var C=i.globals.gridWidth/i.globals.dataPoints;if(this.barCtx.isVerticalGroupedRangeBar?g+=c/2:(g=i.globals.isXNumeric?h-c/2+v:h-C+c/2+v,!i.config.chart.stacked&&A>0&&i.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(g-=c*A)),k){g=g+u.height/2-m/2-2}var S=i.globals.series[a][s]<0,L=l;switch(this.barCtx.isReversed&&(L=l+(S?d:-d)),x.position){case\"center\":p=k?S?L-d/2+y:L+d/2-y:S?L-d/2+u.height/2+y:L+d/2+u.height/2-y;break;case\"bottom\":p=k?S?L-d+y:L+d-y:S?L-d+u.height+m+y:L+d-u.height/2+m-y;break;case\"top\":p=k?S?L+y:L-y:S?L-u.height/2-y:L+u.height+y}var M=L;if(i.globals.seriesGroups.forEach((function(t){var i;null===(i=e.barCtx[t.join(\",\")])||void 0===i||i.prevY.forEach((function(t){M=S?Math.max(t[s],M):Math.min(t[s],M)}))})),this.barCtx.lastActiveBarSerieIndex===r&&b.enabled){var P=new Mi(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),f.fontSize);n=S?M-P.height/2-y-b.offsetY+18:M+P.height+y+b.offsetY-18;var I=C;o=w+(i.globals.isXNumeric?-c*i.globals.barGroups.length/2:i.globals.barGroups.length*c/2-(i.globals.barGroups.length-1)*c-I)+b.offsetX}return i.config.chart.stacked||(p<0?p=0+m:p+u.height/3>i.globals.gridHeight&&(p=i.globals.gridHeight-m)),{bcx:h,bcy:l,dataLabelsX:g,dataLabelsY:p,totalDataLabelsX:o,totalDataLabelsY:n,totalDataLabelsAnchor:\"middle\"}}},{key:\"calculateBarsDataLabelsPosition\",value:function(t){var e=this,i=this.w,a=t.x,s=t.i,r=t.j,n=t.realIndex,o=t.bcy,l=t.barHeight,h=t.barWidth,c=t.textRects,d=t.dataLabelsX,u=t.strokeWidth,g=t.dataLabelsConfig,p=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,x=t.offX,b=t.offY,m=i.globals.gridHeight/i.globals.dataPoints,v=this.barCtx.barHelpers.getZeroValueEncounters({i:s,j:r}).zeroEncounters;h=Math.abs(h);var y,w,k=o-(this.barCtx.isRangeBar?0:m)+l/2+c.height/2+b-3;!i.config.chart.stacked&&v>0&&i.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(k-=l*v);var A=\"start\",C=i.globals.series[s][r]<0,S=a;switch(this.barCtx.isReversed&&(S=a+(C?-h:h),A=C?\"start\":\"end\"),p.position){case\"center\":d=C?S+h/2-x:Math.max(c.width/2,S-h/2)+x;break;case\"bottom\":d=C?S+h-u-x:S-h+u+x;break;case\"top\":d=C?S-u-x:S-u+x}var L=S;if(i.globals.seriesGroups.forEach((function(t){var i;null===(i=e.barCtx[t.join(\",\")])||void 0===i||i.prevX.forEach((function(t){L=C?Math.min(t[r],L):Math.max(t[r],L)}))})),this.barCtx.lastActiveBarSerieIndex===n&&f.enabled){var M=new Mi(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:n,j:r}),g.fontSize);C?(y=L-u-x-f.offsetX,A=\"end\"):y=L+x+f.offsetX+(this.barCtx.isReversed?-(h+u):u),w=k-c.height/2+M.height/2+f.offsetY+u,i.globals.barGroups.length>1&&(w-=i.globals.barGroups.length/2*(l/2))}return i.config.chart.stacked||(\"start\"===g.textAnchor?d-c.width<0?d=C?c.width+u:u:d+c.width>i.globals.gridWidth&&(d=C?i.globals.gridWidth-u:i.globals.gridWidth-c.width-u):\"middle\"===g.textAnchor?d-c.width/2<0?d=c.width/2+u:d+c.width/2>i.globals.gridWidth&&(d=i.globals.gridWidth-c.width/2-u):\"end\"===g.textAnchor&&(d<1?d=c.width+u:d+1>i.globals.gridWidth&&(d=i.globals.gridWidth-c.width-u))),{bcx:a,bcy:o,dataLabelsX:d,dataLabelsY:k,totalDataLabelsX:y,totalDataLabelsY:w,totalDataLabelsAnchor:A}}},{key:\"drawCalculatedDataLabels\",value:function(t){var e=t.x,i=t.y,a=t.val,s=t.i,r=t.j,n=t.textRects,o=t.barHeight,l=t.barWidth,h=t.dataLabelsConfig,c=this.w,d=\"rotate(0)\";\"vertical\"===c.config.plotOptions.bar.dataLabels.orientation&&(d=\"rotate(-90, \".concat(e,\", \").concat(i,\")\"));var g=new qi(this.barCtx.ctx),p=new Mi(this.barCtx.ctx),f=h.formatter,x=null,b=c.globals.collapsedSeriesIndices.indexOf(s)>-1;if(h.enabled&&!b){x=p.group({class:\"apexcharts-data-labels\",transform:d});var m=\"\";void 0!==a&&(m=f(a,u(u({},c),{},{seriesIndex:s,dataPointIndex:r,w:c}))),!a&&c.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(m=\"\");var v=c.globals.series[s][r]<0,y=c.config.plotOptions.bar.dataLabels.position;if(\"vertical\"===c.config.plotOptions.bar.dataLabels.orientation&&(\"top\"===y&&(h.textAnchor=v?\"end\":\"start\"),\"center\"===y&&(h.textAnchor=\"middle\"),\"bottom\"===y&&(h.textAnchor=v?\"end\":\"start\")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)l<p.getTextRects(m,parseFloat(h.style.fontSize)).width&&(m=\"\");c.config.chart.stacked&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels&&(this.barCtx.isHorizontal?n.width/1.6>Math.abs(l)&&(m=\"\"):n.height/1.6>Math.abs(o)&&(m=\"\"));var w=u({},h);this.barCtx.isHorizontal&&a<0&&(\"start\"===h.textAnchor?w.textAnchor=\"end\":\"end\"===h.textAnchor&&(w.textAnchor=\"start\")),g.plotDataLabelsText({x:e,y:i,text:m,i:s,j:r,parent:x,dataLabelsConfig:w,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return x}},{key:\"drawTotalDataLabels\",value:function(t){var e=t.x,i=t.y,a=t.val,s=t.realIndex,r=t.textAnchor,n=t.barTotalDataLabelsConfig;this.w;var o,l=new Mi(this.barCtx.ctx);return n.enabled&&void 0!==e&&void 0!==i&&this.barCtx.lastActiveBarSerieIndex===s&&(o=l.drawText({x:e,y:i,foreColor:n.style.color,text:a,textAnchor:r,fontFamily:n.style.fontFamily,fontSize:n.style.fontSize,fontWeight:n.style.fontWeight})),o}}]),t}(),Ma=function(){function t(e){i(this,t),this.w=e.w,this.barCtx=e}return s(t,[{key:\"initVariables\",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i<t.length;i++)if(t[i].length>0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;a<t[i].length;a++)e.globals.seriesX[i][a]>e.globals.minX&&e.globals.seriesX[i][a]<e.globals.maxX&&this.barCtx.visibleItems++;else this.barCtx.visibleItems=e.globals.dataPoints;this.arrBorderRadius=this.createBorderRadiusArr(e.globals.series),0===this.barCtx.seriesLen&&(this.barCtx.seriesLen=1),this.barCtx.zeroSerieses=[],e.globals.comboCharts||this.checkZeroSeries({series:t})}},{key:\"initialPositions\",value:function(t){var e,i,a,s,r,n,o,l,h=this.w,c=h.globals.dataPoints;this.barCtx.isRangeBar&&(c=h.globals.labels.length);var d=this.barCtx.seriesLen;if(h.config.plotOptions.bar.rangeBarGroupRows&&(d=1),this.barCtx.isHorizontal)r=(a=h.globals.gridHeight/c)/d,h.globals.isXNumeric&&(r=(a=h.globals.gridHeight/this.barCtx.totalItems)/this.barCtx.seriesLen),r=r*parseInt(this.barCtx.barOptions.barHeight,10)/100,-1===String(this.barCtx.barOptions.barHeight).indexOf(\"%\")&&(r=parseInt(this.barCtx.barOptions.barHeight,10)),l=this.barCtx.baseLineInvertedY+h.globals.padHorizontal+(this.barCtx.isReversed?h.globals.gridWidth:0)-(this.barCtx.isReversed?2*this.barCtx.baseLineInvertedY:0),this.barCtx.isFunnel&&(l=h.globals.gridWidth/2),i=(a-r*this.barCtx.seriesLen)/2;else{if(s=h.globals.gridWidth/this.barCtx.visibleItems,h.config.xaxis.convertedCatToNumeric&&(s=h.globals.gridWidth/h.globals.dataPoints),n=s/d*parseInt(this.barCtx.barOptions.columnWidth,10)/100,h.globals.isXNumeric){var u=this.barCtx.xRatio;h.globals.minXDiff&&.5!==h.globals.minXDiff&&h.globals.minXDiff/u>0&&(s=h.globals.minXDiff/u),(n=s/d*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(n=1)}if(-1===String(this.barCtx.barOptions.columnWidth).indexOf(\"%\")&&(n=parseInt(this.barCtx.barOptions.columnWidth,10)),o=h.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.translationsIndex]-(this.barCtx.isReversed?h.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.translationsIndex]:0),h.globals.isXNumeric)e=this.barCtx.getBarXForNumericXAxis({x:e,j:0,realIndex:t,barWidth:n}).x;else e=h.globals.padHorizontal+v.noExponents(s-n*this.barCtx.seriesLen)/2}return h.globals.barHeight=r,h.globals.barWidth=n,{x:e,y:i,yDivision:a,xDivision:s,barHeight:r,barWidth:n,zeroH:o,zeroW:l}}},{key:\"initializeStackedPrevVars\",value:function(t){t.w.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].prevY=[],t[e].prevX=[],t[e].prevYF=[],t[e].prevXF=[],t[e].prevYVal=[],t[e].prevXVal=[]}))}},{key:\"initializeStackedXYVars\",value:function(t){t.w.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].xArrj=[],t[e].xArrjF=[],t[e].xArrjVal=[],t[e].yArrj=[],t[e].yArrjF=[],t[e].yArrjVal=[]}))}},{key:\"getPathFillColor\",value:function(t,e,i,a){var s,r,n,o,l=this.w,h=this.barCtx.ctx.fill,c=null,d=this.barCtx.barOptions.distributed?i:e,u=!1;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(c=a.color,u=!0)}));return{color:h.fillPath({seriesNumber:this.barCtx.barOptions.distributed?d:a,dataPointIndex:i,color:c,value:t[e][i],fillConfig:null===(s=l.config.series[e].data[i])||void 0===s?void 0:s.fill,fillType:null!==(r=l.config.series[e].data[i])&&void 0!==r&&null!==(n=r.fill)&&void 0!==n&&n.type?null===(o=l.config.series[e].data[i])||void 0===o?void 0:o.fill.type:Array.isArray(l.config.fill.type)?l.config.fill.type[a]:l.config.fill.type}),useRangeColor:u}}},{key:\"getStrokeWidth\",value:function(t,e,i){var a=0,s=this.w;return this.barCtx.series[t][e]?this.barCtx.isNullValue=!1:this.barCtx.isNullValue=!0,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:\"createBorderRadiusArr\",value:function(t){var e,i=this.w,a=!this.w.config.chart.stacked||i.config.plotOptions.bar.borderRadius<=0,s=t.length,n=0|(null===(e=t[0])||void 0===e?void 0:e.length),o=Array.from({length:s},(function(){return Array(n).fill(a?\"top\":\"none\")}));if(a)return o;for(var l=0;l<n;l++){for(var h=[],c=[],d=0,u=0;u<s;u++){var g=t[u][l];g>0?(h.push(u),d++):g<0&&(c.push(u),d++)}if(h.length>0&&0===c.length)if(1===h.length)o[h[0]][l]=\"both\";else{var p,f=h[0],x=h[h.length-1],b=r(h);try{for(b.s();!(p=b.n()).done;){var m=p.value;o[m][l]=m===f?\"bottom\":m===x?\"top\":\"none\"}}catch(t){b.e(t)}finally{b.f()}}else if(c.length>0&&0===h.length)if(1===c.length)o[c[0]][l]=\"both\";else{var v,y=Math.max.apply(Math,c),w=Math.min.apply(Math,c),k=r(c);try{for(k.s();!(v=k.n()).done;){var A=v.value;o[A][l]=A===y?\"bottom\":A===w?\"top\":\"none\"}}catch(t){k.e(t)}finally{k.f()}}else if(h.length>0&&c.length>0){var C,S=h[h.length-1],L=r(h);try{for(L.s();!(C=L.n()).done;){var M=C.value;o[M][l]=M===S?\"top\":\"none\"}}catch(t){L.e(t)}finally{L.f()}var P,I=Math.max.apply(Math,c),T=r(c);try{for(T.s();!(P=T.n()).done;){var z=P.value;o[z][l]=z===I?\"bottom\":\"none\"}}catch(t){T.e(t)}finally{T.f()}}else if(1===d){o[h[0]||c[0]][l]=\"both\"}}return o}},{key:\"barBackground\",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,n=t.y2,o=t.elSeries,l=this.w,h=new Mi(this.barCtx.ctx),c=new Zi(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],u=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==n?n:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);o.add(u),u.node.classList.add(\"apexcharts-backgroundBar\")}}},{key:\"getColumnPaths\",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,n=t.strokeWidth,o=t.isReversed,l=t.series,h=t.seriesGroup,c=t.realIndex,d=t.i,u=t.j,g=t.w,p=new Mi(this.barCtx.ctx);(n=Array.isArray(n)?n[c]:n)||(n=0);var f=i,x=a;null!==(e=g.config.series[c].data[u])&&void 0!==e&&e.columnWidthOffset&&(x=a-g.config.series[c].data[u].columnWidthOffset/2,f=i+g.config.series[c].data[u].columnWidthOffset);var b=n/2,m=x+b,v=x+f-b,y=(l[d][u]>=0?1:-1)*(o?-1:1);s+=.001-b*y,r+=.001+b*y;var w=p.move(m,s),k=p.move(m,s),A=p.line(v,s);if(g.globals.previousPaths.length>0&&(k=this.barCtx.getPreviousPath(c,u,!1)),w=w+p.line(m,r)+p.line(v,r)+A+(\"around\"===g.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][u]?\" Z\":\" z\"),k=k+p.line(m,s)+A+A+A+A+A+p.line(m,s)+(\"around\"===g.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][u]?\" Z\":\" z\"),\"none\"!==this.arrBorderRadius[c][u]&&(w=p.roundPathCorners(w,g.config.plotOptions.bar.borderRadius)),g.config.chart.stacked){var C=this.barCtx;(C=this.barCtx[h]).yArrj.push(r-b*y),C.yArrjF.push(Math.abs(s-r+n*y)),C.yArrjVal.push(this.barCtx.series[d][u])}return{pathTo:w,pathFrom:k}}},{key:\"getBarpaths\",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,n=t.strokeWidth,o=t.isReversed,l=t.series,h=t.seriesGroup,c=t.realIndex,d=t.i,u=t.j,g=t.w,p=new Mi(this.barCtx.ctx);(n=Array.isArray(n)?n[c]:n)||(n=0);var f=i,x=a;null!==(e=g.config.series[c].data[u])&&void 0!==e&&e.barHeightOffset&&(f=i-g.config.series[c].data[u].barHeightOffset/2,x=a+g.config.series[c].data[u].barHeightOffset);var b=n/2,m=f+b,v=f+x-b,y=(l[d][u]>=0?1:-1)*(o?-1:1);s+=.001+b*y,r+=.001-b*y;var w=p.move(s,m),k=p.move(s,m);g.globals.previousPaths.length>0&&(k=this.barCtx.getPreviousPath(c,u,!1));var A=p.line(s,v);if(w=w+p.line(r,m)+p.line(r,v)+A+(\"around\"===g.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][u]?\" Z\":\" z\"),k=k+p.line(s,m)+A+A+A+A+A+p.line(s,m)+(\"around\"===g.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][u]?\" Z\":\" z\"),\"none\"!==this.arrBorderRadius[c][u]&&(w=p.roundPathCorners(w,g.config.plotOptions.bar.borderRadius)),g.config.chart.stacked){var C=this.barCtx;(C=this.barCtx[h]).xArrj.push(r+b*y),C.xArrjF.push(Math.abs(s-r-n*y)),C.xArrjVal.push(this.barCtx.series[d][u])}return{pathTo:w,pathFrom:k}}},{key:\"checkZeroSeries\",value:function(t){for(var e=t.series,i=this.w,a=0;a<e.length;a++){for(var s=0,r=0;r<e[i.globals.maxValsInArrayIndex].length;r++)s+=e[a][r];0===s&&this.barCtx.zeroSerieses.push(a)}}},{key:\"getXForValue\",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?e:null;return null!=t&&(i=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),i}},{key:\"getYForValue\",value:function(t,e,i){var a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3]?e:null;return null!=t&&(a=e-t/this.barCtx.yRatio[i]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[i]:0)),a}},{key:\"getGoalValues\",value:function(t,e,i,a,s,r){var n=this,l=this.w,h=[],c=function(a,s){var l;h.push((o(l={},t,\"x\"===t?n.getXForValue(a,e,!1):n.getYForValue(a,i,r,!1)),o(l,\"attrs\",s),l))};if(l.globals.seriesGoals[a]&&l.globals.seriesGoals[a][s]&&Array.isArray(l.globals.seriesGoals[a][s])&&l.globals.seriesGoals[a][s].forEach((function(t){c(t.value,t)})),this.barCtx.barOptions.isDumbbell&&l.globals.seriesRange.length){var d=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:l.globals.colors,g={strokeHeight:\"x\"===t?0:l.globals.markers.size[a],strokeWidth:\"x\"===t?l.globals.markers.size[a]:0,strokeDashArray:0,strokeLineCap:\"round\",strokeColor:Array.isArray(d[a])?d[a][0]:d[a]};c(l.globals.seriesRangeStart[a][s],g),c(l.globals.seriesRangeEnd[a][s],u(u({},g),{},{strokeColor:Array.isArray(d[a])?d[a][1]:d[a]}))}return h}},{key:\"drawGoalLine\",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,n=t.barHeight,o=new Mi(this.barCtx.ctx),l=o.group({className:\"apexcharts-bar-goals-groups\"});l.node.classList.add(\"apexcharts-element-hidden\"),this.barCtx.w.globals.delayedElements.push({el:l.node}),l.attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(this.barCtx.w.globals.cuid,\")\"));var h=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){if(t.x>=-1&&t.x<=o.w.globals.gridWidth+1){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:n/2,a=i+e+n/2;h=o.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(h)}})):Array.isArray(s)&&s.forEach((function(t){if(t.y>=-1&&t.y<=o.w.globals.gridHeight+1){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;h=o.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(h)}})),l}},{key:\"drawBarShadow\",value:function(t){var e=t.prevPaths,i=t.currPaths,a=t.color,s=this.w,r=e.x,n=e.x1,o=e.barYPosition,l=i.x,h=i.x1,c=i.barYPosition,d=o+i.barHeight,u=new Mi(this.barCtx.ctx),g=new v,p=u.move(n,d)+u.line(r,d)+u.line(l,c)+u.line(h,c)+u.line(n,d)+(\"around\"===s.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[realIndex][j]?\" Z\":\" z\");return u.drawPath({d:p,fill:g.shadeColor(.5,v.rgb2hex(a)),stroke:\"none\",strokeWidth:0,fillOpacity:1,classes:\"apexcharts-bar-shadow apexcharts-decoration-element\"})}},{key:\"getZeroValueEncounters\",value:function(t){var e,i=t.i,a=t.j,s=this.w,r=0,n=0;return(s.config.plotOptions.bar.horizontal?s.globals.series.map((function(t,e){return e})):(null===(e=s.globals.columnSeries)||void 0===e?void 0:e.i.map((function(t){return t})))||[]).forEach((function(t){var e=s.globals.seriesPercent[t][a];e&&r++,t<i&&0===e&&n++})),{nonZeroColumns:r,zeroEncounters:n}}},{key:\"getGroupIndex\",value:function(t){var e=this.w,i=e.globals.seriesGroups.findIndex((function(i){return i.indexOf(e.globals.seriesNames[t])>-1})),a=this.barCtx.columnGroupIndices,s=a.indexOf(i);return s<0&&(a.push(i),s=a.length-1),{groupIndex:i,columnGroupIndex:s}}}]),t}(),Pa=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w;var s=this.w;this.barOptions=s.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=s.config.stroke.width,this.isNullValue=!1,this.isRangeBar=s.globals.seriesRange.length&&this.isHorizontal,this.isVerticalGroupedRangeBar=!s.globals.isBarHorizontal&&s.globals.seriesRange.length&&s.config.plotOptions.bar.rangeBarGroupRows,this.isFunnel=this.barOptions.isFunnel,this.xyRatios=a,null!==this.xyRatios&&(this.xRatio=a.xRatio,this.yRatio=a.yRatio,this.invertedXRatio=a.invertedXRatio,this.invertedYRatio=a.invertedYRatio,this.baseLineY=a.baseLineY,this.baseLineInvertedY=a.baseLineInvertedY),this.yaxisIndex=0,this.translationsIndex=0,this.seriesLen=0,this.pathArr=[];var r=new Zi(this.ctx);this.lastActiveBarSerieIndex=r.getActiveConfigSeriesIndex(\"desc\",[\"bar\",\"column\"]),this.columnGroupIndices=[];var n=r.getBarSeriesIndices(),o=new Pi(this.ctx);this.stackedSeriesTotals=o.getStackedSeriesTotals(this.w.config.series.map((function(t,e){return-1===n.indexOf(e)?e:-1})).filter((function(t){return-1!==t}))),this.barHelpers=new Ma(this)}return s(t,[{key:\"draw\",value:function(t,e){var i=this.w,a=new Mi(this.ctx),s=new Pi(this.ctx,i);t=s.getLogSeries(t),this.series=t,this.yRatio=s.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);var r=a.group({class:\"apexcharts-bar-series apexcharts-plot-series\"});i.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn(\"WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts\");for(var n=0,o=0;n<t.length;n++,o++){var l,h,c,d,g=void 0,p=void 0,f=[],x=[],b=i.globals.comboCharts?e[n]:n,m=this.barHelpers.getGroupIndex(b).columnGroupIndex,y=a.group({class:\"apexcharts-series\",rel:n+1,seriesName:v.escapeString(i.globals.seriesNames[b]),\"data:realIndex\":b});this.ctx.series.addCollapsedClassToSeries(y,b),t[n].length>0&&(this.visibleI=this.visibleI+1);var w=0,k=0;this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[b],this.translationsIndex=b);var A=this.translationsIndex;this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var C=this.barHelpers.initialPositions(b);p=C.y,w=C.barHeight,h=C.yDivision,d=C.zeroW,g=C.x,k=C.barWidth,l=C.xDivision,c=C.zeroH,this.isHorizontal||x.push(g+k/2);var S=a.group({class:\"apexcharts-datalabels\",\"data:realIndex\":b});i.globals.delayedElements.push({el:S.node}),S.node.classList.add(\"apexcharts-element-hidden\");var L=a.group({class:\"apexcharts-bar-goals-markers\"}),M=a.group({class:\"apexcharts-bar-shadows\"});i.globals.delayedElements.push({el:M.node}),M.node.classList.add(\"apexcharts-element-hidden\");for(var P=0;P<t[n].length;P++){var I=this.barHelpers.getStrokeWidth(n,P,b),T=null,z={indexes:{i:n,j:P,realIndex:b,translationsIndex:A,bc:o},x:g,y:p,strokeWidth:I,elSeries:y};this.isHorizontal?(T=this.drawBarPaths(u(u({},z),{},{barHeight:w,zeroW:d,yDivision:h})),k=this.series[n][P]/this.invertedYRatio):(T=this.drawColumnPaths(u(u({},z),{},{xDivision:l,barWidth:k,zeroH:c})),w=this.series[n][P]/this.yRatio[A]);var X=this.barHelpers.getPathFillColor(t,n,P,b);if(this.isFunnel&&this.barOptions.isFunnel3d&&this.pathArr.length&&P>0){var R,E=this.barHelpers.drawBarShadow({color:\"string\"==typeof X.color&&-1===(null===(R=X.color)||void 0===R?void 0:R.indexOf(\"url\"))?X.color:v.hexToRgba(i.globals.colors[n]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:T});if(M.add(E),i.config.chart.dropShadow.enabled)new Li(this.ctx).dropShadow(E,i.config.chart.dropShadow,b)}this.pathArr.push(T);var Y=this.barHelpers.drawGoalLine({barXPosition:T.barXPosition,barYPosition:T.barYPosition,goalX:T.goalX,goalY:T.goalY,barHeight:w,barWidth:k});Y&&L.add(Y),p=T.y,g=T.x,P>0&&x.push(g+k/2),f.push(p),this.renderSeries(u(u({realIndex:b,pathFill:X.color},X.useRangeColor?{lineFill:X.color}:{}),{},{j:P,i:n,columnGroupIndex:m,pathFrom:T.pathFrom,pathTo:T.pathTo,strokeWidth:I,elSeries:y,x:g,y:p,series:t,barHeight:Math.abs(T.barHeight?T.barHeight:w),barWidth:Math.abs(T.barWidth?T.barWidth:k),elDataLabelsWrap:S,elGoalsMarkers:L,elBarShadows:M,visibleSeries:this.visibleI,type:\"bar\"}))}i.globals.seriesXvalues[b]=x,i.globals.seriesYvalues[b]=f,r.add(y)}return r}},{key:\"renderSeries\",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,n=t.columnGroupIndex,o=t.pathFrom,l=t.pathTo,h=t.strokeWidth,c=t.elSeries,d=t.x,u=t.y,g=t.y1,p=t.y2,f=t.series,x=t.barHeight,b=t.barWidth,m=t.barXPosition,v=t.barYPosition,y=t.elDataLabelsWrap,w=t.elGoalsMarkers,k=t.elBarShadows,A=t.visibleSeries,C=t.type,S=t.classes,L=this.w,M=new Mi(this.ctx);if(!a){var P=\"function\"==typeof L.globals.stroke.colors[e]?function(t){var e,i=L.config.stroke.colors;return Array.isArray(i)&&i.length>0&&((e=i[t])||(e=\"\"),\"function\"==typeof e)?e({value:L.globals.series[t][s],dataPointIndex:s,w:L}):e}(e):L.globals.stroke.colors[e];a=this.barOptions.distributed?L.globals.stroke.colors[s]:P}L.config.series[r].data[s]&&L.config.series[r].data[s].strokeColor&&(a=L.config.series[r].data[s].strokeColor),this.isNullValue&&(i=\"none\");var I=s/L.config.chart.animations.animateGradually.delay*(L.config.chart.animations.speed/L.globals.dataPoints)/2.4,T=M.renderPaths({i:r,j:s,realIndex:e,pathFrom:o,pathTo:l,stroke:a,strokeWidth:h,strokeLineCap:L.config.stroke.lineCap,fill:i,animationDelay:I,initialSpeed:L.config.chart.animations.speed,dataChangeSpeed:L.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-\".concat(C,\"-area \").concat(S),chartType:C});T.attr(\"clip-path\",\"url(#gridRectBarMask\".concat(L.globals.cuid,\")\"));var z=L.config.forecastDataPoints;z.count>0&&s>=L.globals.dataPoints-z.count&&(T.node.setAttribute(\"stroke-dasharray\",z.dashArray),T.node.setAttribute(\"stroke-width\",z.strokeWidth),T.node.setAttribute(\"fill-opacity\",z.fillOpacity)),void 0!==g&&void 0!==p&&(T.attr(\"data-range-y1\",g),T.attr(\"data-range-y2\",p)),new Li(this.ctx).setSelectionFilter(T,e,s),c.add(T);var X=new La(this).handleBarDataLabels({x:d,y:u,y1:g,y2:p,i:r,j:s,series:f,realIndex:e,columnGroupIndex:n,barHeight:x,barWidth:b,barXPosition:m,barYPosition:v,renderedPath:T,visibleSeries:A});return null!==X.dataLabels&&y.add(X.dataLabels),X.totalDataLabels&&y.add(X.totalDataLabels),c.add(y),w&&c.add(w),k&&c.add(k),c}},{key:\"drawBarPaths\",value:function(t){var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,n=t.x,o=t.y,l=t.yDivision,h=t.elSeries,c=this.w,d=i.i,u=i.j;if(c.globals.isXNumeric)e=(o=(c.globals.seriesX[d][u]-c.globals.minX)/this.invertedXRatio-a)+a*this.visibleI;else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var g=this.barHelpers.getZeroValueEncounters({i:d,j:u}),p=g.nonZeroColumns,f=g.zeroEncounters;p>0&&(a=this.seriesLen*a/p),e=o+a*this.visibleI,e-=a*f}else e=o+a*this.visibleI;this.isFunnel&&(r-=(this.barHelpers.getXForValue(this.series[d][u],r)-r)/2),n=this.barHelpers.getXForValue(this.series[d][u],r);var x=this.barHelpers.getBarpaths({barYPosition:e,barHeight:a,x1:r,x2:n,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:i.realIndex,i:d,j:u,w:c});return c.globals.isXNumeric||(o+=l),this.barHelpers.barBackground({j:u,i:d,y1:e-a*this.visibleI,y2:a*this.seriesLen,elSeries:h}),{pathTo:x.pathTo,pathFrom:x.pathFrom,x1:r,x:n,y:o,goalX:this.barHelpers.getGoalValues(\"x\",r,null,d,u),barYPosition:e,barHeight:a}}},{key:\"drawColumnPaths\",value:function(t){var e,i=t.indexes,a=t.x,s=t.y,r=t.xDivision,n=t.barWidth,o=t.zeroH,l=t.strokeWidth,h=t.elSeries,c=this.w,d=i.realIndex,u=i.translationsIndex,g=i.i,p=i.j,f=i.bc;if(c.globals.isXNumeric){var x=this.getBarXForNumericXAxis({x:a,j:p,realIndex:d,barWidth:n});a=x.x,e=x.barXPosition}else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var b=this.barHelpers.getZeroValueEncounters({i:g,j:p}),m=b.nonZeroColumns,v=b.zeroEncounters;m>0&&(n=this.seriesLen*n/m),e=a+n*this.visibleI,e-=n*v}else e=a+n*this.visibleI;s=this.barHelpers.getYForValue(this.series[g][p],o,u);var y=this.barHelpers.getColumnPaths({barXPosition:e,barWidth:n,y1:o,y2:s,strokeWidth:l,isReversed:this.isReversed,series:this.series,realIndex:d,i:g,j:p,w:c});return c.globals.isXNumeric||(a+=r),this.barHelpers.barBackground({bc:f,j:p,i:g,x1:e-l/2-n*this.visibleI,x2:n*this.seriesLen+l/2,elSeries:h}),{pathTo:y.pathTo,pathFrom:y.pathFrom,x:a,y:s,goalY:this.barHelpers.getGoalValues(\"y\",null,o,g,p,u),barXPosition:e,barWidth:n}}},{key:\"getBarXForNumericXAxis\",value:function(t){var e=t.x,i=t.barWidth,a=t.realIndex,s=t.j,r=this.w,n=a;return r.globals.seriesX[a].length||(n=r.globals.maxValsInArrayIndex),v.isNumber(r.globals.seriesX[n][s])&&(e=(r.globals.seriesX[n][s]-r.globals.minX)/this.xRatio-i*this.seriesLen/2),{barXPosition:e+i*this.visibleI,x:e}}},{key:\"getPreviousPath\",value:function(t,e){for(var i,a=this.w,s=0;s<a.globals.previousPaths.length;s++){var r=a.globals.previousPaths[s];r.paths&&r.paths.length>0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}]),t}(),Ia=function(t){h(a,Pa);var e=n(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:\"draw\",value:function(t,e){var i=this,a=this.w;this.graphics=new Mi(this.ctx),this.bar=new Pa(this.ctx,this.xyRatios);var s=new Pi(this.ctx,a);t=s.getLogSeries(t),this.yRatio=s.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t),\"100%\"===a.config.chart.stackType&&(t=a.globals.comboCharts?e.map((function(t){return a.globals.seriesPercent[t]})):a.globals.seriesPercent.slice()),this.series=t,this.barHelpers.initializeStackedPrevVars(this);for(var r=this.graphics.group({class:\"apexcharts-bar-series apexcharts-plot-series\"}),n=0,o=0,l=function(s,l){var h=void 0,c=void 0,d=void 0,g=void 0,p=a.globals.comboCharts?e[s]:s,f=i.barHelpers.getGroupIndex(p),x=f.groupIndex,b=f.columnGroupIndex;i.groupCtx=i[a.globals.seriesGroups[x]];var m=[],y=[],w=0;i.yRatio.length>1&&(i.yaxisIndex=a.globals.seriesYAxisReverseMap[p][0],w=p),i.isReversed=a.config.yaxis[i.yaxisIndex]&&a.config.yaxis[i.yaxisIndex].reversed;var k=i.graphics.group({class:\"apexcharts-series\",seriesName:v.escapeString(a.globals.seriesNames[p]),rel:s+1,\"data:realIndex\":p});i.ctx.series.addCollapsedClassToSeries(k,p);var A=i.graphics.group({class:\"apexcharts-datalabels\",\"data:realIndex\":p}),C=i.graphics.group({class:\"apexcharts-bar-goals-markers\"}),S=0,L=0,M=i.initialPositions(n,o,h,c,d,g,w);o=M.y,S=M.barHeight,c=M.yDivision,g=M.zeroW,n=M.x,L=M.barWidth,h=M.xDivision,d=M.zeroH,a.globals.barHeight=S,a.globals.barWidth=L,i.barHelpers.initializeStackedXYVars(i),1===i.groupCtx.prevY.length&&i.groupCtx.prevY[0].every((function(t){return isNaN(t)}))&&(i.groupCtx.prevY[0]=i.groupCtx.prevY[0].map((function(){return d})),i.groupCtx.prevYF[0]=i.groupCtx.prevYF[0].map((function(){return 0})));for(var P=0;P<a.globals.dataPoints;P++){var I=i.barHelpers.getStrokeWidth(s,P,p),T={indexes:{i:s,j:P,realIndex:p,translationsIndex:w,bc:l},strokeWidth:I,x:n,y:o,elSeries:k,columnGroupIndex:b,seriesGroup:a.globals.seriesGroups[x]},z=null;i.isHorizontal?(z=i.drawStackedBarPaths(u(u({},T),{},{zeroW:g,barHeight:S,yDivision:c})),L=i.series[s][P]/i.invertedYRatio):(z=i.drawStackedColumnPaths(u(u({},T),{},{xDivision:h,barWidth:L,zeroH:d})),S=i.series[s][P]/i.yRatio[w]);var X=i.barHelpers.drawGoalLine({barXPosition:z.barXPosition,barYPosition:z.barYPosition,goalX:z.goalX,goalY:z.goalY,barHeight:S,barWidth:L});X&&C.add(X),o=z.y,n=z.x,m.push(n),y.push(o);var R=i.barHelpers.getPathFillColor(t,s,P,p),E=\"\",Y=a.globals.isBarHorizontal?\"apexcharts-flip-x\":\"apexcharts-flip-y\";(\"bottom\"===i.barHelpers.arrBorderRadius[p][P]&&a.globals.series[p][P]>0||\"top\"===i.barHelpers.arrBorderRadius[p][P]&&a.globals.series[p][P]<0)&&(E=Y),k=i.renderSeries(u(u({realIndex:p,pathFill:R.color},R.useRangeColor?{lineFill:R.color}:{}),{},{j:P,i:s,columnGroupIndex:b,pathFrom:z.pathFrom,pathTo:z.pathTo,strokeWidth:I,elSeries:k,x:n,y:o,series:t,barHeight:S,barWidth:L,elDataLabelsWrap:A,elGoalsMarkers:C,type:\"bar\",visibleSeries:b,classes:E}))}a.globals.seriesXvalues[p]=m,a.globals.seriesYvalues[p]=y,i.groupCtx.prevY.push(i.groupCtx.yArrj),i.groupCtx.prevYF.push(i.groupCtx.yArrjF),i.groupCtx.prevYVal.push(i.groupCtx.yArrjVal),i.groupCtx.prevX.push(i.groupCtx.xArrj),i.groupCtx.prevXF.push(i.groupCtx.xArrjF),i.groupCtx.prevXVal.push(i.groupCtx.xArrjVal),r.add(k)},h=0,c=0;h<t.length;h++,c++)l(h,c);return r}},{key:\"initialPositions\",value:function(t,e,i,a,s,r,n){var o,l,h=this.w;if(this.isHorizontal){a=h.globals.gridHeight/h.globals.dataPoints;var c=h.config.plotOptions.bar.barHeight;o=-1===String(c).indexOf(\"%\")?parseInt(c,10):a*parseInt(c,10)/100,r=h.globals.padHorizontal+(this.isReversed?h.globals.gridWidth-this.baseLineInvertedY:this.baseLineInvertedY),e=(a-o)/2}else{l=i=h.globals.gridWidth/h.globals.dataPoints;var d=h.config.plotOptions.bar.columnWidth;h.globals.isXNumeric&&h.globals.dataPoints>1?l=(i=h.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:-1===String(d).indexOf(\"%\")?l=parseInt(d,10):l*=parseInt(d,10)/100,s=this.isReversed?this.baseLineY[n]:h.globals.gridHeight-this.baseLineY[n],t=h.globals.padHorizontal+(i-l)/2}var u=h.globals.barGroups.length||1;return{x:t,y:e,yDivision:a,xDivision:i,barHeight:o/u,barWidth:l/u,zeroH:s,zeroW:r}}},{key:\"drawStackedBarPaths\",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,n=t.x,o=t.y,l=t.columnGroupIndex,h=t.seriesGroup,c=t.yDivision,d=t.elSeries,u=this.w,g=o+l*a,p=i.i,f=i.j,x=i.realIndex,b=i.translationsIndex,m=0,v=0;v<this.groupCtx.prevXF.length;v++)m+=this.groupCtx.prevXF[v][f];var y=p;if(u.config.series[x].name&&(y=h.indexOf(u.config.series[x].name)),y>0){var w=r;this.groupCtx.prevXVal[y-1][f]<0?w=this.series[p][f]>=0?this.groupCtx.prevX[y-1][f]+m-2*(this.isReversed?m:0):this.groupCtx.prevX[y-1][f]:this.groupCtx.prevXVal[y-1][f]>=0&&(w=this.series[p][f]>=0?this.groupCtx.prevX[y-1][f]:this.groupCtx.prevX[y-1][f]-m+2*(this.isReversed?m:0)),e=w}else e=r;n=null===this.series[p][f]?e:e+this.series[p][f]/this.invertedYRatio-2*(this.isReversed?this.series[p][f]/this.invertedYRatio:0);var k=this.barHelpers.getBarpaths({barYPosition:g,barHeight:a,x1:e,x2:n,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:i.realIndex,seriesGroup:h,i:p,j:f,w:u});return this.barHelpers.barBackground({j:f,i:p,y1:g,y2:a,elSeries:d}),o+=c,{pathTo:k.pathTo,pathFrom:k.pathFrom,goalX:this.barHelpers.getGoalValues(\"x\",r,null,p,f,b),barXPosition:e,barYPosition:g,x:n,y:o}}},{key:\"drawStackedColumnPaths\",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,n=t.zeroH,o=t.columnGroupIndex,l=t.seriesGroup,h=t.elSeries,c=this.w,d=e.i,u=e.j,g=e.bc,p=e.realIndex,f=e.translationsIndex;if(c.globals.isXNumeric){var x=c.globals.seriesX[p][u];x||(x=0),i=(x-c.globals.minX)/this.xRatio-r/2*c.globals.barGroups.length}for(var b,m=i+o*r,v=0,y=0;y<this.groupCtx.prevYF.length;y++)v+=isNaN(this.groupCtx.prevYF[y][u])?0:this.groupCtx.prevYF[y][u];var w=d;if(l&&(w=l.indexOf(c.globals.seriesNames[p])),w>0&&!c.globals.isXNumeric||w>0&&c.globals.isXNumeric&&c.globals.seriesX[p-1][u]===c.globals.seriesX[p][u]){var k,A,C,S=Math.min(this.yRatio.length+1,p+1);if(void 0!==this.groupCtx.prevY[w-1]&&this.groupCtx.prevY[w-1].length)for(var L=1;L<S;L++){var M;if(!isNaN(null===(M=this.groupCtx.prevY[w-L])||void 0===M?void 0:M[u])){C=this.groupCtx.prevY[w-L][u];break}}for(var P=1;P<S;P++){var I,T;if((null===(I=this.groupCtx.prevYVal[w-P])||void 0===I?void 0:I[u])<0){A=this.series[d][u]>=0?C-v+2*(this.isReversed?v:0):C;break}if((null===(T=this.groupCtx.prevYVal[w-P])||void 0===T?void 0:T[u])>=0){A=this.series[d][u]>=0?C:C+v-2*(this.isReversed?v:0);break}}void 0===A&&(A=c.globals.gridHeight),b=null!==(k=this.groupCtx.prevYF[0])&&void 0!==k&&k.every((function(t){return 0===t}))&&this.groupCtx.prevYF.slice(1,w).every((function(t){return t.every((function(t){return isNaN(t)}))}))?n:A}else b=n;a=this.series[d][u]?b-this.series[d][u]/this.yRatio[f]+2*(this.isReversed?this.series[d][u]/this.yRatio[f]:0):b;var z=this.barHelpers.getColumnPaths({barXPosition:m,barWidth:r,y1:b,y2:a,yRatio:this.yRatio[f],strokeWidth:this.strokeWidth,isReversed:this.isReversed,series:this.series,seriesGroup:l,realIndex:e.realIndex,i:d,j:u,w:c});return this.barHelpers.barBackground({bc:g,j:u,i:d,x1:m,x2:r,elSeries:h}),{pathTo:z.pathTo,pathFrom:z.pathFrom,goalY:this.barHelpers.getGoalValues(\"y\",null,n,d,u),barXPosition:m,x:c.globals.isXNumeric?i:i+s,y:a}}}]),a}(),Ta=function(t){h(a,Pa);var e=n(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:\"draw\",value:function(t,e,i){var a=this,s=this.w,r=new Mi(this.ctx),n=s.globals.comboCharts?e:s.config.chart.type,o=new ji(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=s.config.plotOptions.bar.horizontal;var l=new Pi(this.ctx,s);t=l.getLogSeries(t),this.series=t,this.yRatio=l.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var h=r.group({class:\"apexcharts-\".concat(n,\"-series apexcharts-plot-series\")}),c=function(e){a.isBoxPlot=\"boxPlot\"===s.config.chart.type||\"boxPlot\"===s.config.series[e].type;var n,l,c,d,g=void 0,p=void 0,f=[],x=[],b=s.globals.comboCharts?i[e]:e,m=a.barHelpers.getGroupIndex(b).columnGroupIndex,y=r.group({class:\"apexcharts-series\",seriesName:v.escapeString(s.globals.seriesNames[b]),rel:e+1,\"data:realIndex\":b});a.ctx.series.addCollapsedClassToSeries(y,b),t[e].length>0&&(a.visibleI=a.visibleI+1);var w,k,A=0;a.yRatio.length>1&&(a.yaxisIndex=s.globals.seriesYAxisReverseMap[b][0],A=b);var C=a.barHelpers.initialPositions(b);p=C.y,w=C.barHeight,l=C.yDivision,d=C.zeroW,g=C.x,k=C.barWidth,n=C.xDivision,c=C.zeroH,x.push(g+k/2);for(var S=r.group({class:\"apexcharts-datalabels\",\"data:realIndex\":b}),L=r.group({class:\"apexcharts-bar-goals-markers\"}),M=function(i){var r=a.barHelpers.getStrokeWidth(e,i,b),h=null,v={indexes:{i:e,j:i,realIndex:b,translationsIndex:A},x:g,y:p,strokeWidth:r,elSeries:y};h=a.isHorizontal?a.drawHorizontalBoxPaths(u(u({},v),{},{yDivision:l,barHeight:w,zeroW:d})):a.drawVerticalBoxPaths(u(u({},v),{},{xDivision:n,barWidth:k,zeroH:c})),p=h.y,g=h.x;var C=a.barHelpers.drawGoalLine({barXPosition:h.barXPosition,barYPosition:h.barYPosition,goalX:h.goalX,goalY:h.goalY,barHeight:w,barWidth:k});C&&L.add(C),i>0&&x.push(g+k/2),f.push(p),h.pathTo.forEach((function(n,l){var c=!a.isBoxPlot&&a.candlestickOptions.wick.useFillColor?h.color[l]:s.globals.stroke.colors[e],d=o.fillPath({seriesNumber:b,dataPointIndex:i,color:h.color[l],value:t[e][i]});a.renderSeries({realIndex:b,pathFill:d,lineFill:c,j:i,i:e,pathFrom:h.pathFrom,pathTo:n,strokeWidth:r,elSeries:y,x:g,y:p,series:t,columnGroupIndex:m,barHeight:w,barWidth:k,elDataLabelsWrap:S,elGoalsMarkers:L,visibleSeries:a.visibleI,type:s.config.chart.type})}))},P=0;P<s.globals.dataPoints;P++)M(P);s.globals.seriesXvalues[b]=x,s.globals.seriesYvalues[b]=f,h.add(y)},d=0;d<t.length;d++)c(d);return h}},{key:\"drawVerticalBoxPaths\",value:function(t){var e=t.indexes,i=t.x;t.y;var a=t.xDivision,s=t.barWidth,r=t.zeroH,n=t.strokeWidth,o=this.w,l=new Mi(this.ctx),h=e.i,c=e.j,d=o.config.plotOptions.candlestick.colors,u=this.boxOptions.colors,g=e.realIndex,p=function(t){return Array.isArray(t)?t[g]:t},f=p(d.upward),x=p(d.downward),b=this.yRatio[e.translationsIndex],m=this.getOHLCValue(g,c),v=r,y=r,w=m.o<m.c?[f]:[x];this.isBoxPlot&&(w=[p(u.lower),p(u.upper)]);var k=Math.min(m.o,m.c),A=Math.max(m.o,m.c),C=m.m;o.globals.isXNumeric&&(i=(o.globals.seriesX[g][c]-o.globals.minX)/this.xRatio-s/2);var S=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(k=r,A=r):(k=r-k/b,A=r-A/b,v=r-m.h/b,y=r-m.l/b,C=r-m.m/b);var L=l.move(S,r),M=l.move(S+s/2,k);return o.globals.previousPaths.length>0&&(M=this.getPreviousPath(g,c,!0)),L=this.isBoxPlot?[l.move(S,k)+l.line(S+s/2,k)+l.line(S+s/2,v)+l.line(S+s/4,v)+l.line(S+s-s/4,v)+l.line(S+s/2,v)+l.line(S+s/2,k)+l.line(S+s,k)+l.line(S+s,C)+l.line(S,C)+l.line(S,k+n/2),l.move(S,C)+l.line(S+s,C)+l.line(S+s,A)+l.line(S+s/2,A)+l.line(S+s/2,y)+l.line(S+s-s/4,y)+l.line(S+s/4,y)+l.line(S+s/2,y)+l.line(S+s/2,A)+l.line(S,A)+l.line(S,C)+\"z\"]:[l.move(S,A)+l.line(S+s/2,A)+l.line(S+s/2,v)+l.line(S+s/2,A)+l.line(S+s,A)+l.line(S+s,k)+l.line(S+s/2,k)+l.line(S+s/2,y)+l.line(S+s/2,k)+l.line(S,k)+l.line(S,A-n/2)],M+=l.move(S,k),o.globals.isXNumeric||(i+=a),{pathTo:L,pathFrom:M,x:i,y:A,goalY:this.barHelpers.getGoalValues(\"y\",null,r,h,c,e.translationsIndex),barXPosition:S,color:w}}},{key:\"drawHorizontalBoxPaths\",value:function(t){var e=t.indexes;t.x;var i=t.y,a=t.yDivision,s=t.barHeight,r=t.zeroW,n=t.strokeWidth,o=this.w,l=new Mi(this.ctx),h=e.i,c=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var u=this.invertedYRatio,g=e.realIndex,p=this.getOHLCValue(g,c),f=r,x=r,b=Math.min(p.o,p.c),m=Math.max(p.o,p.c),v=p.m;o.globals.isXNumeric&&(i=(o.globals.seriesX[g][c]-o.globals.minX)/this.invertedXRatio-s/2);var y=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(b=r,m=r):(b=r+b/u,m=r+m/u,f=r+p.h/u,x=r+p.l/u,v=r+p.m/u);var w=l.move(r,y),k=l.move(b,y+s/2);return o.globals.previousPaths.length>0&&(k=this.getPreviousPath(g,c,!0)),w=[l.move(b,y)+l.line(b,y+s/2)+l.line(f,y+s/2)+l.line(f,y+s/2-s/4)+l.line(f,y+s/2+s/4)+l.line(f,y+s/2)+l.line(b,y+s/2)+l.line(b,y+s)+l.line(v,y+s)+l.line(v,y)+l.line(b+n/2,y),l.move(v,y)+l.line(v,y+s)+l.line(m,y+s)+l.line(m,y+s/2)+l.line(x,y+s/2)+l.line(x,y+s-s/4)+l.line(x,y+s/4)+l.line(x,y+s/2)+l.line(m,y+s/2)+l.line(m,y)+l.line(v,y)+\"z\"],k+=l.move(b,y),o.globals.isXNumeric||(i+=a),{pathTo:w,pathFrom:k,x:m,y:i,goalX:this.barHelpers.getGoalValues(\"x\",r,null,h,c),barYPosition:y,color:d}}},{key:\"getOHLCValue\",value:function(t,e){var i=this.w,a=new Pi(this.ctx,i),s=a.getLogValAtSeriesIndex(i.globals.seriesCandleH[t][e],t),r=a.getLogValAtSeriesIndex(i.globals.seriesCandleO[t][e],t),n=a.getLogValAtSeriesIndex(i.globals.seriesCandleM[t][e],t),o=a.getLogValAtSeriesIndex(i.globals.seriesCandleC[t][e],t),l=a.getLogValAtSeriesIndex(i.globals.seriesCandleL[t][e],t);return{o:this.isBoxPlot?s:r,h:this.isBoxPlot?r:s,m:n,l:this.isBoxPlot?o:l,c:this.isBoxPlot?l:o}}}]),a}(),za=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"checkColorRange\",value:function(){var t=this.w,e=!1,i=t.config.plotOptions[t.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:\"getShadeColor\",value:function(t,e,i,a){var s=this.w,r=1,n=s.config.plotOptions[t].shadeIntensity,o=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?o.percent<0?o.percent/100*(1.25*n):(1-o.percent/100)*(1.25*n):o.percent<=0?1-(1+o.percent/100)*n:(1-o.percent/100)*n:(r=1-o.percent/100,\"treemap\"===t&&(r=(1-o.percent/100)*(1.25*n)));var l=o.color,h=new v;if(s.config.plotOptions[t].enableShades)if(\"dark\"===this.w.config.theme.mode){var c=h.shadeColor(-1*r,o.color);l=v.hexToRgba(v.isColorHex(c)?c:v.rgb2hex(c),s.config.fill.opacity)}else{var d=h.shadeColor(r,o.color);l=v.hexToRgba(v.isColorHex(d)?d:v.rgb2hex(d),s.config.fill.opacity)}return{color:l,colorProps:o}}},{key:\"determineColor\",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],n=r.colorScale.inverse?i:e;r.distributed&&\"treemap\"===a.config.chart.type&&(n=i);var o=a.globals.colors[n],l=null,h=Math.min.apply(Math,f(a.globals.series[e])),c=Math.max.apply(Math,f(a.globals.series[e]));r.distributed||\"heatmap\"!==t||(h=a.globals.minY,c=a.globals.maxY),void 0!==r.colorScale.min&&(h=r.colorScale.min<a.globals.minY?r.colorScale.min:a.globals.minY,c=r.colorScale.max>a.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(c)+Math.abs(h),u=100*s/(0===d?d-1e-6:d);r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){o=t.color,l=t.foreColor?t.foreColor:null,h=t.from,c=t.to;var i=Math.abs(c)+Math.abs(h);u=100*s/(0===i?i-1e-6:i)}}));return{color:o,foreColor:l,percent:u}}},{key:\"calculateDataLabels\",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,n=t.colorProps,o=t.fontSize,l=this.w.config.dataLabels,h=new Mi(this.ctx),c=new qi(this.ctx),d=null;if(l.enabled){d=h.group({class:\"apexcharts-data-labels\"});var u=l.offsetX,g=l.offsetY,p=i+u,f=a+parseFloat(l.style.fontSize)/3+g;c.plotDataLabelsText({x:p,y:f,text:e,i:s,j:r,color:n.foreColor,parent:d,fontSize:o,dataLabelsConfig:l})}return d}},{key:\"addListeners\",value:function(t){var e=new Mi(this.ctx);t.node.addEventListener(\"mouseenter\",e.pathMouseEnter.bind(this,t)),t.node.addEventListener(\"mouseleave\",e.pathMouseLeave.bind(this,t)),t.node.addEventListener(\"mousedown\",e.pathMouseDown.bind(this,t))}}]),t}(),Xa=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w,this.xRatio=a.xRatio,this.yRatio=a.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new za(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return s(t,[{key:\"draw\",value:function(t){var e=this.w,i=new Mi(this.ctx),a=i.group({class:\"apexcharts-heatmap\"});a.attr(\"clip-path\",\"url(#gridRectMask\".concat(e.globals.cuid,\")\"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,n=0,o=!1;this.negRange=this.helpers.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(o=!0,l.reverse());for(var h=o?0:l.length-1;o?h<l.length:h>=0;o?h++:h--){var c=i.group({class:\"apexcharts-series apexcharts-heatmap-series\",seriesName:v.escapeString(e.globals.seriesNames[h]),rel:h+1,\"data:realIndex\":h});if(this.ctx.series.addCollapsedClassToSeries(c,h),e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new Li(this.ctx).dropShadow(c,d,h)}for(var u=0,g=e.config.plotOptions.heatmap.shadeIntensity,p=0,f=0;f<e.globals.dataPoints;f++)if(e.globals.seriesX.length&&!e.globals.allSeriesHasEqualX&&e.globals.minX+e.globals.minXDiff*f<e.globals.seriesX[h][p])u+=s;else{if(p>=l[h].length)break;var x=this.helpers.getShadeColor(e.config.chart.type,h,p,this.negRange),b=x.color,m=x.colorProps;if(\"image\"===e.config.fill.type)b=new ji(this.ctx).fillPath({seriesNumber:h,dataPointIndex:p,opacity:e.globals.hasNegs?m.percent<0?1-(1+m.percent/100):g+m.percent/100:m.percent/100,patternID:v.randomId(),width:e.config.fill.image.width?e.config.fill.image.width:s,height:e.config.fill.image.height?e.config.fill.image.height:r});var y=this.rectRadius,w=i.drawRect(u,n,s,r,y);if(w.attr({cx:u,cy:n}),w.node.classList.add(\"apexcharts-heatmap-rect\"),c.add(w),w.attr({fill:b,i:h,index:h,j:p,val:t[h][p],\"stroke-width\":this.strokeWidth,stroke:e.config.plotOptions.heatmap.useFillColorAsStroke?b:e.globals.stroke.colors[0],color:b}),this.helpers.addListeners(w),e.config.chart.animations.enabled&&!e.globals.dataChanged){var k=1;e.globals.resized||(k=e.config.chart.animations.speed),this.animateHeatMap(w,u,n,s,r,k)}if(e.globals.dataChanged){var A=1;if(this.dynamicAnim.enabled&&e.globals.shouldAnimate){A=this.dynamicAnim.speed;var C=e.globals.previousPaths[h]&&e.globals.previousPaths[h][p]&&e.globals.previousPaths[h][p].color;C||(C=\"rgba(255, 255, 255, 0)\"),this.animateHeatColor(w,v.isColorHex(C)?C:v.rgb2hex(C),v.isColorHex(b)?b:v.rgb2hex(b),A)}}var S=(0,e.config.dataLabels.formatter)(e.globals.series[h][p],{value:e.globals.series[h][p],seriesIndex:h,dataPointIndex:p,w:e}),L=this.helpers.calculateDataLabels({text:S,x:u+s/2,y:n+r/2,i:h,j:p,colorProps:m,series:l});null!==L&&c.add(L),u+=s,p++}n+=r,a.add(c)}var M=e.globals.yAxisScale[0].result.slice();return e.config.yaxis[0].reversed?M.unshift(\"\"):M.push(\"\"),e.globals.yAxisScale[0].result=M,a}},{key:\"animateHeatMap\",value:function(t,e,i,a,s,r){var n=new y(this.ctx);n.animateRect(t,{x:e+a/2,y:i+s/2,width:0,height:0},{x:e,y:i,width:a,height:s},r,(function(){n.animationCompleted(t)}))}},{key:\"animateHeatColor\",value:function(t,e,i,a){t.attr({fill:e}).animate(a).attr({fill:i})}}]),t}(),Ra=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"drawYAxisTexts\",value:function(t,e,i,a){var s=this.w,r=s.config.yaxis[0],n=s.globals.yLabelFormatters[0];return new Mi(this.ctx).drawText({x:t+r.labels.offsetX,y:e+r.labels.offsetY,text:n(a,i),textAnchor:\"middle\",fontSize:r.labels.style.fontSize,fontFamily:r.labels.style.fontFamily,foreColor:Array.isArray(r.labels.style.colors)?r.labels.style.colors[i]:r.labels.style.colors})}}]),t}(),Ea=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels,this.lineColorArr=void 0!==a.globals.stroke.colors?a.globals.stroke.colors:a.globals.colors,this.defaultSize=Math.min(a.globals.gridWidth,a.globals.gridHeight),this.centerY=this.defaultSize/2,this.centerX=a.globals.gridWidth/2,\"radialBar\"===a.config.chart.type?this.fullAngle=360:this.fullAngle=Math.abs(a.config.plotOptions.pie.endAngle-a.config.plotOptions.pie.startAngle),this.initialAngle=a.config.plotOptions.pie.startAngle%this.fullAngle,a.globals.radialSize=this.defaultSize/2.05-a.config.stroke.width-(a.config.chart.sparkline.enabled?0:a.config.chart.dropShadow.blur),this.donutSize=a.globals.radialSize*parseInt(a.config.plotOptions.pie.donut.size,10)/100;var s=a.config.plotOptions.pie.customScale,r=a.globals.gridWidth/2,n=a.globals.gridHeight/2;this.translateX=r-r*s,this.translateY=n-n*s,this.dataLabelsGroup=new Mi(this.ctx).group({class:\"apexcharts-datalabels-group\",transform:\"translate(\".concat(this.translateX,\", \").concat(this.translateY,\") scale(\").concat(s,\")\")}),this.maxY=0,this.sliceLabels=[],this.sliceSizes=[],this.prevSectorAngleArr=[]}return s(t,[{key:\"draw\",value:function(t){var e=this,i=this.w,a=new Mi(this.ctx),s=a.group({class:\"apexcharts-pie\"});if(i.globals.noData)return s;for(var r=0,n=0;n<t.length;n++)r+=v.negToZero(t[n]);var o=[],l=a.group();0===r&&(r=1e-5),t.forEach((function(t){e.maxY=Math.max(e.maxY,t)})),i.config.yaxis[0].max&&(this.maxY=i.config.yaxis[0].max),\"back\"===i.config.grid.position&&\"polarArea\"===this.chartType&&this.drawPolarElements(s);for(var h=0;h<t.length;h++){var c=this.fullAngle*v.negToZero(t[h])/r;o.push(c),\"polarArea\"===this.chartType?(o[h]=this.fullAngle/t.length,this.sliceSizes.push(i.globals.radialSize*t[h]/this.maxY)):this.sliceSizes.push(i.globals.radialSize)}if(i.globals.dataChanged){for(var d,u=0,g=0;g<i.globals.previousPaths.length;g++)u+=v.negToZero(i.globals.previousPaths[g]);for(var p=0;p<i.globals.previousPaths.length;p++)d=this.fullAngle*v.negToZero(i.globals.previousPaths[p])/u,this.prevSectorAngleArr.push(d)}if(this.donutSize<0&&(this.donutSize=0),\"donut\"===this.chartType){var f=a.drawCircle(this.donutSize);f.attr({cx:this.centerX,cy:this.centerY,fill:i.config.plotOptions.pie.donut.background?i.config.plotOptions.pie.donut.background:\"transparent\"}),l.add(f)}var x=this.drawArcs(o,t);if(this.sliceLabels.forEach((function(t){x.add(t)})),l.attr({transform:\"translate(\".concat(this.translateX,\", \").concat(this.translateY,\") scale(\").concat(i.config.plotOptions.pie.customScale,\")\")}),l.add(x),s.add(l),this.donutDataLabels.show){var b=this.renderInnerDataLabels(this.dataLabelsGroup,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show});s.add(b)}return\"front\"===i.config.grid.position&&\"polarArea\"===this.chartType&&this.drawPolarElements(s),s}},{key:\"drawArcs\",value:function(t,e){var i=this.w,a=new Li(this.ctx),s=new Mi(this.ctx),r=new ji(this.ctx),n=s.group({class:\"apexcharts-slices\"}),o=this.initialAngle,l=this.initialAngle,h=this.initialAngle,c=this.initialAngle;this.strokeWidth=i.config.stroke.show?i.config.stroke.width:0;for(var d=0;d<t.length;d++){var u=s.group({class:\"apexcharts-series apexcharts-pie-series\",seriesName:v.escapeString(i.globals.seriesNames[d]),rel:d+1,\"data:realIndex\":d});n.add(u),l=c,h=(o=h)+t[d],c=l+this.prevSectorAngleArr[d];var g=h<o?this.fullAngle+h-o:h-o,p=r.fillPath({seriesNumber:d,size:this.sliceSizes[d],value:e[d]}),f=this.getChangedPath(l,c),x=s.drawPath({d:f,stroke:Array.isArray(this.lineColorArr)?this.lineColorArr[d]:this.lineColorArr,strokeWidth:0,fill:p,fillOpacity:i.config.fill.opacity,classes:\"apexcharts-pie-area apexcharts-\".concat(this.chartType.toLowerCase(),\"-slice-\").concat(d)});if(x.attr({index:0,j:d}),a.setSelectionFilter(x,0,d),i.config.chart.dropShadow.enabled){var b=i.config.chart.dropShadow;a.dropShadow(x,b,d)}this.addListeners(x,this.donutDataLabels),Mi.setAttrs(x.node,{\"data:angle\":g,\"data:startAngle\":o,\"data:strokeWidth\":this.strokeWidth,\"data:value\":e[d]});var m={x:0,y:0};\"pie\"===this.chartType||\"polarArea\"===this.chartType?m=v.polarToCartesian(this.centerX,this.centerY,i.globals.radialSize/1.25+i.config.plotOptions.pie.dataLabels.offset,(o+g/2)%this.fullAngle):\"donut\"===this.chartType&&(m=v.polarToCartesian(this.centerX,this.centerY,(i.globals.radialSize+this.donutSize)/2+i.config.plotOptions.pie.dataLabels.offset,(o+g/2)%this.fullAngle)),u.add(x);var y=0;if(!this.initialAnim||i.globals.resized||i.globals.dataChanged?this.animBeginArr.push(0):(0===(y=g/this.fullAngle*i.config.chart.animations.speed)&&(y=1),this.animDur=y+this.animDur,this.animBeginArr.push(this.animDur)),this.dynamicAnim&&i.globals.dataChanged?this.animatePaths(x,{size:this.sliceSizes[d],endAngle:h,startAngle:o,prevStartAngle:l,prevEndAngle:c,animateStartingPos:!0,i:d,animBeginArr:this.animBeginArr,shouldSetPrevPaths:!0,dur:i.config.chart.animations.dynamicAnimation.speed}):this.animatePaths(x,{size:this.sliceSizes[d],endAngle:h,startAngle:o,i:d,totalItems:t.length-1,animBeginArr:this.animBeginArr,dur:y}),i.config.plotOptions.pie.expandOnClick&&\"polarArea\"!==this.chartType&&x.node.addEventListener(\"mouseup\",this.pieClicked.bind(this,d)),void 0!==i.globals.selectedDataPoints[0]&&i.globals.selectedDataPoints[0].indexOf(d)>-1&&this.pieClicked(d),i.config.dataLabels.enabled){var w=m.x,k=m.y,A=100*g/this.fullAngle+\"%\";if(0!==g&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabel<t[d]){var C=i.config.dataLabels.formatter;void 0!==C&&(A=C(i.globals.seriesPercent[d][0],{seriesIndex:d,w:i}));var S=i.globals.dataLabels.style.colors[d],L=s.group({class:\"apexcharts-datalabels\"}),M=s.drawText({x:w,y:k,text:A,textAnchor:\"middle\",fontSize:i.config.dataLabels.style.fontSize,fontFamily:i.config.dataLabels.style.fontFamily,fontWeight:i.config.dataLabels.style.fontWeight,foreColor:S});if(L.add(M),i.config.dataLabels.dropShadow.enabled){var P=i.config.dataLabels.dropShadow;a.dropShadow(M,P)}M.node.classList.add(\"apexcharts-pie-label\"),i.config.chart.animations.animate&&!1===i.globals.resized&&(M.node.classList.add(\"apexcharts-pie-label-delay\"),M.node.style.animationDelay=i.config.chart.animations.speed/940+\"s\"),this.sliceLabels.push(L)}}}return n}},{key:\"addListeners\",value:function(t,e){var i=new Mi(this.ctx);t.node.addEventListener(\"mouseenter\",i.pathMouseEnter.bind(this,t)),t.node.addEventListener(\"mouseleave\",i.pathMouseLeave.bind(this,t)),t.node.addEventListener(\"mouseleave\",this.revertDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener(\"mousedown\",i.pathMouseDown.bind(this,t)),this.donutDataLabels.total.showAlways||(t.node.addEventListener(\"mouseenter\",this.printDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener(\"mousedown\",this.printDataLabelsInner.bind(this,t.node,e)))}},{key:\"animatePaths\",value:function(t,e){var i=this.w,a=e.endAngle<e.startAngle?this.fullAngle+e.endAngle-e.startAngle:e.endAngle-e.startAngle,s=a,r=e.startAngle,n=e.startAngle;void 0!==e.prevStartAngle&&void 0!==e.prevEndAngle&&(r=e.prevEndAngle,s=e.prevEndAngle<e.prevStartAngle?this.fullAngle+e.prevEndAngle-e.prevStartAngle:e.prevEndAngle-e.prevStartAngle),e.i===i.config.series.length-1&&(a+n>this.fullAngle?e.endAngle=e.endAngle-(a+n):a+n<this.fullAngle&&(e.endAngle=e.endAngle+(this.fullAngle-(a+n)))),a===this.fullAngle&&(a=this.fullAngle-.01),this.animateArc(t,r,n,a,s,e)}},{key:\"animateArc\",value:function(t,e,i,a,s,r){var n,o=this,l=this.w,h=new y(this.ctx),c=r.size;(isNaN(e)||isNaN(s))&&(e=i,s=a,r.dur=0);var d=a,u=i,g=e<i?this.fullAngle+e-i:e-i;l.globals.dataChanged&&r.shouldSetPrevPaths&&r.prevEndAngle&&(n=o.getPiePath({me:o,startAngle:r.prevStartAngle,angle:r.prevEndAngle<r.prevStartAngle?this.fullAngle+r.prevEndAngle-r.prevStartAngle:r.prevEndAngle-r.prevStartAngle,size:c}),t.attr({d:n})),0!==r.dur?t.animate(r.dur,r.animBeginArr[r.i]).after((function(){\"pie\"!==o.chartType&&\"donut\"!==o.chartType&&\"polarArea\"!==o.chartType||this.animate(l.config.chart.animations.dynamicAnimation.speed).attr({\"stroke-width\":o.strokeWidth}),r.i===l.config.series.length-1&&h.animationCompleted(t)})).during((function(l){d=g+(a-g)*l,r.animateStartingPos&&(d=s+(a-s)*l,u=e-s+(i-(e-s))*l),n=o.getPiePath({me:o,startAngle:u,angle:d,size:c}),t.node.setAttribute(\"data:pathOrig\",n),t.attr({d:n})})):(n=o.getPiePath({me:o,startAngle:u,angle:a,size:c}),r.isTrack||(l.globals.animationEnded=!0),t.node.setAttribute(\"data:pathOrig\",n),t.attr({d:n,\"stroke-width\":o.strokeWidth}))}},{key:\"pieClicked\",value:function(t){var e,i=this.w,a=this,s=a.sliceSizes[t]+(i.config.plotOptions.pie.expandOnClick?4:0),r=i.globals.dom.Paper.findOne(\".apexcharts-\".concat(a.chartType.toLowerCase(),\"-slice-\").concat(t));if(\"true\"!==r.attr(\"data:pieClicked\")){var n=i.globals.dom.baseEl.getElementsByClassName(\"apexcharts-pie-area\");Array.prototype.forEach.call(n,(function(t){t.setAttribute(\"data:pieClicked\",\"false\");var e=t.getAttribute(\"data:pathOrig\");e&&t.setAttribute(\"d\",e)})),i.globals.capturedDataPointIndex=t,r.attr(\"data:pieClicked\",\"true\");var o=parseInt(r.attr(\"data:startAngle\"),10),l=parseInt(r.attr(\"data:angle\"),10);e=a.getPiePath({me:a,startAngle:o,angle:l,size:s}),360!==l&&r.plot(e)}else{r.attr({\"data:pieClicked\":\"false\"}),this.revertDataLabelsInner(r.node,this.donutDataLabels);var h=r.attr(\"data:pathOrig\");r.attr({d:h})}}},{key:\"getChangedPath\",value:function(t,e){var i=\"\";return this.dynamicAnim&&this.w.globals.dataChanged&&(i=this.getPiePath({me:this,startAngle:t,angle:e-t,size:this.size})),i}},{key:\"getPiePath\",value:function(t){var e,i=t.me,a=t.startAngle,s=t.angle,r=t.size,n=new Mi(this.ctx),o=a,l=Math.PI*(o-90)/180,h=s+a;Math.ceil(h)>=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(h=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(h)>this.fullAngle&&(h-=this.fullAngle);var c=Math.PI*(h-90)/180,d=i.centerX+r*Math.cos(l),u=i.centerY+r*Math.sin(l),g=i.centerX+r*Math.cos(c),p=i.centerY+r*Math.sin(c),f=v.polarToCartesian(i.centerX,i.centerY,i.donutSize,h),x=v.polarToCartesian(i.centerX,i.centerY,i.donutSize,o),b=s>180?1:0,m=[\"M\",d,u,\"A\",r,r,0,b,1,g,p];return e=\"donut\"===i.chartType?[].concat(m,[\"L\",f.x,f.y,\"A\",i.donutSize,i.donutSize,0,b,0,x.x,x.y,\"L\",d,u,\"z\"]).join(\" \"):\"pie\"===i.chartType||\"polarArea\"===i.chartType?[].concat(m,[\"L\",i.centerX,i.centerY,\"L\",d,u]).join(\" \"):[].concat(m).join(\" \"),n.roundPathCorners(e,2*this.strokeWidth)}},{key:\"drawPolarElements\",value:function(t){var e=this.w,i=new ta(this.ctx),a=new Mi(this.ctx),s=new Ra(this.ctx),r=a.group(),n=a.group(),o=i.niceScale(0,Math.ceil(this.maxY),0),l=o.result.reverse(),h=o.result.length;this.maxY=o.niceMax;for(var c=e.globals.radialSize,d=c/(h-1),u=0;u<h-1;u++){var g=a.drawCircle(c);if(g.attr({cx:this.centerX,cy:this.centerY,fill:\"none\",\"stroke-width\":e.config.plotOptions.polarArea.rings.strokeWidth,stroke:e.config.plotOptions.polarArea.rings.strokeColor}),e.config.yaxis[0].show){var p=s.drawYAxisTexts(this.centerX,this.centerY-c+parseInt(e.config.yaxis[0].labels.style.fontSize,10)/2,u,l[u]);n.add(p)}r.add(g),c-=d}this.drawSpokes(t),t.add(r),t.add(n)}},{key:\"renderInnerDataLabels\",value:function(t,e,i){var a=this.w,s=new Mi(this.ctx),r=e.total.show;t.node.innerHTML=\"\",t.node.style.opacity=i.opacity;var n,o,l=i.centerX,h=this.donutDataLabels.total.label?i.centerY:i.centerY-i.centerY/6;n=void 0===e.name.color?a.globals.colors[0]:e.name.color;var c=e.name.fontSize,d=e.name.fontFamily,u=e.name.fontWeight;o=void 0===e.value.color?a.config.chart.foreColor:e.value.color;var g=e.value.formatter,p=\"\",f=\"\";if(r?(n=e.total.color,c=e.total.fontSize,d=e.total.fontFamily,u=e.total.fontWeight,f=this.donutDataLabels.total.label?e.total.label:\"\",p=e.total.formatter(a)):1===a.globals.series.length&&(p=g(a.globals.series[0],a),f=a.globals.seriesNames[0]),f&&(f=e.name.formatter(f,e.total.show,a)),e.name.show){var x=s.drawText({x:l,y:h+parseFloat(e.name.offsetY),text:f,textAnchor:\"middle\",foreColor:n,fontSize:c,fontWeight:u,fontFamily:d});x.node.classList.add(\"apexcharts-datalabel-label\"),t.add(x)}if(e.value.show){var b=e.name.show?parseFloat(e.value.offsetY)+16:e.value.offsetY,m=s.drawText({x:l,y:h+b,text:p,textAnchor:\"middle\",foreColor:o,fontWeight:e.value.fontWeight,fontSize:e.value.fontSize,fontFamily:e.value.fontFamily});m.node.classList.add(\"apexcharts-datalabel-value\"),t.add(m)}return t}},{key:\"printInnerLabels\",value:function(t,e,i,a){var s,r=this.w;a?s=void 0===t.name.color?r.globals.colors[parseInt(a.parentNode.getAttribute(\"rel\"),10)-1]:t.name.color:r.globals.series.length>1&&t.total.show&&(s=t.total.color);var n=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabel-label\"),o=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabel-value\");i=(0,t.value.formatter)(i,r),a||\"function\"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=this.donutDataLabels.total.label?t.name.formatter(e,l,r):\"\",null!==n&&(n.textContent=e),null!==o&&(o.textContent=i),null!==n&&(n.style.fill=s)}},{key:\"printDataLabelsInner\",value:function(t,e){var i=this.w,a=t.getAttribute(\"data:value\"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute(\"rel\"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(\".apexcharts-datalabels-group\");null!==r&&(r.style.opacity=1)}},{key:\"drawSpokes\",value:function(t){var e=this,i=this.w,a=new Mi(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],n=360/i.globals.series.length,o=0;o<i.globals.series.length;o++)r.push(v.polarToCartesian(this.centerX,this.centerY,i.globals.radialSize,i.config.plotOptions.pie.startAngle+n*o));r.forEach((function(i,r){var n=a.drawLine(i.x,i.y,e.centerX,e.centerY,Array.isArray(s.connectorColors)?s.connectorColors[r]:s.connectorColors);t.add(n)}))}}},{key:\"revertDataLabelsInner\",value:function(){var t=this.w;if(this.donutDataLabels.show){var e=t.globals.dom.Paper.findOne(\".apexcharts-datalabels-group\"),i=this.renderInnerDataLabels(e,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show});t.globals.dom.Paper.findOne(\".apexcharts-radialbar, .apexcharts-pie\").add(i)}}}]),t}(),Ya=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var a=this.w;this.graphics=new Mi(this.ctx),this.lineColorArr=void 0!==a.globals.stroke.colors?a.globals.stroke.colors:a.globals.colors,this.defaultSize=a.globals.svgHeight<a.globals.svgWidth?a.globals.gridHeight:a.globals.gridWidth,this.isLog=a.config.yaxis[0].logarithmic,this.logBase=a.config.yaxis[0].logBase,this.coreUtils=new Pi(this.ctx),this.maxValue=this.isLog?this.coreUtils.getLogVal(this.logBase,a.globals.maxY,0):a.globals.maxY,this.minValue=this.isLog?this.coreUtils.getLogVal(this.logBase,this.w.globals.minY,0):a.globals.minY,this.polygons=a.config.plotOptions.radar.polygons,this.strokeWidth=a.config.stroke.show?a.config.stroke.width:0,this.size=this.defaultSize/2.1-this.strokeWidth-a.config.chart.dropShadow.blur,a.config.xaxis.labels.show&&(this.size=this.size-a.globals.xAxisLabelsWidth/1.75),void 0!==a.config.plotOptions.radar.size&&(this.size=a.config.plotOptions.radar.size),this.dataRadiusOfPercent=[],this.dataRadius=[],this.angleArr=[],this.yaxisLabelsTextsPos=[]}return s(t,[{key:\"draw\",value:function(t){var e=this,i=this.w,a=new ji(this.ctx),s=[],r=new qi(this.ctx);t.length&&(this.dataPointsLen=t[i.globals.maxValsInArrayIndex].length),this.disAngle=2*Math.PI/this.dataPointsLen;var n=i.globals.gridWidth/2,o=i.globals.gridHeight/2,l=n+i.config.plotOptions.radar.offsetX,h=o+i.config.plotOptions.radar.offsetY,c=this.graphics.group({class:\"apexcharts-radar-series apexcharts-plot-series\",transform:\"translate(\".concat(l||0,\", \").concat(h||0,\")\")}),d=[],g=null,p=null;if(this.yaxisLabels=this.graphics.group({class:\"apexcharts-yaxis\"}),t.forEach((function(t,n){var o=t.length===i.globals.dataPoints,l=e.graphics.group().attr({class:\"apexcharts-series\",\"data:longestSeries\":o,seriesName:v.escapeString(i.globals.seriesNames[n]),rel:n+1,\"data:realIndex\":n});e.dataRadiusOfPercent[n]=[],e.dataRadius[n]=[],e.angleArr[n]=[],t.forEach((function(t,i){var a=Math.abs(e.maxValue-e.minValue);t-=e.minValue,e.isLog&&(t=e.coreUtils.getLogVal(e.logBase,t,0)),e.dataRadiusOfPercent[n][i]=t/a,e.dataRadius[n][i]=e.dataRadiusOfPercent[n][i]*e.size,e.angleArr[n][i]=i*e.disAngle})),d=e.getDataPointsPos(e.dataRadius[n],e.angleArr[n]);var h=e.createPaths(d,{x:0,y:0});g=e.graphics.group({class:\"apexcharts-series-markers-wrap apexcharts-element-hidden\"}),p=e.graphics.group({class:\"apexcharts-datalabels\",\"data:realIndex\":n}),i.globals.delayedElements.push({el:g.node,index:n});var c={i:n,realIndex:n,animationDelay:n,initialSpeed:i.config.chart.animations.speed,dataChangeSpeed:i.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-radar\",shouldClipToGrid:!1,bindEventsOnPaths:!1,stroke:i.globals.stroke.colors[n],strokeLineCap:i.config.stroke.lineCap},f=null;i.globals.previousPaths.length>0&&(f=e.getPreviousPath(n));for(var x=0;x<h.linePathsTo.length;x++){var b=e.graphics.renderPaths(u(u({},c),{},{pathFrom:null===f?h.linePathsFrom[x]:f,pathTo:h.linePathsTo[x],strokeWidth:Array.isArray(e.strokeWidth)?e.strokeWidth[n]:e.strokeWidth,fill:\"none\",drawShadow:!1}));l.add(b);var m=a.fillPath({seriesNumber:n}),y=e.graphics.renderPaths(u(u({},c),{},{pathFrom:null===f?h.areaPathsFrom[x]:f,pathTo:h.areaPathsTo[x],strokeWidth:0,fill:m,drawShadow:!1}));if(i.config.chart.dropShadow.enabled){var w=new Li(e.ctx),k=i.config.chart.dropShadow;w.dropShadow(y,Object.assign({},k,{noUserSpaceOnUse:!0}),n)}l.add(y)}t.forEach((function(t,a){var s=new Vi(e.ctx).getMarkerConfig({cssClass:\"apexcharts-marker\",seriesIndex:n,dataPointIndex:a}),o=e.graphics.drawMarker(d[a].x,d[a].y,s);o.attr(\"rel\",a),o.attr(\"j\",a),o.attr(\"index\",n),o.node.setAttribute(\"default-marker-size\",s.pSize);var h=e.graphics.group({class:\"apexcharts-series-markers\"});h&&h.add(o),g.add(h),l.add(g);var c=i.config.dataLabels;if(c.enabled){var f=c.formatter(i.globals.series[n][a],{seriesIndex:n,dataPointIndex:a,w:i});r.plotDataLabelsText({x:d[a].x,y:d[a].y,text:f,textAnchor:\"middle\",i:n,j:n,parent:p,offsetCorrection:!1,dataLabelsConfig:u({},c)})}l.add(p)})),s.push(l)})),this.drawPolygons({parent:c}),i.config.xaxis.labels.show){var f=this.drawXAxisTexts();c.add(f)}return s.forEach((function(t){c.add(t)})),c.add(this.yaxisLabels),c}},{key:\"drawPolygons\",value:function(t){for(var e=this,i=this.w,a=t.parent,s=new Ra(this.ctx),r=i.globals.yAxisScale[0].result.reverse(),n=r.length,o=[],l=this.size/(n-1),h=0;h<n;h++)o[h]=l*h;o.reverse();var c=[],d=[];o.forEach((function(t,i){var a=v.getPolygonPos(t,e.dataPointsLen),s=\"\";a.forEach((function(t,a){if(0===i){var r=e.graphics.drawLine(t.x,t.y,0,0,Array.isArray(e.polygons.connectorColors)?e.polygons.connectorColors[a]:e.polygons.connectorColors);d.push(r)}0===a&&e.yaxisLabelsTextsPos.push({x:t.x,y:t.y}),s+=t.x+\",\"+t.y+\" \"})),c.push(s)})),c.forEach((function(t,s){var r=e.polygons.strokeColors,n=e.polygons.strokeWidth,o=e.graphics.drawPolygon(t,Array.isArray(r)?r[s]:r,Array.isArray(n)?n[s]:n,i.globals.radarPolygons.fill.colors[s]);a.add(o)})),d.forEach((function(t){a.add(t)})),i.config.yaxis[0].show&&this.yaxisLabelsTextsPos.forEach((function(t,i){var a=s.drawYAxisTexts(t.x,t.y,i,r[i]);e.yaxisLabels.add(a)}))}},{key:\"drawXAxisTexts\",value:function(){var t=this,e=this.w,i=e.config.xaxis.labels,a=this.graphics.group({class:\"apexcharts-xaxis\"}),s=v.getPolygonPos(this.size,this.dataPointsLen);return e.globals.labels.forEach((function(r,n){var o=e.config.xaxis.labels.formatter,l=new qi(t.ctx);if(s[n]){var h=t.getTextPos(s[n],t.size),c=o(r,{seriesIndex:-1,dataPointIndex:n,w:e});l.plotDataLabelsText({x:h.newX,y:h.newY,text:c,textAnchor:h.textAnchor,i:n,j:n,parent:a,className:\"apexcharts-xaxis-label\",color:Array.isArray(i.style.colors)&&i.style.colors[n]?i.style.colors[n]:\"#a8a8a8\",dataLabelsConfig:u({textAnchor:h.textAnchor,dropShadow:{enabled:!1}},i),offsetCorrection:!1}).on(\"click\",(function(i){if(\"function\"==typeof e.config.chart.events.xAxisLabelClick){var a=Object.assign({},e,{labelIndex:n});e.config.chart.events.xAxisLabelClick(i,t.ctx,a)}}))}})),a}},{key:\"createPaths\",value:function(t,e){var i=this,a=[],s=[],r=[],n=[];if(t.length){s=[this.graphics.move(e.x,e.y)],n=[this.graphics.move(e.x,e.y)];var o=this.graphics.move(t[0].x,t[0].y),l=this.graphics.move(t[0].x,t[0].y);t.forEach((function(e,a){o+=i.graphics.line(e.x,e.y),l+=i.graphics.line(e.x,e.y),a===t.length-1&&(o+=\"Z\",l+=\"Z\")})),a.push(o),r.push(l)}return{linePathsFrom:s,linePathsTo:a,areaPathsFrom:n,areaPathsTo:r}}},{key:\"getTextPos\",value:function(t,e){var i=\"middle\",a=t.x,s=t.y;return Math.abs(t.x)>=10?t.x>0?(i=\"start\",a+=10):t.x<0&&(i=\"end\",a-=10):i=\"middle\",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:\"getPreviousPath\",value:function(t){for(var e=this.w,i=null,a=0;a<e.globals.previousPaths.length;a++){var s=e.globals.previousPaths[a];s.paths.length>0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:\"getDataPointsPos\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s<i;s++){var r={};r.x=t[s]*Math.sin(e[s]),r.y=-t[s]*Math.cos(e[s]),a.push(r)}return a}}]),t}(),Ha=function(t){h(r,Ea);var a=n(r);function r(t){var s;i(this,r),(s=a.call(this,t)).ctx=t,s.w=t.w,s.animBeginArr=[0],s.animDur=0;var n=s.w;return s.startAngle=n.config.plotOptions.radialBar.startAngle,s.endAngle=n.config.plotOptions.radialBar.endAngle,s.totalAngle=Math.abs(n.config.plotOptions.radialBar.endAngle-n.config.plotOptions.radialBar.startAngle),s.trackStartAngle=n.config.plotOptions.radialBar.track.startAngle,s.trackEndAngle=n.config.plotOptions.radialBar.track.endAngle,s.barLabels=s.w.config.plotOptions.radialBar.barLabels,s.donutDataLabels=s.w.config.plotOptions.radialBar.dataLabels,s.radialDataLabels=s.donutDataLabels,s.trackStartAngle||(s.trackStartAngle=s.startAngle),s.trackEndAngle||(s.trackEndAngle=s.endAngle),360===s.endAngle&&(s.endAngle=359.99),s.margin=parseInt(n.config.plotOptions.radialBar.track.margin,10),s.onBarLabelClick=s.onBarLabelClick.bind(e(s)),s}return s(r,[{key:\"draw\",value:function(t){var e=this.w,i=new Mi(this.ctx),a=i.group({class:\"apexcharts-radialbar\"});if(e.globals.noData)return a;var s=i.group(),r=this.defaultSize/2,n=e.globals.gridWidth/2,o=this.defaultSize/2.05;e.config.chart.sparkline.enabled||(o=o-e.config.stroke.width-e.config.chart.dropShadow.blur);var l=e.globals.fill.colors;if(e.config.plotOptions.radialBar.track.show){var h=this.drawTracks({size:o,centerX:n,centerY:r,colorArr:l,series:t});s.add(h)}var c=this.drawArcs({size:o,centerX:n,centerY:r,colorArr:l,series:t}),d=360;e.config.plotOptions.radialBar.startAngle<0&&(d=this.totalAngle);var u=(360-d)/360;if(e.globals.radialSize=o-o*u,this.radialDataLabels.value.show){var g=Math.max(this.radialDataLabels.value.offsetY,this.radialDataLabels.name.offsetY);e.globals.radialSize+=g*u}return s.add(c.g),\"front\"===e.config.plotOptions.radialBar.hollow.position&&(c.g.add(c.elHollow),c.dataLabels&&c.g.add(c.dataLabels)),a.add(s),a}},{key:\"drawTracks\",value:function(t){var e=this.w,i=new Mi(this.ctx),a=i.group({class:\"apexcharts-tracks\"}),s=new Li(this.ctx),r=new ji(this.ctx),n=this.getStrokeWidth(t);t.size=t.size-n/2;for(var o=0;o<t.series.length;o++){var l=i.group({class:\"apexcharts-radialbar-track apexcharts-track\"});a.add(l),l.attr({rel:o+1}),t.size=t.size-n-this.margin;var h=e.config.plotOptions.radialBar.track,c=r.fillPath({seriesNumber:0,size:t.size,fillColors:Array.isArray(h.background)?h.background[o]:h.background,solid:!0}),d=this.trackStartAngle,u=this.trackEndAngle;Math.abs(u)+Math.abs(d)>=360&&(u=360-Math.abs(this.startAngle)-.1);var g=i.drawPath({d:\"\",stroke:c,strokeWidth:n*parseInt(h.strokeWidth,10)/100,fill:\"none\",strokeOpacity:h.opacity,classes:\"apexcharts-radialbar-area\"});if(h.dropShadow.enabled){var p=h.dropShadow;s.dropShadow(g,p)}l.add(g),g.attr(\"id\",\"apexcharts-radialbarTrack-\"+o),this.animatePaths(g,{centerX:t.centerX,centerY:t.centerY,endAngle:u,startAngle:d,size:t.size,i:o,totalItems:2,animBeginArr:0,dur:0,isTrack:!0})}return a}},{key:\"drawArcs\",value:function(t){var e=this.w,i=new Mi(this.ctx),a=new ji(this.ctx),s=new Li(this.ctx),r=i.group(),n=this.getStrokeWidth(t);t.size=t.size-n/2;var o=e.config.plotOptions.radialBar.hollow.background,l=t.size-n*t.series.length-this.margin*t.series.length-n*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(o=this.drawHollowImage(t,r,l,o));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:o||\"transparent\"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var u=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(u=0);var g=null;if(this.radialDataLabels.show){var p=e.globals.dom.Paper.findOne(\".apexcharts-datalabels-group\");g=this.renderInnerDataLabels(p,this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:u})}\"back\"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),g&&r.add(g));var f=!1;e.config.plotOptions.radialBar.inverseOrder&&(f=!0);for(var x=f?t.series.length-1:0;f?x>=0:x<t.series.length;f?x--:x++){var b=i.group({class:\"apexcharts-series apexcharts-radial-series\",seriesName:v.escapeString(e.globals.seriesNames[x])});r.add(b),b.attr({rel:x+1,\"data:realIndex\":x}),this.ctx.series.addCollapsedClassToSeries(b,x),t.size=t.size-n-this.margin;var m=a.fillPath({seriesNumber:x,size:t.size,value:t.series[x]}),y=this.startAngle,w=void 0,k=v.negToZero(t.series[x]>100?100:t.series[x])/100,A=Math.round(this.totalAngle*k)+this.startAngle,C=void 0;e.globals.dataChanged&&(w=this.startAngle,C=Math.round(this.totalAngle*v.negToZero(e.globals.previousPaths[x])/100)+w),Math.abs(A)+Math.abs(y)>360&&(A-=.01),Math.abs(C)+Math.abs(w)>360&&(C-=.01);var S=A-y,L=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[x]:e.config.stroke.dashArray,M=i.drawPath({d:\"\",stroke:m,strokeWidth:n,fill:\"none\",fillOpacity:e.config.fill.opacity,classes:\"apexcharts-radialbar-area apexcharts-radialbar-slice-\"+x,strokeDashArray:L});if(Mi.setAttrs(M.node,{\"data:angle\":S,\"data:value\":t.series[x]}),e.config.chart.dropShadow.enabled){var P=e.config.chart.dropShadow;s.dropShadow(M,P,x)}if(s.setSelectionFilter(M,0,x),this.addListeners(M,this.radialDataLabels),b.add(M),M.attr({index:0,j:x}),this.barLabels.enabled){var I=v.polarToCartesian(t.centerX,t.centerY,t.size,y),T=this.barLabels.formatter(e.globals.seriesNames[x],{seriesIndex:x,w:e}),z=[\"apexcharts-radialbar-label\"];this.barLabels.onClick||z.push(\"apexcharts-no-click\");var X=this.barLabels.useSeriesColors?e.globals.colors[x]:e.config.chart.foreColor;X||(X=e.config.chart.foreColor);var R=I.x+this.barLabels.offsetX,E=I.y+this.barLabels.offsetY,Y=i.drawText({x:R,y:E,text:T,textAnchor:\"end\",dominantBaseline:\"middle\",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:X,cssClass:z.join(\" \")});Y.on(\"click\",this.onBarLabelClick),Y.attr({rel:x+1}),0!==y&&Y.attr({\"transform-origin\":\"\".concat(R,\" \").concat(E),transform:\"rotate(\".concat(y,\" 0 0)\")}),b.add(Y)}var H=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(H=e.config.chart.animations.speed),e.globals.dataChanged&&(H=e.config.chart.animations.dynamicAnimation.speed),this.animDur=H/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(M,{centerX:t.centerX,centerY:t.centerY,endAngle:A,startAngle:y,prevEndAngle:C,prevStartAngle:w,size:t.size,i:x,totalItems:2,animBeginArr:this.animBeginArr,dur:H,shouldSetPrevPaths:!0})}return{g:r,elHollow:c,dataLabels:g}}},{key:\"drawHollow\",value:function(t){var e=new Mi(this.ctx).drawCircle(2*t.size);return e.attr({class:\"apexcharts-radialbar-hollow\",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:\"drawHollowImage\",value:function(t,e,i,a){var s=this.w,r=new ji(this.ctx),n=v.randomId(),o=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:o,patternID:\"pattern\".concat(s.globals.cuid).concat(n)}),a=\"url(#pattern\".concat(s.globals.cuid).concat(n,\")\");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(o,(function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(o,(function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:\"getStrokeWidth\",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}},{key:\"onBarLabelClick\",value:function(t){var e=parseInt(t.target.getAttribute(\"rel\"),10)-1,i=this.barLabels.onClick,a=this.w;i&&i(a.globals.seriesNames[e],{w:a,seriesIndex:e})}}]),r}(),Oa=function(t){h(a,Pa);var e=n(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:\"draw\",value:function(t,e){var i=this.w,a=new Mi(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=i.globals.seriesRangeStart,this.seriesRangeEnd=i.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var s=a.group({class:\"apexcharts-rangebar-series apexcharts-plot-series\"}),r=0;r<t.length;r++){var n,o,l,h,c=void 0,d=void 0,g=i.globals.comboCharts?e[r]:r,p=this.barHelpers.getGroupIndex(g).columnGroupIndex,f=a.group({class:\"apexcharts-series\",seriesName:v.escapeString(i.globals.seriesNames[g]),rel:r+1,\"data:realIndex\":g});this.ctx.series.addCollapsedClassToSeries(f,g),t[r].length>0&&(this.visibleI=this.visibleI+1);var x=0,b=0,m=0;this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[g][0],m=g);var y=this.barHelpers.initialPositions(g);d=y.y,h=y.zeroW,c=y.x,b=y.barWidth,x=y.barHeight,n=y.xDivision,o=y.yDivision,l=y.zeroH;for(var w=a.group({class:\"apexcharts-datalabels\",\"data:realIndex\":g}),k=a.group({class:\"apexcharts-rangebar-goals-markers\"}),A=0;A<i.globals.dataPoints;A++){var C=this.barHelpers.getStrokeWidth(r,A,g),S=this.seriesRangeStart[r][A],L=this.seriesRangeEnd[r][A],M=null,P=null,I=null,T={x:c,y:d,strokeWidth:C,elSeries:f},z=this.seriesLen;if(i.config.plotOptions.bar.rangeBarGroupRows&&(z=1),void 0===i.config.series[r].data[A])break;if(this.isHorizontal){I=d+x*this.visibleI;var X=(o-x*z)/2;if(i.config.series[r].data[A].x){var R=this.detectOverlappingBars({i:r,j:A,barYPosition:I,srty:X,barHeight:x,yDivision:o,initPositions:y});x=R.barHeight,I=R.barYPosition}b=(M=this.drawRangeBarPaths(u({indexes:{i:r,j:A,realIndex:g},barHeight:x,barYPosition:I,zeroW:h,yDivision:o,y1:S,y2:L},T))).barWidth}else{i.globals.isXNumeric&&(c=(i.globals.seriesX[r][A]-i.globals.minX)/this.xRatio-b/2),P=c+b*this.visibleI;var E=(n-b*z)/2;if(i.config.series[r].data[A].x){var Y=this.detectOverlappingBars({i:r,j:A,barXPosition:P,srtx:E,barWidth:b,xDivision:n,initPositions:y});b=Y.barWidth,P=Y.barXPosition}x=(M=this.drawRangeColumnPaths(u({indexes:{i:r,j:A,realIndex:g,translationsIndex:m},barWidth:b,barXPosition:P,zeroH:l,xDivision:n},T))).barHeight}var H=this.barHelpers.drawGoalLine({barXPosition:M.barXPosition,barYPosition:I,goalX:M.goalX,goalY:M.goalY,barHeight:x,barWidth:b});H&&k.add(H),d=M.y,c=M.x;var O=this.barHelpers.getPathFillColor(t,r,A,g);this.renderSeries({realIndex:g,pathFill:O.color,lineFill:O.useRangeColor?O.color:i.globals.stroke.colors[g],j:A,i:r,x:c,y:d,y1:S,y2:L,pathFrom:M.pathFrom,pathTo:M.pathTo,strokeWidth:C,elSeries:f,series:t,barHeight:x,barWidth:b,barXPosition:P,barYPosition:I,columnGroupIndex:p,elDataLabelsWrap:w,elGoalsMarkers:k,visibleSeries:this.visibleI,type:\"rangebar\"})}s.add(f)}return s}},{key:\"detectOverlappingBars\",value:function(t){var e=t.i,i=t.j,a=t.barYPosition,s=t.barXPosition,r=t.srty,n=t.srtx,o=t.barHeight,l=t.barWidth,h=t.yDivision,c=t.xDivision,d=t.initPositions,u=this.w,g=[],p=u.config.series[e].data[i].rangeName,f=u.config.series[e].data[i].x,x=Array.isArray(f)?f.join(\" \"):f,b=u.globals.labels.map((function(t){return Array.isArray(t)?t.join(\" \"):t})).indexOf(x),m=u.globals.seriesRange[e].findIndex((function(t){return t.x===x&&t.overlaps.length>0}));return this.isHorizontal?(a=u.config.plotOptions.bar.rangeBarGroupRows?r+h*b:r+o*this.visibleI+h*b,m>-1&&!u.config.plotOptions.bar.rangeBarOverlap&&(g=u.globals.seriesRange[e][m].overlaps).indexOf(p)>-1&&(a=(o=d.barHeight/g.length)*this.visibleI+h*(100-parseInt(this.barOptions.barHeight,10))/100/2+o*(this.visibleI+g.indexOf(p))+h*b)):(b>-1&&!u.globals.timescaleLabels.length&&(s=u.config.plotOptions.bar.rangeBarGroupRows?n+c*b:n+l*this.visibleI+c*b),m>-1&&!u.config.plotOptions.bar.rangeBarOverlap&&(g=u.globals.seriesRange[e][m].overlaps).indexOf(p)>-1&&(s=(l=d.barWidth/g.length)*this.visibleI+c*(100-parseInt(this.barOptions.barWidth,10))/100/2+l*(this.visibleI+g.indexOf(p))+c*b)),{barYPosition:a,barXPosition:s,barHeight:o,barWidth:l}}},{key:\"drawRangeColumnPaths\",value:function(t){var e=t.indexes,i=t.x,a=t.xDivision,s=t.barWidth,r=t.barXPosition,n=t.zeroH,o=this.w,l=e.i,h=e.j,c=e.realIndex,d=e.translationsIndex,u=this.yRatio[d],g=this.getRangeValue(c,h),p=Math.min(g.start,g.end),f=Math.max(g.start,g.end);void 0===this.series[l][h]||null===this.series[l][h]?p=n:(p=n-p/u,f=n-f/u);var x=Math.abs(f-p),b=this.barHelpers.getColumnPaths({barXPosition:r,barWidth:s,y1:p,y2:f,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:c,i:c,j:h,w:o});if(o.globals.isXNumeric){var m=this.getBarXForNumericXAxis({x:i,j:h,realIndex:c,barWidth:s});i=m.x,r=m.barXPosition}else i+=a;return{pathTo:b.pathTo,pathFrom:b.pathFrom,barHeight:x,x:i,y:g.start<0&&g.end<0?p:f,goalY:this.barHelpers.getGoalValues(\"y\",null,n,l,h,d),barXPosition:r}}},{key:\"preventBarOverflow\",value:function(t){var e=this.w;return t<0&&(t=0),t>e.globals.gridWidth&&(t=e.globals.gridWidth),t}},{key:\"drawRangeBarPaths\",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,n=t.barHeight,o=t.barYPosition,l=t.zeroW,h=this.w,c=e.realIndex,d=e.j,u=this.preventBarOverflow(l+a/this.invertedYRatio),g=this.preventBarOverflow(l+s/this.invertedYRatio),p=this.getRangeValue(c,d),f=Math.abs(g-u),x=this.barHelpers.getBarpaths({barYPosition:o,barHeight:n,x1:u,x2:g,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:c,realIndex:c,j:d,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:x.pathTo,pathFrom:x.pathFrom,barWidth:f,x:p.start<0&&p.end<0?u:g,goalX:this.barHelpers.getGoalValues(\"x\",l,null,c,d),y:i}}},{key:\"getRangeValue\",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),a}(),Fa=function(){function t(e){i(this,t),this.w=e.w,this.lineCtx=e}return s(t,[{key:\"sameValueSeriesFix\",value:function(t,e){var i=this.w;if((\"gradient\"===i.config.fill.type||\"gradient\"===i.config.fill.type[t])&&new Pi(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:\"calculatePoints\",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,n=t.j,o=t.prevY,l=this.w,h=[],c=[],d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;return l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),0===n&&(h.push(d),c.push(v.isNumber(e[r][0])?o+l.config.markers.offsetY:null)),h.push(a+l.config.markers.offsetX),c.push(v.isNumber(e[r][n+1])?s+l.config.markers.offsetY:null),{x:h,y:c}}},{key:\"checkPreviousPaths\",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r<s.globals.previousPaths.length;r++){var n=s.globals.previousPaths[r];(\"line\"===n.type||\"area\"===n.type)&&n.paths.length>0&&parseInt(n.realIndex,10)===parseInt(a,10)&&(\"line\"===n.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):\"area\"===n.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:\"determineFirstPrevY\",value:function(t){var e,i,a,s=t.i,r=t.realIndex,n=t.series,o=t.prevY,l=t.lineYPosition,h=t.translationsIndex,c=this.w,d=c.config.chart.stacked&&!c.globals.comboCharts||c.config.chart.stacked&&c.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||\"bar\"===(null===(e=this.w.config.series[r])||void 0===e?void 0:e.type)||\"column\"===(null===(i=this.w.config.series[r])||void 0===i?void 0:i.type));if(void 0!==(null===(a=n[s])||void 0===a?void 0:a[0]))o=(l=d&&s>0?this.lineCtx.prevSeriesY[s-1][0]:this.lineCtx.zeroY)-n[s][0]/this.lineCtx.yRatio[h]+2*(this.lineCtx.isReversed?n[s][0]/this.lineCtx.yRatio[h]:0);else if(d&&s>0&&void 0===n[s][0])for(var u=s-1;u>=0;u--)if(null!==n[u][0]&&void 0!==n[u][0]){o=l=this.lineCtx.prevSeriesY[u][0];break}return{prevY:o,lineYPosition:l}}}]),t}(),Da=function(t){for(var e,i,a,s,r=function(t){for(var e=[],i=t[0],a=t[1],s=e[0]=Wa(i,a),r=1,n=t.length-1;r<n;r++)i=a,a=t[r+1],e[r]=.5*(s+(s=Wa(i,a)));return e[r]=s,e}(t),n=t.length-1,o=[],l=0;l<n;l++)a=Wa(t[l],t[l+1]),Math.abs(a)<1e-6?r[l]=r[l+1]=0:(s=(e=r[l]/a)*e+(i=r[l+1]/a)*i)>9&&(s=3*a/Math.sqrt(s),r[l]=s*e,r[l+1]=s*i);for(var h=0;h<=n;h++)s=(t[Math.min(n,h+1)][0]-t[Math.max(0,h-1)][0])/(6*(1+r[h]*r[h])),o.push([s||0,r[h]*s||0]);return o},_a=function(t){var e=Da(t),i=t[1],a=t[0],s=[],r=e[1],n=e[0];s.push(a,[a[0]+n[0],a[1]+n[1],i[0]-r[0],i[1]-r[1],i[0],i[1]]);for(var o=2,l=e.length;o<l;o++){var h=t[o],c=e[o];s.push([h[0]-c[0],h[1]-c[1],h[0],h[1]])}return s},Na=function(t,e,i){var a=t.slice(e,i);if(e){if(i-e>1&&a[1].length<6){var s=a[0].length;a[1]=[2*a[0][s-2]-a[0][s-4],2*a[0][s-1]-a[0][s-3]].concat(a[1])}a[0]=a[0].slice(-2)}return a};function Wa(t,e){return(e[1]-t[1])/(e[0]-t[0])}var Ba=function(){function t(e,a,s){i(this,t),this.ctx=e,this.w=e.w,this.xyRatios=a,this.pointsChart=!(\"bubble\"!==this.w.config.chart.type&&\"scatter\"!==this.w.config.chart.type)||s,this.scatter=new Ui(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.lineHelpers=new Fa(this),this.markers=new Vi(this.ctx),this.prevSeriesY=[],this.categoryAxisCorrection=0,this.yaxisIndex=0}return s(t,[{key:\"draw\",value:function(t,e,i,a){var s,r=this.w,n=new Mi(this.ctx),o=r.globals.comboCharts?e:r.config.chart.type,l=n.group({class:\"apexcharts-\".concat(o,\"-series apexcharts-plot-series\")}),h=new Pi(this.ctx,r);this.yRatio=this.xyRatios.yRatio,this.zRatio=this.xyRatios.zRatio,this.xRatio=this.xyRatios.xRatio,this.baseLineY=this.xyRatios.baseLineY,t=h.getLogSeries(t),this.yRatio=h.getLogYRatios(this.yRatio),this.prevSeriesY=[];for(var c=[],d=0;d<t.length;d++){t=this.lineHelpers.sameValueSeriesFix(d,t);var g=r.globals.comboCharts?i[d]:d,p=this.yRatio.length>1?g:0;this._initSerieVariables(t,d,g);var f=[],x=[],b=[],m=r.globals.padHorizontal+this.categoryAxisCorrection;this.ctx.series.addCollapsedClassToSeries(this.elSeries,g),r.globals.isXNumeric&&r.globals.seriesX.length>0&&(m=(r.globals.seriesX[g][0]-r.globals.minX)/this.xRatio),b.push(m);var v,y=m,w=void 0,k=y,A=this.zeroY,C=this.zeroY;A=this.lineHelpers.determineFirstPrevY({i:d,realIndex:g,series:t,prevY:A,lineYPosition:0,translationsIndex:p}).prevY,\"monotoneCubic\"===r.config.stroke.curve&&null===t[d][0]?f.push(null):f.push(A),v=A;\"rangeArea\"===o&&(w=C=this.lineHelpers.determineFirstPrevY({i:d,realIndex:g,series:a,prevY:C,lineYPosition:0,translationsIndex:p}).prevY,x.push(null!==f[0]?C:null));var S=this._calculatePathsFrom({type:o,series:t,i:d,realIndex:g,translationsIndex:p,prevX:k,prevY:A,prevY2:C}),L=[f[0]],M=[x[0]],P={type:o,series:t,realIndex:g,translationsIndex:p,i:d,x:m,y:1,pX:y,pY:v,pathsFrom:S,linePaths:[],areaPaths:[],seriesIndex:i,lineYPosition:0,xArrj:b,yArrj:f,y2Arrj:x,seriesRangeEnd:a},I=this._iterateOverDataPoints(u(u({},P),{},{iterations:\"rangeArea\"===o?t[d].length-1:void 0,isRangeStart:!0}));if(\"rangeArea\"===o){for(var T=this._calculatePathsFrom({series:a,i:d,realIndex:g,prevX:k,prevY:C}),z=this._iterateOverDataPoints(u(u({},P),{},{series:a,xArrj:[m],yArrj:L,y2Arrj:M,pY:w,areaPaths:I.areaPaths,pathsFrom:T,iterations:a[d].length-1,isRangeStart:!1})),X=I.linePaths.length/2,R=0;R<X;R++)I.linePaths[R]=z.linePaths[R+X]+I.linePaths[R];I.linePaths.splice(X),I.pathFromLine=z.pathFromLine+I.pathFromLine}else I.pathFromArea+=\"z\";this._handlePaths({type:o,realIndex:g,i:d,paths:I}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),c.push(this.elSeries)}if(void 0!==(null===(s=r.config.series[0])||void 0===s?void 0:s.zIndex)&&c.sort((function(t,e){return Number(t.node.getAttribute(\"zIndex\"))-Number(e.node.getAttribute(\"zIndex\"))})),r.config.chart.stacked)for(var E=c.length-1;E>=0;E--)l.add(c[E]);else for(var Y=0;Y<c.length;Y++)l.add(c[Y]);return l}},{key:\"_initSerieVariables\",value:function(t,e,i){var a=this.w,s=new Mi(this.ctx);this.xDivision=a.globals.gridWidth/(a.globals.dataPoints-(\"on\"===a.config.xaxis.tickPlacement?1:0)),this.strokeWidth=Array.isArray(a.config.stroke.width)?a.config.stroke.width[i]:a.config.stroke.width;var r=0;if(this.yRatio.length>1&&(this.yaxisIndex=a.globals.seriesYAxisReverseMap[i],r=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[r]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[r]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||\"end\"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:\"apexcharts-series\",zIndex:void 0!==a.config.series[i].zIndex?a.config.series[i].zIndex:i,seriesName:v.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:\"apexcharts-series-markers-wrap\",\"data:realIndex\":i}),a.globals.hasNullValues){var n=this.markers.plotChartMarkers({pointsPos:{x:[0],y:[a.globals.gridHeight+a.globals.markers.largestSize]},seriesIndex:e,j:0,pSize:.1,alwaysDrawMarker:!0,isVirtualPoint:!0});null!==n&&this.elPointsMain.add(n)}this.elDataLabelsWrap=s.group({class:\"apexcharts-datalabels\",\"data:realIndex\":i});var o=t[e].length===a.globals.dataPoints;this.elSeries.attr({\"data:longestSeries\":o,rel:e+1,\"data:realIndex\":i}),this.appendPathFrom=!0}},{key:\"_calculatePathsFrom\",value:function(t){var e,i,a,s,r=t.type,n=t.series,o=t.i,l=t.realIndex,h=t.translationsIndex,c=t.prevX,d=t.prevY,u=t.prevY2,g=this.w,p=new Mi(this.ctx);if(null===n[o][0]){for(var f=0;f<n[o].length;f++)if(null!==n[o][f]){c=this.xDivision*f,d=this.zeroY-n[o][f]/this.yRatio[h],e=p.move(c,d),i=p.move(c,this.areaBottomY);break}}else e=p.move(c,d),\"rangeArea\"===r&&(e=p.move(c,u)+p.line(c,d)),i=p.move(c,this.areaBottomY)+p.line(c,d);if(a=p.move(0,this.areaBottomY)+p.line(0,this.areaBottomY),s=p.move(0,this.areaBottomY)+p.line(0,this.areaBottomY),g.globals.previousPaths.length>0){var x=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=x.pathFromLine,s=x.pathFromArea}return{prevX:c,prevY:d,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:\"_handlePaths\",value:function(t){var e=t.type,i=t.realIndex,a=t.i,s=t.paths,r=this.w,n=new Mi(this.ctx),o=new ji(this.ctx);this.prevSeriesY.push(s.yArrj),r.globals.seriesXvalues[i]=s.xArrj,r.globals.seriesYvalues[i]=s.yArrj;var l=r.config.forecastDataPoints;if(l.count>0&&\"rangeArea\"!==e){var h=r.globals.seriesXvalues[i][r.globals.seriesXvalues[i].length-l.count-1],c=n.drawRect(h,0,r.globals.gridWidth,r.globals.gridHeight,0);r.globals.dom.elForecastMask.appendChild(c.node);var d=n.drawRect(0,0,h,r.globals.gridHeight,0);r.globals.dom.elNonForecastMask.appendChild(d.node)}this.pointsChart||r.globals.delayedElements.push({el:this.elPointsMain.node,index:i});var g={i:a,realIndex:i,animationDelay:a,initialSpeed:r.config.chart.animations.speed,dataChangeSpeed:r.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-\".concat(e)};if(\"area\"===e)for(var p=o.fillPath({seriesNumber:i}),f=0;f<s.areaPaths.length;f++){var x=n.renderPaths(u(u({},g),{},{pathFrom:s.pathFromArea,pathTo:s.areaPaths[f],stroke:\"none\",strokeWidth:0,strokeLineCap:null,fill:p}));this.elSeries.add(x)}if(r.config.stroke.show&&!this.pointsChart){var b=null;if(\"line\"===e)b=o.fillPath({seriesNumber:i,i:a});else if(\"solid\"===r.config.stroke.fill.type)b=r.globals.stroke.colors[i];else{var m=r.config.fill;r.config.fill=r.config.stroke.fill,b=o.fillPath({seriesNumber:i,i:a}),r.config.fill=m}for(var v=0;v<s.linePaths.length;v++){var y=b;\"rangeArea\"===e&&(y=o.fillPath({seriesNumber:i}));var w=u(u({},g),{},{pathFrom:s.pathFromLine,pathTo:s.linePaths[v],stroke:b,strokeWidth:this.strokeWidth,strokeLineCap:r.config.stroke.lineCap,fill:\"rangeArea\"===e?y:\"none\"}),k=n.renderPaths(w);if(this.elSeries.add(k),k.attr(\"fill-rule\",\"evenodd\"),l.count>0&&\"rangeArea\"!==e){var A=n.renderPaths(w);A.node.setAttribute(\"stroke-dasharray\",l.dashArray),l.strokeWidth&&A.node.setAttribute(\"stroke-width\",l.strokeWidth),this.elSeries.add(A),A.attr(\"clip-path\",\"url(#forecastMask\".concat(r.globals.cuid,\")\")),k.attr(\"clip-path\",\"url(#nonForecastMask\".concat(r.globals.cuid,\")\"))}}}}},{key:\"_iterateOverDataPoints\",value:function(t){var e,i,a=this,s=t.type,r=t.series,n=t.iterations,o=t.realIndex,l=t.translationsIndex,h=t.i,c=t.x,d=t.y,u=t.pX,g=t.pY,p=t.pathsFrom,f=t.linePaths,x=t.areaPaths,b=t.seriesIndex,m=t.lineYPosition,y=t.xArrj,w=t.yArrj,k=t.y2Arrj,A=t.isRangeStart,C=t.seriesRangeEnd,S=this.w,L=new Mi(this.ctx),M=this.yRatio,P=p.prevY,I=p.linePath,T=p.areaPath,z=p.pathFromLine,X=p.pathFromArea,R=v.isNumber(S.globals.minYArr[o])?S.globals.minYArr[o]:S.globals.minY;n||(n=S.globals.dataPoints>1?S.globals.dataPoints-1:S.globals.dataPoints);var E=function(t,e){return e-t/M[l]+2*(a.isReversed?t/M[l]:0)},Y=d,H=S.config.chart.stacked&&!S.globals.comboCharts||S.config.chart.stacked&&S.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||\"bar\"===(null===(e=this.w.config.series[o])||void 0===e?void 0:e.type)||\"column\"===(null===(i=this.w.config.series[o])||void 0===i?void 0:i.type)),O=S.config.stroke.curve;Array.isArray(O)&&(O=Array.isArray(b)?O[b[h]]:O[h]);for(var F,D=0,_=0;_<n&&0!==r[h].length;_++){var N=void 0===r[h][_+1]||null===r[h][_+1];if(S.globals.isXNumeric){var W=S.globals.seriesX[o][_+1];void 0===S.globals.seriesX[o][_+1]&&(W=S.globals.seriesX[o][n-1]),c=(W-S.globals.minX)/this.xRatio}else c+=this.xDivision;if(H)if(h>0&&S.globals.collapsedSeries.length<S.config.series.length-1){m=this.prevSeriesY[function(t){for(var e=t;e>0;e--){if(!(S.globals.collapsedSeriesIndices.indexOf((null==b?void 0:b[e])||e)>-1))return e;e--}return 0}(h-1)][_+1]}else m=this.zeroY;else m=this.zeroY;N?d=E(R,m):(d=E(r[h][_+1],m),\"rangeArea\"===s&&(Y=E(C[h][_+1],m))),y.push(null===r[h][_+1]?null:c),!N||\"smooth\"!==S.config.stroke.curve&&\"monotoneCubic\"!==S.config.stroke.curve?(w.push(d),k.push(Y)):(w.push(null),k.push(null));var B=this.lineHelpers.calculatePoints({series:r,x:c,y:d,realIndex:o,i:h,j:_,prevY:P}),G=this._createPaths({type:s,series:r,i:h,realIndex:o,j:_,x:c,y:d,y2:Y,xArrj:y,yArrj:w,y2Arrj:k,pX:u,pY:g,pathState:D,segmentStartX:F,linePath:I,areaPath:T,linePaths:f,areaPaths:x,curve:O,isRangeStart:A});x=G.areaPaths,f=G.linePaths,u=G.pX,g=G.pY,D=G.pathState,F=G.segmentStartX,T=G.areaPath,I=G.linePath,!this.appendPathFrom||S.globals.hasNullValues||\"monotoneCubic\"===O&&\"rangeArea\"===s||(z+=L.line(c,this.areaBottomY),X+=L.line(c,this.areaBottomY)),this.handleNullDataPoints(r,B,h,_,o),this._handleMarkersAndLabels({type:s,pointsPos:B,i:h,j:_,realIndex:o,isRangeStart:A})}return{yArrj:w,xArrj:y,pathFromArea:X,areaPaths:x,pathFromLine:z,linePaths:f,linePath:I,areaPath:T}}},{key:\"_handleMarkersAndLabels\",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,n=t.realIndex,o=this.w,l=new qi(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:n,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{o.globals.series[s].length>1&&this.elPointsMain.node.classList.add(\"apexcharts-element-hidden\");var h=this.markers.plotChartMarkers({pointsPos:i,seriesIndex:n,j:r+1});null!==h&&this.elPointsMain.add(h)}var c=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:n,j:r+1});null!==c&&this.elDataLabelsWrap.add(c)}},{key:\"_createPaths\",value:function(t){var e=t.type,i=t.series,a=t.i;t.realIndex;var s,r=t.j,n=t.x,o=t.y,l=t.xArrj,h=t.yArrj,c=t.y2,d=t.y2Arrj,u=t.pX,g=t.pY,p=t.pathState,f=t.segmentStartX,x=t.linePath,b=t.areaPath,m=t.linePaths,v=t.areaPaths,y=t.curve,w=t.isRangeStart,k=new Mi(this.ctx),A=this.areaBottomY,C=\"rangeArea\"===e,S=\"rangeArea\"===e&&w;switch(y){case\"monotoneCubic\":var L=w?h:d;switch(p){case 0:if(null===L[r+1])break;p=1;case 1:if(!(C?l.length===i[a].length:r===i[a].length-2))break;case 2:var M=w?l:l.slice().reverse(),P=w?L:L.slice().reverse(),I=(s=P,M.map((function(t,e){return[t,s[e]]})).filter((function(t){return null!==t[1]}))),T=I.length>1?_a(I):I,z=[];C&&(S?v=I:z=v.reverse());var X=0,R=0;if(function(t,e){for(var i=function(t){var e=[],i=0;return t.forEach((function(t){null!==t?i++:i>0&&(e.push(i),i=0)})),i>0&&e.push(i),e}(t),a=[],s=0,r=0;s<i.length;r+=i[s++])a[s]=Na(e,r,r+i[s]);return a}(P,T).forEach((function(t){X++;var e=function(t){for(var e=\"\",i=0;i<t.length;i++){var a=t[i],s=a.length;s>4?(e+=\"C\".concat(a[0],\", \").concat(a[1]),e+=\", \".concat(a[2],\", \").concat(a[3]),e+=\", \".concat(a[4],\", \").concat(a[5])):s>2&&(e+=\"S\".concat(a[0],\", \").concat(a[1]),e+=\", \".concat(a[2],\", \").concat(a[3]))}return e}(t),i=R,a=(R+=t.length)-1;S?x=k.move(I[i][0],I[i][1])+e:C?x=k.move(z[i][0],z[i][1])+k.line(I[i][0],I[i][1])+e+k.line(z[a][0],z[a][1]):(x=k.move(I[i][0],I[i][1])+e,b=x+k.line(I[a][0],A)+k.line(I[i][0],A)+\"z\",v.push(b)),m.push(x)})),C&&X>1&&!S){var E=m.slice(X).reverse();m.splice(X),E.forEach((function(t){return m.push(t)}))}p=0}break;case\"smooth\":var Y=.35*(n-u);if(null===i[a][r])p=0;else switch(p){case 0:if(f=u,x=S?k.move(u,d[r])+k.line(u,g):k.move(u,g),b=k.move(u,g),null===i[a][r+1]||void 0===i[a][r+1]){m.push(x),v.push(b);break}if(p=1,r<i[a].length-2){var H=k.curve(u+Y,g,n-Y,o,n,o);x+=H,b+=H;break}case 1:if(null===i[a][r+1])x+=S?k.line(u,c):k.move(u,g),b+=k.line(u,A)+k.line(f,A)+\"z\",m.push(x),v.push(b),p=-1;else{var O=k.curve(u+Y,g,n-Y,o,n,o);x+=O,b+=O,r>=i[a].length-2&&(S&&(x+=k.curve(n,o,n,o,n,c)+k.move(n,c)),b+=k.curve(n,o,n,o,n,A)+k.line(f,A)+\"z\",m.push(x),v.push(b),p=-1)}}u=n,g=o;break;default:var F=function(t,e,i){var a=[];switch(t){case\"stepline\":a=k.line(e,null,\"H\")+k.line(null,i,\"V\");break;case\"linestep\":a=k.line(null,i,\"V\")+k.line(e,null,\"H\");break;case\"straight\":a=k.line(e,i)}return a};if(null===i[a][r])p=0;else switch(p){case 0:if(f=u,x=S?k.move(u,d[r])+k.line(u,g):k.move(u,g),b=k.move(u,g),null===i[a][r+1]||void 0===i[a][r+1]){m.push(x),v.push(b);break}if(p=1,r<i[a].length-2){var D=F(y,n,o);x+=D,b+=D;break}case 1:if(null===i[a][r+1])x+=S?k.line(u,c):k.move(u,g),b+=k.line(u,A)+k.line(f,A)+\"z\",m.push(x),v.push(b),p=-1;else{var _=F(y,n,o);x+=_,b+=_,r>=i[a].length-2&&(S&&(x+=k.line(n,c)),b+=k.line(n,A)+k.line(f,A)+\"z\",m.push(x),v.push(b),p=-1)}}u=n,g=o}return{linePaths:m,areaPaths:v,pX:u,pY:g,pathState:p,segmentStartX:f,linePath:x,areaPath:b}}},{key:\"handleNullDataPoints\",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var n=this.strokeWidth-r.config.markers.strokeWidth/2;n>0||(n=0);var o=this.markers.plotChartMarkers({pointsPos:e,seriesIndex:s,j:a+1,pSize:n,alwaysDrawMarker:!0});null!==o&&this.elPointsMain.add(o)}}}]),t}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,n=r(t)/this.height,o=r(t)/this.width;if(this.width>=this.height)for(e=0;e<t.length;e++)i.push([a,s,a+n,s+t[e]/n]),s+=t[e]/n;else for(e=0;e<t.length;e++)i.push([a,s,a+t[e]/o,s+o]),a+=t[e]/o;return i},this.cutArea=function(e){var i;if(this.width>=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,n=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,n)}return i}}function e(e,a,s,n,o){n=void 0===n?0:n,o=void 0===o?0:o;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i<t.length;i++)a[i]=t[i]*s;return a}(e,a*s),[],new t(n,o,a,s),[]);return function(t){var e,i,a=[];for(e=0;e<t.length;e++)for(i=0;i<t[e].length;i++)a.push(t[e][i]);return a}(l)}function i(t,e,s,n){var o,l,h;if(0!==t.length)return o=s.shortestEdge(),function(t,e,i){var s;if(0===t.length)return!0;(s=t.slice()).push(e);var r=a(t,i),n=a(s,i);return r>=n}(e,l=t[0],o)?(e.push(l),i(t.slice(1),e,s,n)):(h=s.cutArea(r(e),n),n.push(s.getCoordinates(e)),i(t,[],h,n)),n;n.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;e<t.length;e++)i+=t[e];return i}function n(t){var e,i=0;if(s(t[0]))for(e=0;e<t.length;e++)i+=n(t[e]);else i=r(t);return i}return function t(i,a,r,o,l){o=void 0===o?0:o,l=void 0===l?0:l;var h,c,d=[],u=[];if(s(i[0])){for(c=0;c<i.length;c++)d[c]=n(i[c]);for(h=e(d,a,r,o,l),c=0;c<i.length;c++)u.push(t(i[c],h[c][2]-h[c][0],h[c][3]-h[c][1],h[c][0],h[c][1]))}else u=e(i,a,r,o,l);return u}}();var Ga=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w,this.strokeWidth=this.w.config.stroke.width,this.helpers=new za(e),this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.labels=[]}return s(t,[{key:\"draw\",value:function(t){var e=this,i=this.w,a=new Mi(this.ctx),s=new ji(this.ctx),r=a.group({class:\"apexcharts-treemap\"});if(i.globals.noData)return r;var n=[];return t.forEach((function(t){var e=t.map((function(t){return Math.abs(t)}));n.push(e)})),this.negRange=this.helpers.checkColorRange(),i.config.series.forEach((function(t,i){t.data.forEach((function(t){Array.isArray(e.labels[i])||(e.labels[i]=[]),e.labels[i].push(t.x)}))})),window.TreemapSquared.generate(n,i.globals.gridWidth,i.globals.gridHeight).forEach((function(n,o){var l=a.group({class:\"apexcharts-series apexcharts-treemap-series\",seriesName:v.escapeString(i.globals.seriesNames[o]),rel:o+1,\"data:realIndex\":o});if(i.config.chart.dropShadow.enabled){var h=i.config.chart.dropShadow;new Li(e.ctx).dropShadow(r,h,o)}var c=a.group({class:\"apexcharts-data-labels\"}),d={xMin:1/0,yMin:1/0,xMax:-1/0,yMax:-1/0};n.forEach((function(r,n){var h=r[0],c=r[1],u=r[2],g=r[3];d.xMin=Math.min(d.xMin,h),d.yMin=Math.min(d.yMin,c),d.xMax=Math.max(d.xMax,u),d.yMax=Math.max(d.yMax,g);var p=e.helpers.getShadeColor(i.config.chart.type,o,n,e.negRange),f=p.color,x=s.fillPath({color:f,seriesNumber:o,dataPointIndex:n}),b=a.drawRect(h,c,u-h,g-c,i.config.plotOptions.treemap.borderRadius,\"#fff\",1,e.strokeWidth,i.config.plotOptions.treemap.useFillColorAsStroke?f:i.globals.stroke.colors[o]);b.attr({cx:h,cy:c,index:o,i:o,j:n,width:u-h,height:g-c,fill:x}),b.node.classList.add(\"apexcharts-treemap-rect\"),e.helpers.addListeners(b);var m={x:h+(u-h)/2,y:c+(g-c)/2,width:0,height:0},v={x:h,y:c,width:u-h,height:g-c};if(i.config.chart.animations.enabled&&!i.globals.dataChanged){var y=1;i.globals.resized||(y=i.config.chart.animations.speed),e.animateTreemap(b,m,v,y)}if(i.globals.dataChanged){var w=1;e.dynamicAnim.enabled&&i.globals.shouldAnimate&&(w=e.dynamicAnim.speed,i.globals.previousPaths[o]&&i.globals.previousPaths[o][n]&&i.globals.previousPaths[o][n].rect&&(m=i.globals.previousPaths[o][n].rect),e.animateTreemap(b,m,v,w))}var k=e.getFontSize(r),A=i.config.dataLabels.formatter(e.labels[o][n],{value:i.globals.series[o][n],seriesIndex:o,dataPointIndex:n,w:i});\"truncate\"===i.config.plotOptions.treemap.dataLabels.format&&(k=parseInt(i.config.dataLabels.style.fontSize,10),A=e.truncateLabels(A,k,h,c,u,g));var C=null;i.globals.series[o][n]&&(C=e.helpers.calculateDataLabels({text:A,x:(h+u)/2,y:(c+g)/2+e.strokeWidth/2+k/3,i:o,j:n,colorProps:p,fontSize:k,series:t})),i.config.dataLabels.enabled&&C&&e.rotateToFitLabel(C,k,A,h,c,u,g),l.add(b),null!==C&&l.add(C)}));var u=i.config.plotOptions.treemap.seriesTitle;if(i.config.series.length>1&&u&&u.show){var g=i.config.series[o].name||\"\";if(g&&d.xMin<1/0&&d.yMin<1/0){var p=u.offsetX,f=u.offsetY,x=u.borderColor,b=u.borderWidth,m=u.borderRadius,y=u.style,w=y.color||i.config.chart.foreColor,k={left:y.padding.left,right:y.padding.right,top:y.padding.top,bottom:y.padding.bottom},A=a.getTextRects(g,y.fontSize,y.fontFamily),C=A.width+k.left+k.right,S=A.height+k.top+k.bottom,L=d.xMin+(p||0),M=d.yMin+(f||0),P=a.drawRect(L,M,C,S,m,y.background,1,b,x),I=a.drawText({x:L+k.left,y:M+k.top+.75*A.height,text:g,fontSize:y.fontSize,fontFamily:y.fontFamily,fontWeight:y.fontWeight,foreColor:w,cssClass:y.cssClass||\"\"});l.add(P),l.add(I)}}l.add(c),r.add(l)})),r}},{key:\"getFontSize\",value:function(t){var e=this.w;var i=function t(e){var i,a=0;if(Array.isArray(e[0]))for(i=0;i<e.length;i++)a+=t(e[i]);else for(i=0;i<e.length;i++)a+=e[i].length;return a}(this.labels)/function t(e){var i,a=0;if(Array.isArray(e[0]))for(i=0;i<e.length;i++)a+=t(e[i]);else for(i=0;i<e.length;i++)a+=1;return a}(this.labels);return function(t,a){var s=t*a,r=Math.pow(s,.5);return Math.min(r/i,parseInt(e.config.dataLabels.style.fontSize,10))}(t[2]-t[0],t[3]-t[1])}},{key:\"rotateToFitLabel\",value:function(t,e,i,a,s,r,n){var o=new Mi(this.ctx),l=o.getTextRects(i,e);if(l.width+this.w.config.stroke.width+5>r-a&&l.width<=n-s){var h=o.rotateAroundCenter(t.node);t.node.setAttribute(\"transform\",\"rotate(-90 \".concat(h.x,\" \").concat(h.y,\") translate(\").concat(l.height/3,\")\"))}}},{key:\"truncateLabels\",value:function(t,e,i,a,s,r){var n=new Mi(this.ctx),o=n.getTextRects(t,e).width+this.w.config.stroke.width+5>s-i&&r-a>s-i?r-a:s-i,l=n.getTextBasedOnMaxWidth({text:t,maxWidth:o,fontSize:e});return t.length!==l.length&&o/e<5?\"\":l}},{key:\"animateTreemap\",value:function(t,e,i,a){var s=new y(this.ctx);s.animateRect(t,e,i,a,(function(){s.animationCompleted(t)}))}}]),t}(),ja=86400,Va=10/ja,Ua=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return s(t,[{key:\"calculateTimeScaleTicks\",value:function(t,e){var i=this,a=this.w;if(a.globals.allSeriesCollapsed)return a.globals.labels=[],a.globals.timescaleLabels=[],[];var s=new zi(this.ctx),r=(e-t)/864e5;this.determineInterval(r),a.globals.disableZoomIn=!1,a.globals.disableZoomOut=!1,r<Va?a.globals.disableZoomIn=!0:r>5e4&&(a.globals.disableZoomOut=!0);var n=s.getTimeUnitsfromTimestamp(t,e,this.utc),o=a.globals.gridWidth/r,l=o/24,h=l/60,c=h/60,d=Math.floor(24*r),g=Math.floor(1440*r),p=Math.floor(r*ja),f=Math.floor(r),x=Math.floor(r/30),b=Math.floor(r/365),m={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},v={firstVal:m,currentMillisecond:m.minMillisecond,currentSecond:m.minSecond,currentMinute:m.minMinute,currentHour:m.minHour,currentMonthDate:m.minDate,currentDate:m.minDate,currentMonth:m.minMonth,currentYear:m.minYear,daysWidthOnXAxis:o,hoursWidthOnXAxis:l,minutesWidthOnXAxis:h,secondsWidthOnXAxis:c,numberOfSeconds:p,numberOfMinutes:g,numberOfHours:d,numberOfDays:f,numberOfMonths:x,numberOfYears:b};switch(this.tickInterval){case\"years\":this.generateYearScale(v);break;case\"months\":case\"half_year\":this.generateMonthScale(v);break;case\"months_days\":case\"months_fortnight\":case\"days\":case\"week_days\":this.generateDayScale(v);break;case\"hours\":this.generateHourScale(v);break;case\"minutes_fives\":case\"minutes\":this.generateMinuteScale(v);break;case\"seconds_tens\":case\"seconds_fives\":case\"seconds\":this.generateSecondScale(v)}var y=this.timeScaleArray.map((function(t){var e={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return\"month\"===t.unit?u(u({},e),{},{day:1,value:t.value+1}):\"day\"===t.unit||\"hour\"===t.unit?u(u({},e),{},{value:t.value}):\"minute\"===t.unit?u(u({},e),{},{value:t.value,minute:t.value}):\"second\"===t.unit?u(u({},e),{},{value:t.value,minute:t.minute,second:t.second}):t}));return y.filter((function(t){var e=1,s=Math.ceil(a.globals.gridWidth/120),r=t.value;void 0!==a.config.xaxis.tickAmount&&(s=a.config.xaxis.tickAmount),y.length>s&&(e=Math.floor(y.length/s));var n=!1,o=!1;switch(i.tickInterval){case\"years\":\"year\"===t.unit&&(n=!0);break;case\"half_year\":e=7,\"year\"===t.unit&&(n=!0);break;case\"months\":e=1,\"year\"===t.unit&&(n=!0);break;case\"months_fortnight\":e=15,\"year\"!==t.unit&&\"month\"!==t.unit||(n=!0),30===r&&(o=!0);break;case\"months_days\":e=10,\"month\"===t.unit&&(n=!0),30===r&&(o=!0);break;case\"week_days\":e=8,\"month\"===t.unit&&(n=!0);break;case\"days\":e=1,\"month\"===t.unit&&(n=!0);break;case\"hours\":\"day\"===t.unit&&(n=!0);break;case\"minutes_fives\":case\"seconds_fives\":r%5!=0&&(o=!0);break;case\"seconds_tens\":r%10!=0&&(o=!0)}if(\"hours\"===i.tickInterval||\"minutes_fives\"===i.tickInterval||\"seconds_tens\"===i.tickInterval||\"seconds_fives\"===i.tickInterval){if(!o)return!0}else if((r%e==0||n)&&!o)return!0}))}},{key:\"recalcDimensionsBasedOnFormat\",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new pa(this.ctx).plotCoords()}},{key:\"determineInterval\",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval=\"years\";break;case t>800:this.tickInterval=\"half_year\";break;case t>180:this.tickInterval=\"months\";break;case t>90:this.tickInterval=\"months_fortnight\";break;case t>60:this.tickInterval=\"months_days\";break;case t>30:this.tickInterval=\"week_days\";break;case t>2:this.tickInterval=\"days\";break;case e>2.4:this.tickInterval=\"hours\";break;case i>15:this.tickInterval=\"minutes_fives\";break;case i>5:this.tickInterval=\"minutes\";break;case i>1:this.tickInterval=\"seconds_tens\";break;case 60*i>20:this.tickInterval=\"seconds_fives\";break;default:this.tickInterval=\"seconds\"}}},{key:\"generateYearScale\",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,n=e.minYear,o=0,l=new zi(this.ctx),h=\"year\";if(e.minDate>1||e.minMonth>0){var c=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);o=(l.determineDaysOfYear(e.minYear)-c+1)*s,n=e.minYear+1,this.timeScaleArray.push({position:o,value:n,unit:h,year:n,month:v.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:o,value:n,unit:h,year:a,month:v.monthMod(i+1)});for(var d=n,u=o,g=0;g<r;g++)d++,u=l.determineDaysOfYear(d-1)*s+u,this.timeScaleArray.push({position:u,value:d,unit:h,year:d,month:1})}},{key:\"generateMonthScale\",value:function(t){var e=t.firstVal,i=t.currentMonthDate,a=t.currentMonth,s=t.currentYear,r=t.daysWidthOnXAxis,n=t.numberOfMonths,o=a,l=0,h=new zi(this.ctx),c=\"month\",d=0;if(e.minDate>1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,o=v.monthMod(a+1);var u=s+d,g=v.monthMod(o),p=o;0===o&&(c=\"year\",p=u,g=1,u+=d+=1),this.timeScaleArray.push({position:l,value:p,unit:c,year:u,month:g})}else this.timeScaleArray.push({position:l,value:o,unit:c,year:s,month:v.monthMod(a)});for(var f=o+1,x=l,b=0,m=1;b<n;b++,m++){0===(f=v.monthMod(f))?(c=\"year\",d+=1):c=\"month\";var y=this._getYear(s,f,d);x=h.determineDaysOfMonths(f,y)*r+x;var w=0===f?y:f;this.timeScaleArray.push({position:x,value:w,unit:c,year:y,month:0===f?1:f}),f++}}},{key:\"generateDayScale\",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.hoursWidthOnXAxis,r=t.numberOfDays,n=new zi(this.ctx),o=\"day\",l=e.minDate+1,h=l,c=function(t,e,i){return t>n.determineDaysOfMonths(e+1,i)?(h=1,o=\"month\",u=e+=1,e):e},d=(24-e.minHour)*s,u=l,g=c(h,i,a);0===e.minHour&&1===e.minDate?(d=0,u=v.monthMod(e.minMonth),o=\"month\",h=e.minDate):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(d=0,l=e.minDate,u=l,g=c(h=l,i,a),1!==u&&(o=\"day\")),this.timeScaleArray.push({position:d,value:u,unit:o,year:this._getYear(a,g,0),month:v.monthMod(g),day:h});for(var p=d,f=0;f<r;f++){o=\"day\",g=c(h+=1,g,this._getYear(a,g,0));var x=this._getYear(a,g,0);p=24*s+p;var b=1===h?v.monthMod(g):h;this.timeScaleArray.push({position:p,value:b,unit:o,year:x,month:v.monthMod(g),day:b})}}},{key:\"generateHourScale\",value:function(t){var e=t.firstVal,i=t.currentDate,a=t.currentMonth,s=t.currentYear,r=t.minutesWidthOnXAxis,n=t.numberOfHours,o=new zi(this.ctx),l=\"hour\",h=function(t,e){return t>o.determineDaysOfMonths(e+1,s)&&(f=1,e+=1),{month:e,date:f}},c=function(t,e){return t>o.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-(e.minMinute+e.minSecond/60),u=d*r,g=e.minHour+1,p=g;60===d&&(u=0,p=g=e.minHour);var f=i;p>=24&&(p=0,l=\"day\",g=f+=1);var x=h(f,a).month;x=c(f,x),g>31&&(g=f=1),this.timeScaleArray.push({position:u,value:g,unit:l,day:f,hour:p,year:s,month:v.monthMod(x)}),p++;for(var b=u,m=0;m<n;m++){if(l=\"hour\",p>=24)p=0,l=\"day\",x=h(f+=1,x).month,x=c(f,x);var y=this._getYear(s,x,0);b=60*r+b;var w=0===p?f:p;this.timeScaleArray.push({position:b,value:w,unit:l,hour:p,day:f,year:y,month:v.monthMod(x)}),p++}}},{key:\"generateMinuteScale\",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,n=t.currentMonth,o=t.currentYear,l=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,c=t.numberOfMinutes,d=a+1,u=r,g=n,p=o,f=s,x=(60-i-e/1e3)*h,b=0;b<c;b++)d>=60&&(d=0,24===(f+=1)&&(f=0)),this.timeScaleArray.push({position:x,value:d,unit:\"minute\",hour:f,minute:d,day:u,year:this._getYear(p,g,0),month:v.monthMod(g)}),x+=l,d++}},{key:\"generateSecondScale\",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,n=t.currentMonth,o=t.currentYear,l=t.secondsWidthOnXAxis,h=t.numberOfSeconds,c=i+1,d=a,u=r,g=n,p=o,f=s,x=(1e3-e)/1e3*l,b=0;b<h;b++)c>=60&&(c=0,++d>=60&&(d=0,24===++f&&(f=0))),this.timeScaleArray.push({position:x,value:c,unit:\"second\",hour:f,minute:d,second:c,day:u,year:this._getYear(p,g,0),month:v.monthMod(g)}),x+=l,c++}},{key:\"createRawDateString\",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+=\"-\"+(\"0\"+t.month.toString()).slice(-2),\"day\"===t.unit?i+=\"day\"===t.unit?\"-\"+(\"0\"+e).slice(-2):\"-01\":i+=\"-\"+(\"0\"+(t.day?t.day:\"1\")).slice(-2),\"hour\"===t.unit?i+=\"hour\"===t.unit?\"T\"+(\"0\"+e).slice(-2):\"T00\":i+=\"T\"+(\"0\"+(t.hour?t.hour:\"0\")).slice(-2),\"minute\"===t.unit?i+=\":\"+(\"0\"+e).slice(-2):i+=\":\"+(t.minute?(\"0\"+t.minute).slice(-2):\"00\"),\"second\"===t.unit?i+=\":\"+(\"0\"+e).slice(-2):i+=\":00\",this.utc&&(i+=\".000Z\"),i}},{key:\"formatDates\",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new zi(e.ctx),r=e.createRawDateString(t,a),n=s.getDate(s.parseDate(r));if(e.utc||(n=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var o=\"dd MMM\",l=i.config.xaxis.labels.datetimeFormatter;\"year\"===t.unit&&(o=l.year),\"month\"===t.unit&&(o=l.month),\"day\"===t.unit&&(o=l.day),\"hour\"===t.unit&&(o=l.hour),\"minute\"===t.unit&&(o=l.minute),\"second\"===t.unit&&(o=l.second),a=s.formatDate(n,o)}else a=s.formatDate(n,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:\"removeOverlappingTS\",value:function(t){var e,i=this,a=new Mi(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,n=t.map((function(n,o){if(o>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return n.position>h+l+10?(r=o,n):null}return n}));return n=n.filter((function(t){return null!==t}))}},{key:\"_getYear\",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),qa=function(){function t(e,a){i(this,t),this.ctx=a,this.w=a.w,this.el=e}return s(t,[{key:\"setupElements\",value:function(){var t=this.w,e=t.globals,i=t.config,a=i.chart.type;e.axisCharts=[\"line\",\"area\",\"bar\",\"rangeBar\",\"rangeArea\",\"candlestick\",\"boxPlot\",\"scatter\",\"bubble\",\"radar\",\"heatmap\",\"treemap\"].includes(a),e.xyCharts=[\"line\",\"area\",\"bar\",\"rangeBar\",\"rangeArea\",\"candlestick\",\"boxPlot\",\"scatter\",\"bubble\"].includes(a),e.isBarHorizontal=[\"bar\",\"rangeBar\",\"boxPlot\"].includes(a)&&i.plotOptions.bar.horizontal,e.chartClass=\".apexcharts\".concat(e.chartID),e.dom.baseEl=this.el,e.dom.elWrap=document.createElement(\"div\"),Mi.setAttrs(e.dom.elWrap,{id:e.chartClass.substring(1),class:\"apexcharts-canvas \".concat(e.chartClass.substring(1))}),this.el.appendChild(e.dom.elWrap),e.dom.Paper=window.SVG().addTo(e.dom.elWrap),e.dom.Paper.attr({class:\"apexcharts-svg\",\"xmlns:data\":\"ApexChartsNS\",transform:\"translate(\".concat(i.chart.offsetX,\", \").concat(i.chart.offsetY,\")\")}),e.dom.Paper.node.style.background=\"dark\"!==i.theme.mode||i.chart.background?\"light\"!==i.theme.mode||i.chart.background?i.chart.background:\"#fff\":\"#424242\",this.setSVGDimensions(),e.dom.elLegendForeign=document.createElementNS(e.SVGNS,\"foreignObject\"),Mi.setAttrs(e.dom.elLegendForeign,{x:0,y:0,width:e.svgWidth,height:e.svgHeight}),e.dom.elLegendWrap=document.createElement(\"div\"),e.dom.elLegendWrap.classList.add(\"apexcharts-legend\"),e.dom.elWrap.appendChild(e.dom.elLegendWrap),e.dom.Paper.node.appendChild(e.dom.elLegendForeign),e.dom.elGraphical=e.dom.Paper.group().attr({class:\"apexcharts-inner apexcharts-graphical\"}),e.dom.elDefs=e.dom.Paper.defs(),e.dom.Paper.add(e.dom.elGraphical),e.dom.elGraphical.add(e.dom.elDefs)}},{key:\"plotChartType\",value:function(t,e){var i=this.w,a=this.ctx,s=i.config,r=i.globals,n={line:{series:[],i:[]},area:{series:[],i:[]},scatter:{series:[],i:[]},bubble:{series:[],i:[]},bar:{series:[],i:[]},candlestick:{series:[],i:[]},boxPlot:{series:[],i:[]},rangeBar:{series:[],i:[]},rangeArea:{series:[],seriesRangeEnd:[],i:[]}},o=s.chart.type||\"line\",l=null,h=0;r.series.forEach((function(e,a){var s=\"column\"===t[a].type?\"bar\":t[a].type||(\"column\"===o?\"bar\":o);n[s]?(\"rangeArea\"===s?(n[s].series.push(r.seriesRangeStart[a]),n[s].seriesRangeEnd.push(r.seriesRangeEnd[a])):n[s].series.push(e),n[s].i.push(a),\"bar\"===s&&(i.globals.columnSeries=n.bar)):[\"heatmap\",\"treemap\",\"pie\",\"donut\",\"polarArea\",\"radialBar\",\"radar\"].includes(s)?l=s:console.warn(\"You have specified an unrecognized series type (\".concat(s,\").\")),o!==s&&\"scatter\"!==s&&h++})),h>0&&(l&&console.warn(\"Chart or series type \".concat(l,\" cannot appear with other chart or series types.\")),n.bar.series.length>0&&s.plotOptions.bar.horizontal&&(h-=n.bar.series.length,n.bar={series:[],i:[]},i.globals.columnSeries={series:[],i:[]},console.warn(\"Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`\"))),r.comboCharts||(r.comboCharts=h>0);var c=new Ba(a,e),d=new Ta(a,e);a.pie=new Ea(a);var u=new Ha(a);a.rangeBar=new Oa(a,e);var g=new Ya(a),p=[];if(r.comboCharts){var x,b,m=new Pi(a);if(n.area.series.length>0)(x=p).push.apply(x,f(m.drawSeriesByGroup(n.area,r.areaGroups,\"area\",c)));if(n.bar.series.length>0)if(s.chart.stacked){var v=new Ia(a,e);p.push(v.draw(n.bar.series,n.bar.i))}else a.bar=new Pa(a,e),p.push(a.bar.draw(n.bar.series,n.bar.i));if(n.rangeArea.series.length>0&&p.push(c.draw(n.rangeArea.series,\"rangeArea\",n.rangeArea.i,n.rangeArea.seriesRangeEnd)),n.line.series.length>0)(b=p).push.apply(b,f(m.drawSeriesByGroup(n.line,r.lineGroups,\"line\",c)));if(n.candlestick.series.length>0&&p.push(d.draw(n.candlestick.series,\"candlestick\",n.candlestick.i)),n.boxPlot.series.length>0&&p.push(d.draw(n.boxPlot.series,\"boxPlot\",n.boxPlot.i)),n.rangeBar.series.length>0&&p.push(a.rangeBar.draw(n.rangeBar.series,n.rangeBar.i)),n.scatter.series.length>0){var y=new Ba(a,e,!0);p.push(y.draw(n.scatter.series,\"scatter\",n.scatter.i))}if(n.bubble.series.length>0){var w=new Ba(a,e,!0);p.push(w.draw(n.bubble.series,\"bubble\",n.bubble.i))}}else switch(s.chart.type){case\"line\":p=c.draw(r.series,\"line\");break;case\"area\":p=c.draw(r.series,\"area\");break;case\"bar\":if(s.chart.stacked)p=new Ia(a,e).draw(r.series);else a.bar=new Pa(a,e),p=a.bar.draw(r.series);break;case\"candlestick\":p=new Ta(a,e).draw(r.series,\"candlestick\");break;case\"boxPlot\":p=new Ta(a,e).draw(r.series,s.chart.type);break;case\"rangeBar\":p=a.rangeBar.draw(r.series);break;case\"rangeArea\":p=c.draw(r.seriesRangeStart,\"rangeArea\",void 0,r.seriesRangeEnd);break;case\"heatmap\":p=new Xa(a,e).draw(r.series);break;case\"treemap\":p=new Ga(a,e).draw(r.series);break;case\"pie\":case\"donut\":case\"polarArea\":p=a.pie.draw(r.series);break;case\"radialBar\":p=u.draw(r.series);break;case\"radar\":p=g.draw(r.series);break;default:p=c.draw(r.series)}return p}},{key:\"setSVGDimensions\",value:function(){var t=this.w,e=t.globals,i=t.config;i.chart.width=i.chart.width||\"100%\",i.chart.height=i.chart.height||\"auto\",e.svgWidth=i.chart.width,e.svgHeight=i.chart.height;var a=v.getDimensions(this.el),s=i.chart.width.toString().split(/[0-9]+/g).pop();\"%\"===s?v.isNumber(a[0])&&(0===a[0].width&&(a=v.getDimensions(this.el.parentNode)),e.svgWidth=a[0]*parseInt(i.chart.width,10)/100):\"px\"!==s&&\"\"!==s||(e.svgWidth=parseInt(i.chart.width,10));var r=String(i.chart.height).toString().split(/[0-9]+/g).pop();if(\"auto\"!==e.svgHeight&&\"\"!==e.svgHeight)if(\"%\"===r){var n=v.getDimensions(this.el.parentNode);e.svgHeight=n[1]*parseInt(i.chart.height,10)/100}else e.svgHeight=parseInt(i.chart.height,10);else e.svgHeight=e.axisCharts?e.svgWidth/1.61:e.svgWidth/1.2;if(e.svgWidth=Math.max(e.svgWidth,0),e.svgHeight=Math.max(e.svgHeight,0),Mi.setAttrs(e.dom.Paper.node,{width:e.svgWidth,height:e.svgHeight}),\"%\"!==r){var o=i.chart.sparkline.enabled?0:e.axisCharts?i.chart.parentHeightOffset:0;e.dom.Paper.node.parentNode.parentNode.style.minHeight=\"\".concat(e.svgHeight+o,\"px\")}e.dom.elWrap.style.width=\"\".concat(e.svgWidth,\"px\"),e.dom.elWrap.style.height=\"\".concat(e.svgHeight,\"px\")}},{key:\"shiftGraphPosition\",value:function(){var t=this.w.globals,e=t.translateY,i=t.translateX;Mi.setAttrs(t.dom.elGraphical.node,{transform:\"translate(\".concat(i,\", \").concat(e,\")\")})}},{key:\"resizeNonAxisCharts\",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,[\"top\",\"bottom\"].includes(t.config.legend.position)&&t.config.legend.show&&!t.config.legend.floating&&(i=new xa(this.ctx).legendHelpers.getLegendDimensions().clwh+7);var s=t.globals.dom.baseEl.querySelector(\".apexcharts-radialbar, .apexcharts-pie\"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var n=v.getBoundingClientRect(s);r=n.bottom;var o=n.bottom-n.top;r=Math.max(2.05*t.globals.radialSize,o)}var l=Math.ceil(r+e.translateY+i+a);e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute(\"height\",l),t.config.chart.height&&String(t.config.chart.height).includes(\"%\")||(e.dom.elWrap.style.height=\"\".concat(l,\"px\"),Mi.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=\"\".concat(l,\"px\"))}},{key:\"coreCalculations\",value:function(){new ea(this.ctx).init()}},{key:\"resetGlobals\",value:function(){var t=this,e=function(){return t.w.config.series.map((function(){return[]}))},i=new Bi,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:\"isMultipleY\",value:function(){return!!(Array.isArray(this.w.config.yaxis)&&this.w.config.yaxis.length>1)&&(this.w.globals.isMultipleYAxis=!0,!0)}},{key:\"xySettings\",value:function(){var t=this.w,e=null;if(t.globals.axisCharts){if(\"back\"===t.config.xaxis.crosshairs.position&&new na(this.ctx).drawXCrosshairs(),\"back\"===t.config.yaxis[0].crosshairs.position&&new na(this.ctx).drawYCrosshairs(),\"datetime\"===t.config.xaxis.type&&void 0===t.config.xaxis.labels.formatter){this.ctx.timeScale=new Ua(this.ctx);var i=[];isFinite(t.globals.minX)&&isFinite(t.globals.maxX)&&!t.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minX,t.globals.maxX):t.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minY,t.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}e=new Pi(this.ctx).getCalculatedRatios()}return e}},{key:\"updateSourceChart\",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:\"setupBrushHandler\",value:function(){var t=this,e=this.ctx,i=this.w;if(i.config.chart.brush.enabled&&\"function\"!=typeof i.config.chart.events.selection){var a=Array.isArray(i.config.chart.brush.targets)?i.config.chart.brush.targets:[i.config.chart.brush.target];a.forEach((function(i){var a=e.constructor.getChartByID(i);a.w.globals.brushSource=t.ctx,\"function\"!=typeof a.w.config.chart.events.zoomed&&(a.w.config.chart.events.zoomed=function(){return t.updateSourceChart(a)}),\"function\"!=typeof a.w.config.chart.events.scrolled&&(a.w.config.chart.events.scrolled=function(){return t.updateSourceChart(a)})})),i.config.chart.events.selection=function(t,i){a.forEach((function(t){e.constructor.getChartByID(t).ctx.updateHelpers._updateOptions({xaxis:{min:i.xaxis.min,max:i.xaxis.max}},!1,!1,!1,!1)}))}}}}]),t}(),Za=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"_updateOptions\",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(n){var o=[e.ctx];s&&(o=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(o=[e.ctx],e.ctx.w.globals.isExecCalled=!1),o.forEach((function(s,l){var h=s.w;if(h.globals.shouldAnimate=a,i||(h.globals.resized=!0,h.globals.dataChanged=!0,a&&s.series.getPreviousPaths()),t&&\"object\"===b(t)&&(s.config=new Wi(t),t=Pi.extendArrayProps(s.config,t,h),s.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,h.config=v.extend(h.config,t),r&&(h.globals.lastXAxis=t.xaxis?v.clone(t.xaxis):[],h.globals.lastYAxis=t.yaxis?v.clone(t.yaxis):[],h.globals.initialConfig=v.extend({},h.config),h.globals.initialSeries=v.clone(h.config.series),t.series))){for(var c=0;c<h.globals.collapsedSeriesIndices.length;c++){var d=h.config.series[h.globals.collapsedSeriesIndices[c]];h.globals.collapsedSeries[c].data=h.globals.axisCharts?d.data.slice():d}for(var u=0;u<h.globals.ancillaryCollapsedSeriesIndices.length;u++){var g=h.config.series[h.globals.ancillaryCollapsedSeriesIndices[u]];h.globals.ancillaryCollapsedSeries[u].data=h.globals.axisCharts?g.data.slice():g}s.series.emptyCollapsedSeries(h.config.series)}return s.update(t).then((function(){l===o.length-1&&n(s)}))}))}))}},{key:\"_updateSeries\",value:function(t,e){var i=this,a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r,n=i.w;return n.globals.shouldAnimate=e,n.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),n.globals.axisCharts?(0===(r=t.map((function(t,e){return i._extendSeries(t,e)}))).length&&(r=[{data:[]}]),n.config.series=r):n.config.series=t.slice(),a&&(n.globals.initialConfig.series=v.clone(n.config.series),n.globals.initialSeries=v.clone(n.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:\"_extendSeries\",value:function(t,e){var i=this.w,a=i.config.series[e];return u(u({},i.config.series[e]),{},{name:t.name?t.name:null==a?void 0:a.name,color:t.color?t.color:null==a?void 0:a.color,type:t.type?t.type:null==a?void 0:a.type,group:t.group?t.group:null==a?void 0:a.group,hidden:void 0!==t.hidden?t.hidden:null==a?void 0:a.hidden,data:t.data?t.data:null==a?void 0:a.data,zIndex:void 0!==t.zIndex?t.zIndex:e})}},{key:\"toggleDataPointSelection\",value:function(t,e){var i=this.w,a=null,s=\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"']\");return i.globals.axisCharts?a=i.globals.dom.Paper.findOne(\"\".concat(s,\" path[j='\").concat(e,\"'], \").concat(s,\" circle[j='\").concat(e,\"'], \").concat(s,\" rect[j='\").concat(e,\"']\")):void 0===e&&(a=i.globals.dom.Paper.findOne(\"\".concat(s,\" path[j='\").concat(t,\"']\")),\"pie\"!==i.config.chart.type&&\"polarArea\"!==i.config.chart.type&&\"donut\"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new Mi(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn(\"toggleDataPointSelection: Element not found\"),null)}},{key:\"forceXAxisUpdate\",value:function(t){var e=this.w;if([\"min\",\"max\"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new Ni(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:\"forceYAxisUpdate\",value:function(t){return t.chart&&t.chart.stacked&&\"100%\"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:\"revertDefaultAxisMinMax\",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)};i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?r(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}]),t}();!function(){function t(){for(var t=arguments.length>0&&arguments[0]!==h?arguments[0]:[],s=arguments.length>1?arguments[1]:h,r=arguments.length>2?arguments[2]:h,n=arguments.length>3?arguments[3]:h,o=arguments.length>4?arguments[4]:h,l=arguments.length>5?arguments[5]:h,h=arguments.length>6?arguments[6]:h,c=t.slice(s,r||h),d=n.slice(o,l||h),u=0,g={pos:[0,0],start:[0,0]},p={pos:[0,0],start:[0,0]};;){if(c[u]=e.call(g,c[u]),d[u]=e.call(p,d[u]),c[u][0]!=d[u][0]||\"M\"==c[u][0]||\"A\"==c[u][0]&&(c[u][4]!=d[u][4]||c[u][5]!=d[u][5])?(Array.prototype.splice.apply(c,[u,1].concat(a.call(g,c[u]))),Array.prototype.splice.apply(d,[u,1].concat(a.call(p,d[u])))):(c[u]=i.call(g,c[u]),d[u]=i.call(p,d[u])),++u==c.length&&u==d.length)break;u==c.length&&c.push([\"C\",g.pos[0],g.pos[1],g.pos[0],g.pos[1],g.pos[0],g.pos[1]]),u==d.length&&d.push([\"C\",p.pos[0],p.pos[1],p.pos[0],p.pos[1],p.pos[0],p.pos[1]])}return{start:c,dest:d}}function e(t){switch(t[0]){case\"z\":case\"Z\":t[0]=\"L\",t[1]=this.start[0],t[2]=this.start[1];break;case\"H\":t[0]=\"L\",t[2]=this.pos[1];break;case\"V\":t[0]=\"L\",t[2]=t[1],t[1]=this.pos[0];break;case\"T\":t[0]=\"Q\",t[3]=t[1],t[4]=t[2],t[1]=this.reflection[1],t[2]=this.reflection[0];break;case\"S\":t[0]=\"C\",t[6]=t[4],t[5]=t[3],t[4]=t[2],t[3]=t[1],t[2]=this.reflection[1],t[1]=this.reflection[0]}return t}function i(t){var e=t.length;return this.pos=[t[e-2],t[e-1]],-1!=\"SCQT\".indexOf(t[0])&&(this.reflection=[2*this.pos[0]-t[e-4],2*this.pos[1]-t[e-3]]),t}function a(t){var e=[t];switch(t[0]){case\"M\":return this.pos=this.start=[t[1],t[2]],e;case\"L\":t[5]=t[3]=t[1],t[6]=t[4]=t[2],t[1]=this.pos[0],t[2]=this.pos[1];break;case\"Q\":t[6]=t[4],t[5]=t[3],t[4]=1*t[4]/3+2*t[2]/3,t[3]=1*t[3]/3+2*t[1]/3,t[2]=1*this.pos[1]/3+2*t[2]/3,t[1]=1*this.pos[0]/3+2*t[1]/3;break;case\"A\":e=function(t,e){var i,a,s,r,n,o,l,h,c,d,u,g,p,f,x,b,m,v,y,w,k,A,C,S,L,M,P=Math.abs(e[1]),I=Math.abs(e[2]),T=e[3]%360,z=e[4],X=e[5],R=e[6],E=e[7],Y=new bt(t),H=new bt(R,E),O=[];if(0===P||0===I||Y.x===H.x&&Y.y===H.y)return[[\"C\",Y.x,Y.y,H.x,H.y,H.x,H.y]];i=new bt((Y.x-H.x)/2,(Y.y-H.y)/2).transform((new vt).rotate(T)),a=i.x*i.x/(P*P)+i.y*i.y/(I*I),a>1&&(P*=a=Math.sqrt(a),I*=a);s=(new vt).rotate(T).scale(1/P,1/I).rotate(-T),Y=Y.transform(s),H=H.transform(s),r=[H.x-Y.x,H.y-Y.y],o=r[0]*r[0]+r[1]*r[1],n=Math.sqrt(o),r[0]/=n,r[1]/=n,l=o<4?Math.sqrt(1-o/4):0,z===X&&(l*=-1);h=new bt((H.x+Y.x)/2+l*-r[1],(H.y+Y.y)/2+l*r[0]),c=new bt(Y.x-h.x,Y.y-h.y),d=new bt(H.x-h.x,H.y-h.y),u=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(u*=-1);g=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(g*=-1);X&&u>g&&(g+=2*Math.PI);!X&&u<g&&(g-=2*Math.PI);for(f=Math.ceil(2*Math.abs(u-g)/Math.PI),b=[],m=u,p=(g-u)/f,x=4*Math.tan(p/4)/3,k=0;k<=f;k++)y=Math.cos(m),v=Math.sin(m),w=new bt(h.x+y,h.y+v),b[k]=[new bt(w.x+x*v,w.y-x*y),w,new bt(w.x-x*v,w.y+x*y)],m+=p;for(b[0][0]=b[0][1].clone(),b[b.length-1][2]=b[b.length-1][1].clone(),s=(new vt).rotate(T).scale(P,I).rotate(-T),k=0,A=b.length;k<A;k++)b[k][0]=b[k][0].transform(s),b[k][1]=b[k][1].transform(s),b[k][2]=b[k][2].transform(s);for(k=1,A=b.length;k<A;k++)C=(w=b[k-1][2]).x,S=w.y,L=(w=b[k][0]).x,M=w.y,R=(w=b[k][1]).x,E=w.y,O.push([\"C\",C,S,L,M,R,E]);return O}(this.pos,t),t=e[0]}return t[0]=\"C\",this.pos=[t[5],t[6]],this.reflection=[2*t[5]-t[3],2*t[6]-t[4]],e}function s(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1?arguments[1]:void 0;if(!1===e)return!1;for(var i=e,a=t.length;i<a;++i)if(\"M\"==t[i][0])return i;return!1}Q(Ee,{morph:function(e,i,a,r,n){for(var o=this.parse(e),l=this.parse(i),h=0,c=0,d=!1,u=!1;!1!==h||!1!==c;){var g;d=s(o,!1!==h&&h+1),u=s(l,!1!==c&&c+1),!1===h&&(h=0==(g=new Ee(p.start).bbox()).height||0==g.width?o.push(o[0])-1:o.push([\"M\",g.x+g.width/2,g.y+g.height/2])-1),!1===c&&(c=0==(g=new Ee(p.dest).bbox()).height||0==g.width?l.push(l[0])-1:l.push([\"M\",g.x+g.width/2,g.y+g.height/2])-1);var p=t(o,h,d,l,c,u);o=o.slice(0,h).concat(p.start,!1===d?[]:o.slice(d)),l=l.slice(0,c).concat(p.dest,!1===u?[]:l.slice(u)),h=!1!==d&&h+p.start.length,c=!1!==u&&c+p.dest.length}this._array=o,this.destination=new Ee,this.destination._array=l;var f=this.fromArray(o.map((function(t,e){var i=l[e].map((function(i,s){return 0===s?i:r.step(t[s],l[e][s],a,n[e],n)}));return i})));return f}})}();const $a=t=>(t.changedTouches&&(t=t.changedTouches[0]),{x:t.clientX,y:t.clientY});class Ja{constructor(t){t.remember(\"_draggable\",this),this.el=t,this.drag=this.drag.bind(this),this.startDrag=this.startDrag.bind(this),this.endDrag=this.endDrag.bind(this)}init(t){t?(this.el.on(\"mousedown.drag\",this.startDrag),this.el.on(\"touchstart.drag\",this.startDrag,{passive:!1})):(this.el.off(\"mousedown.drag\"),this.el.off(\"touchstart.drag\"))}startDrag(t){const e=!t.type.indexOf(\"mouse\");if(e&&1!==t.which&&0!==t.buttons)return;if(this.el.dispatch(\"beforedrag\",{event:t,handler:this}).defaultPrevented)return;t.preventDefault(),t.stopPropagation(),this.init(!1),this.box=this.el.bbox(),this.lastClick=this.el.point($a(t));const i=(e?\"mouseup\":\"touchend\")+\".drag\";zt(window,(e?\"mousemove\":\"touchmove\")+\".drag\",this.drag,this,{passive:!1}),zt(window,i,this.endDrag,this,{passive:!1}),this.el.fire(\"dragstart\",{event:t,handler:this,box:this.box})}drag(t){const{box:e,lastClick:i}=this,a=this.el.point($a(t)),s=a.x-i.x,r=a.y-i.y;if(!s&&!r)return e;const n=e.x+s,o=e.y+r;this.box=new kt(n,o,e.w,e.h),this.lastClick=a,this.el.dispatch(\"dragmove\",{event:t,handler:this,box:this.box}).defaultPrevented||this.move(n,o)}move(t,e){\"svg\"===this.el.type?gi.prototype.move.call(this.el,t,e):this.el.move(t,e)}endDrag(t){this.drag(t),this.el.fire(\"dragend\",{event:t,handler:this,box:this.box}),Xt(window,\"mousemove.drag\"),Xt(window,\"touchmove.drag\"),Xt(window,\"mouseup.drag\"),Xt(window,\"touchend.drag\"),this.init(!0)}}\n/*!\n* @svgdotjs/svg.select.js - An extension of svg.js which allows to select elements with mouse\n* @version 4.0.1\n* https://github.com/svgdotjs/svg.select.js\n*\n* @copyright Ulrich-Matthias Sch\u00E4fer\n* @license MIT\n*\n* BUILT: Mon Jul 01 2024 15:04:42 GMT+0200 (Central European Summer Time)\n*/\nfunction Qa(t,e,i,a=null){return function(s){s.preventDefault(),s.stopPropagation();var r=s.pageX||s.touches[0].pageX,n=s.pageY||s.touches[0].pageY;e.fire(t,{x:r,y:n,event:s,index:a,points:i})}}function Ka([t,e],{a:i,b:a,c:s,d:r,e:n,f:o}){return[t*i+e*s+n,t*a+e*r+o]}Q(Gt,{draggable(t=!0){return(this.remember(\"_draggable\")||new Ja(this)).init(t),this}});let ts=class{constructor(t){this.el=t,t.remember(\"_selectHandler\",this),this.selection=new gi,this.order=[\"lt\",\"t\",\"rt\",\"r\",\"rb\",\"b\",\"lb\",\"l\",\"rot\"],this.mutationHandler=this.mutationHandler.bind(this);const e=F();this.observer=new e.MutationObserver(this.mutationHandler)}init(t){this.createHandle=t.createHandle||this.createHandleFn,this.createRot=t.createRot||this.createRotFn,this.updateHandle=t.updateHandle||this.updateHandleFn,this.updateRot=t.updateRot||this.updateRotFn,this.el.root().put(this.selection),this.updatePoints(),this.createSelection(),this.createResizeHandles(),this.updateResizeHandles(),this.createRotationHandle(),this.updateRotationHandle(),this.observer.observe(this.el.node,{attributes:!0})}active(t,e){if(!t)return this.selection.clear().remove(),void this.observer.disconnect();this.init(e)}createSelection(){this.selection.polygon(this.handlePoints).addClass(\"svg_select_shape\")}updateSelection(){this.selection.get(0).plot(this.handlePoints)}createResizeHandles(){this.handlePoints.forEach(((t,e,i)=>{const a=this.order[e];this.createHandle.call(this,this.selection,t,e,i,a),this.selection.get(e+1).addClass(\"svg_select_handle svg_select_handle_\"+a).on(\"mousedown.selection touchstart.selection\",Qa(a,this.el,this.handlePoints,e))}))}createHandleFn(t){t.polyline()}updateHandleFn(t,e,i,a){const s=a.at(i-1),r=a[(i+1)%a.length],n=e,o=[n[0]-s[0],n[1]-s[1]],l=[n[0]-r[0],n[1]-r[1]],h=Math.sqrt(o[0]*o[0]+o[1]*o[1]),c=Math.sqrt(l[0]*l[0]+l[1]*l[1]),d=[o[0]/h,o[1]/h],u=[l[0]/c,l[1]/c],g=[n[0]-10*d[0],n[1]-10*d[1]],p=[n[0]-10*u[0],n[1]-10*u[1]];t.plot([g,n,p])}updateResizeHandles(){this.handlePoints.forEach(((t,e,i)=>{const a=this.order[e];this.updateHandle.call(this,this.selection.get(e+1),t,e,i,a)}))}createRotFn(t){t.line(),t.circle(5)}getPoint(t){return this.handlePoints[this.order.indexOf(t)]}getPointHandle(t){return this.selection.get(this.order.indexOf(t)+1)}updateRotFn(t,e){const i=this.getPoint(\"t\");t.get(0).plot(i[0],i[1],e[0],e[1]),t.get(1).center(e[0],e[1])}createRotationHandle(){const t=this.selection.group().addClass(\"svg_select_handle_rot\").on(\"mousedown.selection touchstart.selection\",Qa(\"rot\",this.el,this.handlePoints));this.createRot.call(this,t)}updateRotationHandle(){const t=this.selection.findOne(\"g.svg_select_handle_rot\");this.updateRot(t,this.rotationPoint,this.handlePoints)}updatePoints(){const t=this.el.bbox(),e=this.el.parent().screenCTM().inverseO().multiplyO(this.el.screenCTM());this.handlePoints=this.getHandlePoints(t).map((t=>Ka(t,e))),this.rotationPoint=Ka(this.getRotationPoint(t),e)}getHandlePoints({x:t,x2:e,y:i,y2:a,cx:s,cy:r}=this.el.bbox()){return[[t,i],[s,i],[e,i],[e,r],[e,a],[s,a],[t,a],[t,r]]}getRotationPoint({y:t,cx:e}=this.el.bbox()){return[e,t-20]}mutationHandler(){this.updatePoints(),this.updateSelection(),this.updateResizeHandles(),this.updateRotationHandle()}};const es=t=>function(e=!0,i={}){\"object\"==typeof e&&(i=e,e=!0);let a=this.remember(\"_\"+t.name);return a||(e.prototype instanceof ts?(a=new e(this),e=!0):a=new t(this),this.remember(\"_\"+t.name,a)),a.active(e,i),this};\n/*!\n* @svgdotjs/svg.resize.js - An extension for svg.js which allows to resize elements which are selected\n* @version 2.0.4\n* https://github.com/svgdotjs/svg.resize.js\n*\n* @copyright [object Object]\n* @license MIT\n*\n* BUILT: Fri Sep 13 2024 12:43:14 GMT+0200 (Central European Summer Time)\n*/\n/*!\n* @svgdotjs/svg.select.js - An extension of svg.js which allows to select elements with mouse\n* @version 4.0.1\n* https://github.com/svgdotjs/svg.select.js\n*\n* @copyright Ulrich-Matthias Sch\u00E4fer\n* @license MIT\n*\n* BUILT: Mon Jul 01 2024 15:04:42 GMT+0200 (Central European Summer Time)\n*/\nfunction is(t,e,i,a=null){return function(s){s.preventDefault(),s.stopPropagation();var r=s.pageX||s.touches[0].pageX,n=s.pageY||s.touches[0].pageY;e.fire(t,{x:r,y:n,event:s,index:a,points:i})}}function as([t,e],{a:i,b:a,c:s,d:r,e:n,f:o}){return[t*i+e*s+n,t*a+e*r+o]}Q(Gt,{select:es(ts)}),Q([Ge,je,xe],{pointSelect:es(class{constructor(t){this.el=t,t.remember(\"_pointSelectHandler\",this),this.selection=new gi,this.order=[\"lt\",\"t\",\"rt\",\"r\",\"rb\",\"b\",\"lb\",\"l\",\"rot\"],this.mutationHandler=this.mutationHandler.bind(this);const e=F();this.observer=new e.MutationObserver(this.mutationHandler)}init(t){this.createHandle=t.createHandle||this.createHandleFn,this.updateHandle=t.updateHandle||this.updateHandleFn,this.el.root().put(this.selection),this.updatePoints(),this.createSelection(),this.createPointHandles(),this.updatePointHandles(),this.observer.observe(this.el.node,{attributes:!0})}active(t,e){if(!t)return this.selection.clear().remove(),void this.observer.disconnect();this.init(e)}createSelection(){this.selection.polygon(this.points).addClass(\"svg_select_shape_pointSelect\")}updateSelection(){this.selection.get(0).plot(this.points)}createPointHandles(){this.points.forEach(((t,e,i)=>{this.createHandle.call(this,this.selection,t,e,i),this.selection.get(e+1).addClass(\"svg_select_handle_point\").on(\"mousedown.selection touchstart.selection\",Qa(\"point\",this.el,this.points,e))}))}createHandleFn(t){t.circle(5)}updateHandleFn(t,e){t.center(e[0],e[1])}updatePointHandles(){this.points.forEach(((t,e,i)=>{this.updateHandle.call(this,this.selection.get(e+1),t,e,i)}))}updatePoints(){const t=this.el.parent().screenCTM().inverseO().multiplyO(this.el.screenCTM());this.points=this.el.array().map((e=>Ka(e,t)))}mutationHandler(){this.updatePoints(),this.updateSelection(),this.updatePointHandles()}})});class ss{constructor(t){this.el=t,t.remember(\"_selectHandler\",this),this.selection=new gi,this.order=[\"lt\",\"t\",\"rt\",\"r\",\"rb\",\"b\",\"lb\",\"l\",\"rot\"],this.mutationHandler=this.mutationHandler.bind(this);const e=F();this.observer=new e.MutationObserver(this.mutationHandler)}init(t){this.createHandle=t.createHandle||this.createHandleFn,this.createRot=t.createRot||this.createRotFn,this.updateHandle=t.updateHandle||this.updateHandleFn,this.updateRot=t.updateRot||this.updateRotFn,this.el.root().put(this.selection),this.updatePoints(),this.createSelection(),this.createResizeHandles(),this.updateResizeHandles(),this.createRotationHandle(),this.updateRotationHandle(),this.observer.observe(this.el.node,{attributes:!0})}active(t,e){if(!t)return this.selection.clear().remove(),void this.observer.disconnect();this.init(e)}createSelection(){this.selection.polygon(this.handlePoints).addClass(\"svg_select_shape\")}updateSelection(){this.selection.get(0).plot(this.handlePoints)}createResizeHandles(){this.handlePoints.forEach(((t,e,i)=>{const a=this.order[e];this.createHandle.call(this,this.selection,t,e,i,a),this.selection.get(e+1).addClass(\"svg_select_handle svg_select_handle_\"+a).on(\"mousedown.selection touchstart.selection\",is(a,this.el,this.handlePoints,e))}))}createHandleFn(t){t.polyline()}updateHandleFn(t,e,i,a){const s=a.at(i-1),r=a[(i+1)%a.length],n=e,o=[n[0]-s[0],n[1]-s[1]],l=[n[0]-r[0],n[1]-r[1]],h=Math.sqrt(o[0]*o[0]+o[1]*o[1]),c=Math.sqrt(l[0]*l[0]+l[1]*l[1]),d=[o[0]/h,o[1]/h],u=[l[0]/c,l[1]/c],g=[n[0]-10*d[0],n[1]-10*d[1]],p=[n[0]-10*u[0],n[1]-10*u[1]];t.plot([g,n,p])}updateResizeHandles(){this.handlePoints.forEach(((t,e,i)=>{const a=this.order[e];this.updateHandle.call(this,this.selection.get(e+1),t,e,i,a)}))}createRotFn(t){t.line(),t.circle(5)}getPoint(t){return this.handlePoints[this.order.indexOf(t)]}getPointHandle(t){return this.selection.get(this.order.indexOf(t)+1)}updateRotFn(t,e){const i=this.getPoint(\"t\");t.get(0).plot(i[0],i[1],e[0],e[1]),t.get(1).center(e[0],e[1])}createRotationHandle(){const t=this.selection.group().addClass(\"svg_select_handle_rot\").on(\"mousedown.selection touchstart.selection\",is(\"rot\",this.el,this.handlePoints));this.createRot.call(this,t)}updateRotationHandle(){const t=this.selection.findOne(\"g.svg_select_handle_rot\");this.updateRot(t,this.rotationPoint,this.handlePoints)}updatePoints(){const t=this.el.bbox(),e=this.el.parent().screenCTM().inverseO().multiplyO(this.el.screenCTM());this.handlePoints=this.getHandlePoints(t).map((t=>as(t,e))),this.rotationPoint=as(this.getRotationPoint(t),e)}getHandlePoints({x:t,x2:e,y:i,y2:a,cx:s,cy:r}=this.el.bbox()){return[[t,i],[s,i],[e,i],[e,r],[e,a],[s,a],[t,a],[t,r]]}getRotationPoint({y:t,cx:e}=this.el.bbox()){return[e,t-20]}mutationHandler(){this.updatePoints(),this.updateSelection(),this.updateResizeHandles(),this.updateRotationHandle()}}const rs=t=>function(e=!0,i={}){\"object\"==typeof e&&(i=e,e=!0);let a=this.remember(\"_\"+t.name);return a||(e.prototype instanceof ss?(a=new e(this),e=!0):a=new t(this),this.remember(\"_\"+t.name,a)),a.active(e,i),this};Q(Gt,{select:rs(ss)}),Q([Ge,je,xe],{pointSelect:rs(class{constructor(t){this.el=t,t.remember(\"_pointSelectHandler\",this),this.selection=new gi,this.order=[\"lt\",\"t\",\"rt\",\"r\",\"rb\",\"b\",\"lb\",\"l\",\"rot\"],this.mutationHandler=this.mutationHandler.bind(this);const e=F();this.observer=new e.MutationObserver(this.mutationHandler)}init(t){this.createHandle=t.createHandle||this.createHandleFn,this.updateHandle=t.updateHandle||this.updateHandleFn,this.el.root().put(this.selection),this.updatePoints(),this.createSelection(),this.createPointHandles(),this.updatePointHandles(),this.observer.observe(this.el.node,{attributes:!0})}active(t,e){if(!t)return this.selection.clear().remove(),void this.observer.disconnect();this.init(e)}createSelection(){this.selection.polygon(this.points).addClass(\"svg_select_shape_pointSelect\")}updateSelection(){this.selection.get(0).plot(this.points)}createPointHandles(){this.points.forEach(((t,e,i)=>{this.createHandle.call(this,this.selection,t,e,i),this.selection.get(e+1).addClass(\"svg_select_handle_point\").on(\"mousedown.selection touchstart.selection\",is(\"point\",this.el,this.points,e))}))}createHandleFn(t){t.circle(5)}updateHandleFn(t,e){t.center(e[0],e[1])}updatePointHandles(){this.points.forEach(((t,e,i)=>{this.updateHandle.call(this,this.selection.get(e+1),t,e,i)}))}updatePoints(){const t=this.el.parent().screenCTM().inverseO().multiplyO(this.el.screenCTM());this.points=this.el.array().map((e=>as(e,t)))}mutationHandler(){this.updatePoints(),this.updateSelection(),this.updatePointHandles()}})});const ns=t=>(t.changedTouches&&(t=t.changedTouches[0]),{x:t.clientX,y:t.clientY}),os=t=>{let e=1/0,i=1/0,a=-1/0,s=-1/0;for(let r=0;r<t.length;r++){const n=t[r];e=Math.min(e,n[0]),i=Math.min(i,n[1]),a=Math.max(a,n[0]),s=Math.max(s,n[1])}return new kt(e,i,a-e,s-i)};class ls{constructor(t){this.el=t,t.remember(\"_ResizeHandler\",this),this.lastCoordinates=null,this.eventType=\"\",this.lastEvent=null,this.handleResize=this.handleResize.bind(this),this.resize=this.resize.bind(this),this.endResize=this.endResize.bind(this),this.rotate=this.rotate.bind(this),this.movePoint=this.movePoint.bind(this)}active(t,e){this.preserveAspectRatio=e.preserveAspectRatio??!1,this.aroundCenter=e.aroundCenter??!1,this.grid=e.grid??0,this.degree=e.degree??0,this.el.off(\".resize\"),t&&(this.el.on([\"lt.resize\",\"rt.resize\",\"rb.resize\",\"lb.resize\",\"t.resize\",\"r.resize\",\"b.resize\",\"l.resize\",\"rot.resize\",\"point.resize\"],this.handleResize),this.lastEvent&&(\"rot\"===this.eventType?this.rotate(this.lastEvent):\"point\"===this.eventType?this.movePoint(this.lastEvent):this.resize(this.lastEvent)))}handleResize(t){this.eventType=t.type;const{event:e,index:i,points:a}=t.detail,s=!e.type.indexOf(\"mouse\");if(s&&1!==(e.which||e.buttons))return;if(this.el.dispatch(\"beforeresize\",{event:t,handler:this}).defaultPrevented)return;this.box=this.el.bbox(),this.startPoint=this.el.point(ns(e)),this.index=i,this.points=a.slice();const r=(s?\"mousemove\":\"touchmove\")+\".resize\",n=(s?\"mouseup\":\"touchcancel.resize touchend\")+\".resize\";\"point\"===t.type?zt(window,r,this.movePoint):\"rot\"===t.type?zt(window,r,this.rotate):zt(window,r,this.resize),zt(window,n,this.endResize)}resize(t){this.lastEvent=t;const e=this.snapToGrid(this.el.point(ns(t)));let i=e.x-this.startPoint.x,a=e.y-this.startPoint.y;this.preserveAspectRatio&&this.aroundCenter&&(i*=2,a*=2);const s=this.box.x+i,r=this.box.y+a,n=this.box.x2+i,o=this.box.y2+a;let l=new kt(this.box);if(this.eventType.includes(\"l\")&&(l.x=Math.min(s,this.box.x2),l.x2=Math.max(s,this.box.x2)),this.eventType.includes(\"r\")&&(l.x=Math.min(n,this.box.x),l.x2=Math.max(n,this.box.x)),this.eventType.includes(\"t\")&&(l.y=Math.min(r,this.box.y2),l.y2=Math.max(r,this.box.y2)),this.eventType.includes(\"b\")&&(l.y=Math.min(o,this.box.y),l.y2=Math.max(o,this.box.y)),l.width=l.x2-l.x,l.height=l.y2-l.y,this.preserveAspectRatio){const t=l.width/this.box.width,e=l.height/this.box.height,i=[\"lt\",\"t\",\"rt\",\"r\",\"rb\",\"b\",\"lb\",\"l\"],a=(i.indexOf(this.eventType)+4)%i.length,s=this.aroundCenter?[this.box.cx,this.box.cy]:this.points[a];let r=this.eventType.includes(\"t\")||this.eventType.includes(\"b\")?e:t;r=2===this.eventType.length?Math.max(t,e):r,l=function(t,e,i){const a=[[t.x,t.y],[t.x+t.width,t.y],[t.x+t.width,t.y+t.height],[t.x,t.y+t.height]].map((([t,a])=>{const s=t-e[0],r=(a-e[1])*i;return[s*i+e[0],r+e[1]]}));return os(a)}(this.box,s,r)}this.el.dispatch(\"resize\",{box:new kt(l),angle:0,eventType:this.eventType,event:t,handler:this}).defaultPrevented||this.el.size(l.width,l.height).move(l.x,l.y)}movePoint(t){this.lastEvent=t;const{x:e,y:i}=this.snapToGrid(this.el.point(ns(t))),a=this.el.array().slice();a[this.index]=[e,i],this.el.dispatch(\"resize\",{box:os(a),angle:0,eventType:this.eventType,event:t,handler:this}).defaultPrevented||this.el.plot(a)}rotate(t){this.lastEvent=t;const e=this.startPoint,i=this.el.point(ns(t)),{cx:a,cy:s}=this.box,r=e.x-a,n=e.y-s,o=i.x-a,l=i.y-s,h=Math.sqrt(r*r+n*n)*Math.sqrt(o*o+l*l);if(0===h)return;let c=Math.acos((r*o+n*l)/h)/Math.PI*180;if(!c)return;i.x<e.x&&(c=-c);const d=new vt(this.el),{x:u,y:g}=new bt(a,s).transformO(d),{rotate:p}=d.decompose(),f=this.snapToAngle(p+c)-p;this.el.dispatch(\"resize\",{box:this.box,angle:f,eventType:this.eventType,event:t,handler:this}).defaultPrevented||this.el.transform(d.rotateO(f,u,g))}endResize(t){\"rot\"!==this.eventType&&\"point\"!==this.eventType&&this.resize(t),this.lastEvent=null,this.eventType=\"\",Xt(window,\"mousemove.resize touchmove.resize\"),Xt(window,\"mouseup.resize touchend.resize\")}snapToGrid(t){return this.grid&&(t.x=Math.round(t.x/this.grid)*this.grid,t.y=Math.round(t.y/this.grid)*this.grid),t}snapToAngle(t){return this.degree&&(t=Math.round(t/this.degree)*this.degree),t}}Q(Gt,{resize:function(t=!0,e={}){\"object\"==typeof t&&(e=t,t=!0);let i=this.remember(\"_ResizeHandler\");return i||(t.prototype instanceof ls?(i=new t(this),t=!0):i=new ls(this),this.remember(\"_resizeHandler\",i)),i.active(t,e),this}}),void 0===window.SVG&&(window.SVG=yi),void 0===window.Apex&&(window.Apex={});var hs=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"initModules\",value:function(){this.ctx.publicMethods=[\"updateOptions\",\"updateSeries\",\"appendData\",\"appendSeries\",\"isSeriesHidden\",\"highlightSeries\",\"toggleSeries\",\"showSeries\",\"hideSeries\",\"setLocale\",\"resetSeries\",\"zoomX\",\"toggleDataPointSelection\",\"dataURI\",\"exportToCSV\",\"addXaxisAnnotation\",\"addYaxisAnnotation\",\"addPointAnnotation\",\"clearAnnotations\",\"removeAnnotation\",\"paper\",\"destroy\"],this.ctx.eventList=[\"click\",\"mousedown\",\"mousemove\",\"mouseleave\",\"touchstart\",\"touchmove\",\"touchleave\",\"mouseup\",\"touchend\"],this.ctx.animations=new y(this.ctx),this.ctx.axes=new ra(this.ctx),this.ctx.core=new qa(this.ctx.el,this.ctx),this.ctx.config=new Wi({}),this.ctx.data=new $i(this.ctx),this.ctx.grid=new Ki(this.ctx),this.ctx.graphics=new Mi(this.ctx),this.ctx.coreUtils=new Pi(this.ctx),this.ctx.crosshairs=new na(this.ctx),this.ctx.events=new aa(this.ctx),this.ctx.exports=new Ji(this.ctx),this.ctx.fill=new ji(this.ctx),this.ctx.localization=new sa(this.ctx),this.ctx.options=new Oi,this.ctx.responsive=new oa(this.ctx),this.ctx.series=new Zi(this.ctx),this.ctx.theme=new la(this.ctx),this.ctx.formatters=new Xi(this.ctx),this.ctx.titleSubtitle=new ha(this.ctx),this.ctx.legend=new xa(this.ctx),this.ctx.toolbar=new ba(this.ctx),this.ctx.tooltip=new Sa(this.ctx),this.ctx.dimensions=new pa(this.ctx),this.ctx.updateHelpers=new Za(this.ctx),this.ctx.zoomPanSelection=new ma(this.ctx),this.ctx.w.globals.tooltip=new Sa(this.ctx)}}]),t}(),cs=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"clear\",value:function(t){var e=t.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:e})}},{key:\"killSVG\",value:function(t){t.each((function(){this.removeClass(\"*\"),this.off()}),!0),t.clear()}},{key:\"clearDomElements\",value:function(t){var e=this,i=t.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight=\"unset\");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach((function(t){s.removeEventListener(t,e.ctx.events.documentEvent)}));var r=this.w.globals.dom;if(null!==this.ctx.el)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elLegendWrap=null,r.elLegendForeign=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectBarMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),t}(),ds=new WeakMap;var us=function(){function t(e,a){i(this,t),this.opts=a,this.ctx=this,this.w=new Gi(a).init(),this.el=e,this.w.globals.cuid=v.randomId(),this.w.globals.chartID=this.w.config.chart.id?v.escapeString(this.w.config.chart.id):this.w.globals.cuid,new hs(this).initModules(),this.create=v.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return s(t,[{key:\"render\",value:function(){var t=this;return new Promise((function(e,i){if(v.elementExists(t.el)){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var a=t.w.config.chart.events.beforeMount;\"function\"==typeof a&&a(t,t.w),t.events.fireEvent(\"beforeMount\",[t,t.w]),window.addEventListener(\"resize\",t.windowResizeHandler),function(t,e){var i=!1;if(t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var a=t.getBoundingClientRect();\"none\"!==t.style.display&&0!==a.width||(i=!0)}var s=new ResizeObserver((function(a){i&&e.call(t,a),i=!0}));t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(t.children).forEach((function(t){return s.observe(t)})):s.observe(t),ds.set(e,s)}(t.el.parentNode,t.parentResizeHandler);var s=t.el.getRootNode&&t.el.getRootNode(),r=v.is(\"ShadowRoot\",s),n=t.el.ownerDocument,o=r?s.getElementById(\"apexcharts-css\"):n.getElementById(\"apexcharts-css\");if(!o){var l;(o=document.createElement(\"style\")).id=\"apexcharts-css\",o.textContent='@keyframes opaque {\\n  0% {\\n    opacity: 0\\n  }\\n\\n  to {\\n    opacity: 1\\n  }\\n}\\n\\n@keyframes resizeanim {\\n\\n  0%,\\n  to {\\n    opacity: 0\\n  }\\n}\\n\\n.apexcharts-canvas {\\n  position: relative;\\n  direction: ltr !important;\\n  user-select: none\\n}\\n\\n.apexcharts-canvas ::-webkit-scrollbar {\\n  -webkit-appearance: none;\\n  width: 6px\\n}\\n\\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\\n  border-radius: 4px;\\n  background-color: rgba(0, 0, 0, .5);\\n  box-shadow: 0 0 1px rgba(255, 255, 255, .5);\\n  -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5)\\n}\\n\\n.apexcharts-inner {\\n  position: relative\\n}\\n\\n.apexcharts-text tspan {\\n  font-family: inherit\\n}\\n\\nrect.legend-mouseover-inactive,\\n.legend-mouseover-inactive rect,\\n.legend-mouseover-inactive path,\\n.legend-mouseover-inactive circle,\\n.legend-mouseover-inactive line,\\n.legend-mouseover-inactive text.apexcharts-yaxis-title-text,\\n.legend-mouseover-inactive text.apexcharts-yaxis-label {\\n  transition: .15s ease all;\\n  opacity: .2\\n}\\n\\n.apexcharts-legend-text {\\n  padding-left: 15px;\\n  margin-left: -15px;\\n}\\n\\n.apexcharts-series-collapsed {\\n  opacity: 0\\n}\\n\\n.apexcharts-tooltip {\\n  border-radius: 5px;\\n  box-shadow: 2px 2px 6px -4px #999;\\n  cursor: default;\\n  font-size: 14px;\\n  left: 62px;\\n  opacity: 0;\\n  pointer-events: none;\\n  position: absolute;\\n  top: 20px;\\n  display: flex;\\n  flex-direction: column;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  z-index: 12;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-tooltip.apexcharts-active {\\n  opacity: 1;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-light {\\n  border: 1px solid #e3e3e3;\\n  background: rgba(255, 255, 255, .96)\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-dark {\\n  color: #fff;\\n  background: rgba(30, 30, 30, .8)\\n}\\n\\n.apexcharts-tooltip * {\\n  font-family: inherit\\n}\\n\\n.apexcharts-tooltip-title {\\n  padding: 6px;\\n  font-size: 15px;\\n  margin-bottom: 4px\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\\n  background: #eceff1;\\n  border-bottom: 1px solid #ddd\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\\n  background: rgba(0, 0, 0, .7);\\n  border-bottom: 1px solid #333\\n}\\n\\n.apexcharts-tooltip-text-goals-value,\\n.apexcharts-tooltip-text-y-value,\\n.apexcharts-tooltip-text-z-value {\\n  display: inline-block;\\n  margin-left: 5px;\\n  font-weight: 600\\n}\\n\\n.apexcharts-tooltip-text-goals-label:empty,\\n.apexcharts-tooltip-text-goals-value:empty,\\n.apexcharts-tooltip-text-y-label:empty,\\n.apexcharts-tooltip-text-y-value:empty,\\n.apexcharts-tooltip-text-z-value:empty,\\n.apexcharts-tooltip-title:empty {\\n  display: none\\n}\\n\\n.apexcharts-tooltip-text-goals-label,\\n.apexcharts-tooltip-text-goals-value {\\n  padding: 6px 0 5px\\n}\\n\\n.apexcharts-tooltip-goals-group,\\n.apexcharts-tooltip-text-goals-label,\\n.apexcharts-tooltip-text-goals-value {\\n  display: flex\\n}\\n\\n.apexcharts-tooltip-text-goals-label:not(:empty),\\n.apexcharts-tooltip-text-goals-value:not(:empty) {\\n  margin-top: -6px\\n}\\n\\n.apexcharts-tooltip-marker {\\n  display: inline-block;\\n  position: relative;\\n  width: 16px;\\n  height: 16px;\\n  font-size: 16px;\\n  line-height: 16px;\\n  margin-right: 4px;\\n  text-align: center;\\n  vertical-align: middle;\\n  color: inherit;\\n}\\n\\n.apexcharts-tooltip-marker::before {\\n  content: \"\";\\n  display: inline-block;\\n  width: 100%;\\n  text-align: center;\\n  color: currentcolor;\\n  text-rendering: optimizeLegibility;\\n  -webkit-font-smoothing: antialiased;\\n  font-size: 26px;\\n  font-family: Arial, Helvetica, sans-serif;\\n  line-height: 14px;\\n  font-weight: 900;\\n}\\n\\n.apexcharts-tooltip-marker[shape=\"circle\"]::before {\\n  content: \"\\\\25CF\";\\n}\\n\\n.apexcharts-tooltip-marker[shape=\"square\"]::before,\\n.apexcharts-tooltip-marker[shape=\"rect\"]::before {\\n  content: \"\\\\25A0\";\\n  transform: translate(-1px, -2px);\\n}\\n\\n.apexcharts-tooltip-marker[shape=\"line\"]::before {\\n  content: \"\\\\2500\";\\n}\\n\\n.apexcharts-tooltip-marker[shape=\"diamond\"]::before {\\n  content: \"\\\\25C6\";\\n  font-size: 28px;\\n}\\n\\n.apexcharts-tooltip-marker[shape=\"triangle\"]::before {\\n  content: \"\\\\25B2\";\\n  font-size: 22px;\\n}\\n\\n.apexcharts-tooltip-marker[shape=\"cross\"]::before {\\n  content: \"\\\\2715\";\\n  font-size: 18px;\\n}\\n\\n.apexcharts-tooltip-marker[shape=\"plus\"]::before {\\n  content: \"\\\\2715\";\\n  transform: rotate(45deg) translate(-1px, -1px);\\n  font-size: 18px;\\n}\\n\\n.apexcharts-tooltip-marker[shape=\"star\"]::before {\\n  content: \"\\\\2605\";\\n  font-size: 18px;\\n}\\n\\n.apexcharts-tooltip-marker[shape=\"sparkle\"]::before {\\n  content: \"\\\\2726\";\\n  font-size: 20px;\\n}\\n\\n.apexcharts-tooltip-series-group {\\n  padding: 0 10px;\\n  display: none;\\n  text-align: left;\\n  justify-content: left;\\n  align-items: center\\n}\\n\\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\\n  opacity: 1\\n}\\n\\n.apexcharts-tooltip-series-group.apexcharts-active,\\n.apexcharts-tooltip-series-group:last-child {\\n  padding-bottom: 4px\\n}\\n\\n.apexcharts-tooltip-y-group {\\n  padding: 6px 0 5px\\n}\\n\\n.apexcharts-custom-tooltip,\\n.apexcharts-tooltip-box {\\n  padding: 4px 8px\\n}\\n\\n.apexcharts-tooltip-boxPlot {\\n  display: flex;\\n  flex-direction: column-reverse\\n}\\n\\n.apexcharts-tooltip-box>div {\\n  margin: 4px 0\\n}\\n\\n.apexcharts-tooltip-box span.value {\\n  font-weight: 700\\n}\\n\\n.apexcharts-tooltip-rangebar {\\n  padding: 5px 8px\\n}\\n\\n.apexcharts-tooltip-rangebar .category {\\n  font-weight: 600;\\n  color: #777\\n}\\n\\n.apexcharts-tooltip-rangebar .series-name {\\n  font-weight: 700;\\n  display: block;\\n  margin-bottom: 5px\\n}\\n\\n.apexcharts-xaxistooltip,\\n.apexcharts-yaxistooltip {\\n  opacity: 0;\\n  pointer-events: none;\\n  color: #373d3f;\\n  font-size: 13px;\\n  text-align: center;\\n  border-radius: 2px;\\n  position: absolute;\\n  z-index: 10;\\n  background: #eceff1;\\n  border: 1px solid #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip {\\n  padding: 9px 10px;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\\n  background: rgba(0, 0, 0, .7);\\n  border: 1px solid rgba(0, 0, 0, .5);\\n  color: #fff\\n}\\n\\n.apexcharts-xaxistooltip:after,\\n.apexcharts-xaxistooltip:before {\\n  left: 50%;\\n  border: solid transparent;\\n  content: \" \";\\n  height: 0;\\n  width: 0;\\n  position: absolute;\\n  pointer-events: none\\n}\\n\\n.apexcharts-xaxistooltip:after {\\n  border-color: transparent;\\n  border-width: 6px;\\n  margin-left: -6px\\n}\\n\\n.apexcharts-xaxistooltip:before {\\n  border-color: transparent;\\n  border-width: 7px;\\n  margin-left: -7px\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after,\\n.apexcharts-xaxistooltip-bottom:before {\\n  bottom: 100%\\n}\\n\\n.apexcharts-xaxistooltip-top:after,\\n.apexcharts-xaxistooltip-top:before {\\n  top: 100%\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after {\\n  border-bottom-color: #eceff1\\n}\\n\\n.apexcharts-xaxistooltip-bottom:before {\\n  border-bottom-color: #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,\\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\\n  border-bottom-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-xaxistooltip-top:after {\\n  border-top-color: #eceff1\\n}\\n\\n.apexcharts-xaxistooltip-top:before {\\n  border-top-color: #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,\\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\\n  border-top-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-xaxistooltip.apexcharts-active {\\n  opacity: 1;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-yaxistooltip {\\n  padding: 4px 10px\\n}\\n\\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\\n  background: rgba(0, 0, 0, .7);\\n  border: 1px solid rgba(0, 0, 0, .5);\\n  color: #fff\\n}\\n\\n.apexcharts-yaxistooltip:after,\\n.apexcharts-yaxistooltip:before {\\n  top: 50%;\\n  border: solid transparent;\\n  content: \" \";\\n  height: 0;\\n  width: 0;\\n  position: absolute;\\n  pointer-events: none\\n}\\n\\n.apexcharts-yaxistooltip:after {\\n  border-color: transparent;\\n  border-width: 6px;\\n  margin-top: -6px\\n}\\n\\n.apexcharts-yaxistooltip:before {\\n  border-color: transparent;\\n  border-width: 7px;\\n  margin-top: -7px\\n}\\n\\n.apexcharts-yaxistooltip-left:after,\\n.apexcharts-yaxistooltip-left:before {\\n  left: 100%\\n}\\n\\n.apexcharts-yaxistooltip-right:after,\\n.apexcharts-yaxistooltip-right:before {\\n  right: 100%\\n}\\n\\n.apexcharts-yaxistooltip-left:after {\\n  border-left-color: #eceff1\\n}\\n\\n.apexcharts-yaxistooltip-left:before {\\n  border-left-color: #90a4ae\\n}\\n\\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,\\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\\n  border-left-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-yaxistooltip-right:after {\\n  border-right-color: #eceff1\\n}\\n\\n.apexcharts-yaxistooltip-right:before {\\n  border-right-color: #90a4ae\\n}\\n\\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,\\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\\n  border-right-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-yaxistooltip.apexcharts-active {\\n  opacity: 1\\n}\\n\\n.apexcharts-yaxistooltip-hidden {\\n  display: none\\n}\\n\\n.apexcharts-xcrosshairs,\\n.apexcharts-ycrosshairs {\\n  pointer-events: none;\\n  opacity: 0;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-xcrosshairs.apexcharts-active,\\n.apexcharts-ycrosshairs.apexcharts-active {\\n  opacity: 1;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-ycrosshairs-hidden {\\n  opacity: 0\\n}\\n\\n.apexcharts-selection-rect {\\n  cursor: move\\n}\\n\\n.svg_select_shape {\\n  stroke-width: 1;\\n  stroke-dasharray: 10 10;\\n  stroke: black;\\n  stroke-opacity: 0.1;\\n  pointer-events: none;\\n  fill: none;\\n}\\n\\n.svg_select_handle {\\n  stroke-width: 3;\\n  stroke: black;\\n  fill: none;\\n}\\n\\n.svg_select_handle_r {\\n  cursor: e-resize;\\n}\\n\\n.svg_select_handle_l {\\n  cursor: w-resize;\\n}\\n\\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\\n  cursor: crosshair\\n}\\n\\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\\n  cursor: move\\n}\\n\\n.apexcharts-menu-icon,\\n.apexcharts-pan-icon,\\n.apexcharts-reset-icon,\\n.apexcharts-selection-icon,\\n.apexcharts-toolbar-custom-icon,\\n.apexcharts-zoom-icon,\\n.apexcharts-zoomin-icon,\\n.apexcharts-zoomout-icon {\\n  cursor: pointer;\\n  width: 20px;\\n  height: 20px;\\n  line-height: 24px;\\n  color: #6e8192;\\n  text-align: center\\n}\\n\\n.apexcharts-menu-icon svg,\\n.apexcharts-reset-icon svg,\\n.apexcharts-zoom-icon svg,\\n.apexcharts-zoomin-icon svg,\\n.apexcharts-zoomout-icon svg {\\n  fill: #6e8192\\n}\\n\\n.apexcharts-selection-icon svg {\\n  fill: #444;\\n  transform: scale(.76)\\n}\\n\\n.apexcharts-theme-dark .apexcharts-menu-icon svg,\\n.apexcharts-theme-dark .apexcharts-pan-icon svg,\\n.apexcharts-theme-dark .apexcharts-reset-icon svg,\\n.apexcharts-theme-dark .apexcharts-selection-icon svg,\\n.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoom-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoomin-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\\n  fill: #f3f4f5\\n}\\n\\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,\\n.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,\\n.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\\n  fill: #008ffb\\n}\\n\\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-reset-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,\\n.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,\\n.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\\n  fill: #333\\n}\\n\\n.apexcharts-menu-icon,\\n.apexcharts-selection-icon {\\n  position: relative\\n}\\n\\n.apexcharts-reset-icon {\\n  margin-left: 5px\\n}\\n\\n.apexcharts-menu-icon,\\n.apexcharts-reset-icon,\\n.apexcharts-zoom-icon {\\n  transform: scale(.85)\\n}\\n\\n.apexcharts-zoomin-icon,\\n.apexcharts-zoomout-icon {\\n  transform: scale(.7)\\n}\\n\\n.apexcharts-zoomout-icon {\\n  margin-right: 3px\\n}\\n\\n.apexcharts-pan-icon {\\n  transform: scale(.62);\\n  position: relative;\\n  left: 1px;\\n  top: 0\\n}\\n\\n.apexcharts-pan-icon svg {\\n  fill: #fff;\\n  stroke: #6e8192;\\n  stroke-width: 2\\n}\\n\\n.apexcharts-pan-icon.apexcharts-selected svg {\\n  stroke: #008ffb\\n}\\n\\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\\n  stroke: #333\\n}\\n\\n.apexcharts-toolbar {\\n  position: absolute;\\n  z-index: 11;\\n  max-width: 176px;\\n  text-align: right;\\n  border-radius: 3px;\\n  padding: 0 6px 2px;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center\\n}\\n\\n.apexcharts-menu {\\n  background: #fff;\\n  position: absolute;\\n  top: 100%;\\n  border: 1px solid #ddd;\\n  border-radius: 3px;\\n  padding: 3px;\\n  right: 10px;\\n  opacity: 0;\\n  min-width: 110px;\\n  transition: .15s ease all;\\n  pointer-events: none\\n}\\n\\n.apexcharts-menu.apexcharts-menu-open {\\n  opacity: 1;\\n  pointer-events: all;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-menu-item {\\n  padding: 6px 7px;\\n  font-size: 12px;\\n  cursor: pointer\\n}\\n\\n.apexcharts-theme-light .apexcharts-menu-item:hover {\\n  background: #eee\\n}\\n\\n.apexcharts-theme-dark .apexcharts-menu {\\n  background: rgba(0, 0, 0, .7);\\n  color: #fff\\n}\\n\\n@media screen and (min-width:768px) {\\n  .apexcharts-canvas:hover .apexcharts-toolbar {\\n    opacity: 1\\n  }\\n}\\n\\n.apexcharts-canvas .apexcharts-element-hidden,\\n.apexcharts-datalabel.apexcharts-element-hidden,\\n.apexcharts-hide .apexcharts-series-points {\\n  opacity: 0;\\n}\\n\\n.apexcharts-hidden-element-shown {\\n  opacity: 1;\\n  transition: 0.25s ease all;\\n}\\n\\n.apexcharts-datalabel,\\n.apexcharts-datalabel-label,\\n.apexcharts-datalabel-value,\\n.apexcharts-datalabels,\\n.apexcharts-pie-label {\\n  cursor: default;\\n  pointer-events: none\\n}\\n\\n.apexcharts-pie-label-delay {\\n  opacity: 0;\\n  animation-name: opaque;\\n  animation-duration: .3s;\\n  animation-fill-mode: forwards;\\n  animation-timing-function: ease\\n}\\n\\n.apexcharts-radialbar-label {\\n  cursor: pointer;\\n}\\n\\n.apexcharts-annotation-rect,\\n.apexcharts-area-series .apexcharts-area,\\n.apexcharts-gridline,\\n.apexcharts-line,\\n.apexcharts-point-annotation-label,\\n.apexcharts-radar-series path:not(.apexcharts-marker),\\n.apexcharts-radar-series polygon,\\n.apexcharts-toolbar svg,\\n.apexcharts-tooltip .apexcharts-marker,\\n.apexcharts-xaxis-annotation-label,\\n.apexcharts-yaxis-annotation-label,\\n.apexcharts-zoom-rect,\\n.no-pointer-events {\\n  pointer-events: none\\n}\\n\\n.apexcharts-tooltip-active .apexcharts-marker {\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-radar-series .apexcharts-yaxis {\\n  pointer-events: none;\\n}\\n\\n.resize-triggers {\\n  animation: 1ms resizeanim;\\n  visibility: hidden;\\n  opacity: 0;\\n  height: 100%;\\n  width: 100%;\\n  overflow: hidden\\n}\\n\\n.contract-trigger:before,\\n.resize-triggers,\\n.resize-triggers>div {\\n  content: \" \";\\n  display: block;\\n  position: absolute;\\n  top: 0;\\n  left: 0\\n}\\n\\n.resize-triggers>div {\\n  height: 100%;\\n  width: 100%;\\n  background: #eee;\\n  overflow: auto\\n}\\n\\n.contract-trigger:before {\\n  overflow: hidden;\\n  width: 200%;\\n  height: 200%\\n}\\n\\n.apexcharts-bar-goals-markers {\\n  pointer-events: none\\n}\\n\\n.apexcharts-bar-shadows {\\n  pointer-events: none\\n}\\n\\n.apexcharts-rangebar-goals-markers {\\n  pointer-events: none\\n}';var h=(null===(l=t.opts.chart)||void 0===l?void 0:l.nonce)||t.w.config.chart.nonce;h&&o.setAttribute(\"nonce\",h),r?s.prepend(o):n.head.appendChild(o)}var c=t.create(t.w.config.series,{});if(!c)return e(t);t.mount(c).then((function(){\"function\"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent(\"mounted\",[t,t.w]),e(c)})).catch((function(t){i(t)}))}else i(new Error(\"Element not found\"))}))}},{key:\"create\",value:function(t,e){var i=this,a=this.w;new hs(this).initModules();var s=this.w.globals;if(s.noData=!1,s.animationEnded=!1,!v.elementExists(this.el))return s.animationEnded=!0,this.destroy(),null;(this.responsive.checkResponsiveConfig(e),a.config.xaxis.convertedCatToNumeric)&&new Ni(a.config).convertCatToNumericXaxis(a.config,this.ctx);if(this.core.setupElements(),\"treemap\"===a.config.chart.type&&(a.config.grid.show=!1,a.config.yaxis[0].show=!1),0===s.svgWidth)return s.animationEnded=!0,null;var r=t;t.forEach((function(t,e){t.hidden&&(r=i.legend.legendHelpers.getSeriesAfterCollapsing({realIndex:e}))}));var n=Pi.checkComboSeries(r,a.config.chart.type);s.comboCharts=n.comboCharts,s.comboBarCount=n.comboBarCount;var o=r.every((function(t){return t.data&&0===t.data.length}));(0===r.length||o&&s.collapsedSeries.length<1)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(r),this.theme.init(),new Vi(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),s.noData&&s.collapsedSeries.length!==s.series.length&&!a.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),s.axisCharts&&(this.core.coreCalculations(),\"category\"!==a.config.xaxis.type&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=a.globals.minX,this.ctx.toolbar.maxX=a.globals.maxX),this.formatters.heatmapLabelFormatters(),new Pi(this).getLargestMarkerSize(),this.dimensions.plotCoords();var l=this.core.xySettings();this.grid.createGridMask();var h=this.core.plotChartType(r,l),c=new qi(this);return c.bringForward(),a.config.dataLabels.background.enabled&&c.dataLabelsBackground(),this.core.shiftGraphPosition(),{elGraph:h,xyRatios:l,dimensions:{plot:{left:a.globals.translateX,top:a.globals.translateY,width:a.globals.gridWidth,height:a.globals.gridHeight}}}}},{key:\"mount\",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error(\"Not enough data to display or target element not found\"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new Ki(i);var n,o,l=i.grid.drawGrid();(i.annotations=new Fi(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),\"back\"===a.config.grid.position)&&(l&&a.globals.dom.elGraphical.add(l.el),null!=l&&null!==(n=l.elGridBorders)&&void 0!==n&&n.node&&a.globals.dom.elGraphical.add(l.elGridBorders));if(Array.isArray(e.elGraph))for(var h=0;h<e.elGraph.length;h++)a.globals.dom.elGraphical.add(e.elGraph[h]);else a.globals.dom.elGraphical.add(e.elGraph);\"front\"===a.config.grid.position&&(l&&a.globals.dom.elGraphical.add(l.el),null!=l&&null!==(o=l.elGridBorders)&&void 0!==o&&o.node&&a.globals.dom.elGraphical.add(l.elGridBorders));\"front\"===a.config.xaxis.crosshairs.position&&i.crosshairs.drawXCrosshairs(),\"front\"===a.config.yaxis[0].crosshairs.position&&i.crosshairs.drawYCrosshairs(),\"treemap\"!==a.config.chart.type&&i.axes.drawAxis(a.config.chart.type,l);var c=new Qi(t.ctx,l),d=new ia(t.ctx,l);if(null!==l&&(c.xAxisLabelCorrections(l.xAxisTickWidth),d.setYAxisTextAlignments(),a.config.yaxis.map((function(t,e){-1===a.globals.ignoreYAxisIndexes.indexOf(e)&&d.yAxisTitleRotate(e,t.opposite)}))),i.annotations.drawAxesAnnotations(),!a.globals.noData){if(a.config.tooltip.enabled&&!a.globals.noData&&i.w.globals.tooltip.drawTooltip(e.xyRatios),a.globals.axisCharts&&(a.globals.isXNumeric||a.config.xaxis.convertedCatToNumeric||a.globals.isRangeBar))(a.config.chart.zoom.enabled||a.config.chart.selection&&a.config.chart.selection.enabled||a.config.chart.pan&&a.config.chart.pan.enabled)&&i.zoomPanSelection.init({xyRatios:e.xyRatios});else{var u=a.config.chart.toolbar.tools;[\"zoom\",\"zoomin\",\"zoomout\",\"selection\",\"pan\",\"reset\"].forEach((function(t){u[t]=!1}))}a.config.chart.toolbar.show&&!a.globals.allSeriesCollapsed&&i.toolbar.createToolbar()}a.globals.memory.methodsToExec.length>0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:\"destroy\",value:function(){window.removeEventListener(\"resize\",this.windowResizeHandler),function(t,e){var i=ds.get(e);i&&(i.disconnect(),ds.delete(e))}(this.el.parentNode,this.parentResizeHandler);var t=this.w.config.chart.id;t&&Apex._chartInstances.forEach((function(e,i){e.id===v.escapeString(t)&&Apex._chartInstances.splice(i,1)})),new cs(this.ctx).clear({isUpdating:!1})}},{key:\"updateOptions\",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=this.w;return n.globals.selection=void 0,t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),n.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:\"updateSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:\"appendSeries\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:\"appendData\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s<a.length;s++)if(null!==t[s]&&void 0!==t[s])for(var r=0;r<t[s].data.length;r++)a[s].data.push(t[s].data[r]);return i.w.config.series=a,e&&(i.w.globals.initialSeries=v.clone(i.w.config.series)),this.update()}},{key:\"update\",value:function(t){var e=this;return new Promise((function(i,a){new cs(e.ctx).clear({isUpdating:!0});var s=e.create(e.w.config.series,t);if(!s)return i(e);e.mount(s).then((function(){\"function\"==typeof e.w.config.chart.events.updated&&e.w.config.chart.events.updated(e,e.w),e.events.fireEvent(\"updated\",[e,e.w]),e.w.globals.isDirty=!0,i(e)})).catch((function(t){a(t)}))}))}},{key:\"getSyncedCharts\",value:function(){var t=this.getGroupedCharts(),e=[this];return t.length&&(e=[],t.forEach((function(t){e.push(t)}))),e}},{key:\"getGroupedCharts\",value:function(){var t=this;return Apex._chartInstances.filter((function(t){if(t.group)return!0})).map((function(e){return t.w.config.chart.group===e.group?e.chart:t}))}},{key:\"toggleSeries\",value:function(t){return this.series.toggleSeries(t)}},{key:\"highlightSeriesOnLegendHover\",value:function(t,e){return this.series.toggleSeriesOnHover(t,e)}},{key:\"showSeries\",value:function(t){this.series.showSeries(t)}},{key:\"hideSeries\",value:function(t){this.series.hideSeries(t)}},{key:\"highlightSeries\",value:function(t){this.series.highlightSeries(t)}},{key:\"isSeriesHidden\",value:function(t){this.series.isSeriesHidden(t)}},{key:\"resetSeries\",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:\"addEventListener\",value:function(t,e){this.events.addEventListener(t,e)}},{key:\"removeEventListener\",value:function(t,e){this.events.removeEventListener(t,e)}},{key:\"addXaxisAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:\"addYaxisAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:\"addPointAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:\"clearAnnotations\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:\"removeAnnotation\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:\"getChartArea\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-inner\")}},{key:\"getSeriesTotalXRange\",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:\"getHighestValueInSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new ea(this.ctx).getMinYMaxY(t).highestY}},{key:\"getLowestValueInSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new ea(this.ctx).getMinYMaxY(t).lowestY}},{key:\"getSeriesTotal\",value:function(){return this.w.globals.seriesTotals}},{key:\"toggleDataPointSelection\",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:\"zoomX\",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:\"setLocale\",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:\"dataURI\",value:function(t){return new Ji(this.ctx).dataURI(t)}},{key:\"getSvgString\",value:function(t){return new Ji(this.ctx).getSvgString(t)}},{key:\"exportToCSV\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Ji(this.ctx).exportToCSV(t)}},{key:\"paper\",value:function(){return this.w.globals.dom.Paper}},{key:\"_parentResizeCallback\",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:\"_windowResize\",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:\"_windowResizeHandler\",value:function(){var t=this.w.config.chart.redrawOnWindowResize;\"function\"==typeof t&&(t=t()),t&&this._windowResize()}}],[{key:\"getChartByID\",value:function(t){var e=v.escapeString(t);if(Apex._chartInstances){var i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}}},{key:\"initOnLoad\",value:function(){for(var e=document.querySelectorAll(\"[data-apexcharts]\"),i=0;i<e.length;i++){new t(e[i],JSON.parse(e[i].getAttribute(\"data-options\"))).render()}}},{key:\"exec\",value:function(t,e){var i=this.getChartByID(t);if(i){i.w.globals.isExecCalled=!0;var a=null;if(-1!==i.publicMethods.indexOf(e)){for(var s=arguments.length,r=new Array(s>2?s-2:0),n=2;n<s;n++)r[n-2]=arguments[n];a=i[e].apply(i,r)}return a}}},{key:\"merge\",value:function(t,e){return v.extend(t,e)}}]),t}();export{us as default};\n", "/* eslint no-console:0 */\n\nimport \"@hotwired/turbo-rails\"\nrequire(\"@rails/activestorage\").start()\nrequire(\"local-time\").start()\n\nimport \"./channels\"\nimport \"./controllers\"\nimport \"flowbite\"\nimport \"./src/**/*\"\n\nimport Alpine from 'alpinejs'\nwindow.Alpine = Alpine\nAlpine.start()\n\n// Import ApexCharts\nimport ApexCharts from 'apexcharts'\nwindow.ApexCharts = ApexCharts\n\n\n// this is needed so that when Turbo morphs the dom, existing Alpine elements are reinitialized\ndocument.addEventListener(\"turbo:morph\", () => {\n  document.querySelectorAll('[x-data]').forEach((el) => {\n    Alpine.initTree(el)\n  })\n})\n"],
  "mappings": "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AAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AACO,MAAM,UAAU;AAAA,QACnB,CAAC;AAAA,QACD,CAAC;AAAA,QACD,CAAC,GAAK,CAAG;AAAA,QACT;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;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AA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACtE;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,MAC1E;AACA,MAAM,YAAY;AAAA,QACd;AAAA,QAAG;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAC3E;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QACxE;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QACxE;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QACxE;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QACxE;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QACxE;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QACxE;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,Q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",
  "names": ["consumer", "data", "error", "handler", "consumer", "data", "s", "consumer", "s", "subscription", "a", "data", "__webpack_require__", "ClipboardActionCut", "fakeCopyAction", "options", "ClipboardActionCopy", "_typeof", "obj", "ClipboardActionDefault", "_classCallCheck", "_defineProperties", "i", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "Clipboard", "trigger", "destroy", "action", "module", "elements", "exports", "is", "range", "E", "data", "global", "exports", "sparkMd5", "module", "x", "k", "a", "b", "c", "d", "s", "i", "n", "hi", "j", "to", "end", "hex", "SparkMD5", "raw", "hash", "fileSlice", "FileChecksum", "start", "getMetaValue", "findElement", "findElements", "elements", "toArray", "dispatchEvent", "BlobRecord", "BlobUpload", "id", "DirectUpload", "error", "notify", "DirectUploadController", "inputSelector", "DirectUploadsController", "processingAttribute", "submitButtonsByForm", "started", "didClick", "didSubmitForm", "didSubmitRemoteElement", "handleFormSubmissionEvent", "disable", "enable", "submitForm", "autostart", "Array", "prototype", "find", "predicate", "this", "TypeError", "value", "list", "Object", "length", "thisArg", "arguments", "i", "call", "window", "CustomEvent", "event", "params", "bubbles", "cancelable", "detail", "undefined", "evt", "document", "createEvent", "initCustomEvent", "Event", "TributeEvents", "tribute", "events", "element", "boundKeydown", "keydown", "bind", "boundKeyup", "keyup", "boundInput", "input", "addEventListener", "removeEventListener", "instance", "shouldDeactivate", "isActive", "hideMenu", "commandEvent", "keys", "forEach", "o", "key", "keyCode", "callbacks", "toLowerCase", "inputEvent", "menu", "contains", "target", "li", "preventDefault", "stopPropagation", "nodeName", "parentNode", "Error", "selectItemAtIndex", "getAttribute", "current", "externalTrigger", "setTimeout", "updateSelection", "allowSpaces", "hasTrailingSpace", "autocompleteMode", "triggerChar", "getKeyCode", "isNaN", "trigger", "triggers", "charCodeAt", "mentionText", "collection", "menuShowMinLength", "showMenuFor", "eventKeyPressed", "el", "info", "range", "getTriggerInfo", "mentionTriggerChar", "selectedPath", "mentionSelectedPath", "selectedOffset", "mentionSelectedOffset", "e", "_this", "collectionItem", "item", "enter", "filteredItems", "menuSelected", "escape", "tab", "space", "spaceSelectsMatch", "up", "count", "selected", "setActiveLi", "scrollTop", "scrollHeight", "down", "index", "lis", "querySelectorAll", "parseInt", "classList", "add", "selectClass", "liClientRect", "getBoundingClientRect", "menuClientRect", "bottom", "scrollDistance", "top", "remove", "elem", "includeMargin", "height", "style", "currentStyle", "getComputedStyle", "parseFloat", "marginTop", "marginBottom", "t", "TributeMenuEvents", "menuEvents", "menuClickEvent", "click", "menuContainerScrollEvent", "debounce", "windowResizeEvent", "positionMenuAtCaret", "getDocument", "menuContainer", "func", "wait", "immediate", "timeout", "context", "_this2", "args", "callNow", "clearTimeout", "apply", "TributeRange", "iframe", "contentWindow", "scrollTo", "coordinates", "positionMenu", "cssText", "isContentEditable", "getContentEditableCaretPosition", "mentionPosition", "getTextAreaOrInputUnderlinePosition", "left", "right", "scrollIntoView", "menuDimensions", "width", "offsetWidth", "offsetHeight", "menuIsOffScreen", "isMenuOffScreen", "menuIsOffScreenHorizontally", "innerWidth", "menuIsOffScreenVertically", "innerHeight", "targetElement", "path", "offset", "childNodes", "nextSibling", "previousSibling", "sel", "getWindowSelection", "createRange", "setStart", "setEnd", "collapse", "removeAllRanges", "error", "addRange", "focus", "text", "requireLeadingSpace", "originalEvent", "replaceEvent", "replaceTextSuffix", "endPos", "pasteHtml", "myField", "textSuffix", "startPos", "substring", "selectionStart", "selectionEnd", "dispatchEvent", "html", "anchorNode", "deleteContents", "createElement", "innerHTML", "node", "lastNode", "frag", "createDocumentFragment", "firstChild", "appendChild", "insertNode", "cloneRange", "setStartAfter", "getSelection", "ctx", "ce", "contentEditable", "getNodePositionInParent", "push", "reverse", "getRangeAt", "startOffset", "selectedElem", "workingNodeContent", "textContent", "selectStartOffset", "textComponent", "wordsArray", "replace", "split", "trim", "menuAlreadyActive", "isAutocomplete", "selectionInfo", "getContentEditableSelectedPath", "effectiveRange", "getTextPrecedingCurrentSelection", "lastWordOfEffectiveRange", "getLastWordInText", "mentionSelectedElement", "mostRecentTriggerCharPos", "config", "c", "idx", "lastIndexWithLeadingSpace", "lastIndexOf", "test", "currentTriggerSnippet", "firstSnippetChar", "leadingSpace", "regex", "str", "reversedStr", "join", "cidx", "len", "firstChar", "match", "triggerIdx", "windowWidth", "windowHeight", "doc", "documentElement", "windowLeft", "pageXOffset", "scrollLeft", "clientLeft", "windowTop", "pageYOffset", "clientTop", "menuTop", "menuRight", "menuBottom", "menuLeft", "Math", "floor", "ceil", "dimensions", "position", "flipped", "isFirefox", "mozInnerScreenX", "div", "id", "body", "computed", "whiteSpace", "wordWrap", "visibility", "prop", "overflowY", "overflow", "span", "rect", "menuContainerIsBody", "offsetTop", "borderTopWidth", "fontSize", "offsetLeft", "borderLeftWidth", "getMenuDimensions", "parentHeight", "scrollStillAvailable", "removeChild", "selectedNodePosition", "clientRect", "elemTop", "elemBottom", "maxY", "targetY", "TributeSearch", "search", "pattern", "array", "filter", "string", "opts", "pre", "post", "compareString", "caseSensitive", "skip", "rendered", "score", "patternCache", "traverse", "render", "cache", "stringIndex", "patternIndex", "calculateScore", "slice", "best", "temp", "indexOf", "pop", "indices", "arr", "reduce", "prev", "extract", "original", "sort", "a", "b", "compare", "values", "h", "n", "f", "p", "containerClass", "g", "itemClass", "y", "T", "selectTemplate", "S", "k", "menuItemTemplate", "M", "lookup", "L", "fillAttr", "N", "D", "R", "noMatchTemplate", "H", "j", "z", "searchOpts", "X", "V", "menuItemLimit", "J", "Tribute", "defaultSelectTemplate", "defaultMenuItemTemplate", "console", "warn", "map", "jQuery", "get", "constructor", "NodeList", "HTMLCollection", "_attach", "hasAttribute", "ensureEditable", "setAttribute", "inputTypes", "wrapper", "ul", "className", "currentMentionTextSnapshot", "createMenu", "tributeMenu", "processValues", "items", "querySelector", "noMatchEvent", "fragment", "_findLiTarget", "movementY", "collectionIndex", "activeElement", "placeCaretAtEnd", "insertTextAtCursor", "insertAtCaret", "selectNodeContents", "createTextRange", "textRange", "moveToElementText", "select", "textNode", "createTextNode", "textarea", "scrollPos", "caretPos", "front", "back", "content", "replaceText", "replaceTriggerText", "newValues", "concat", "_append", "_detach", "unbind", "removeAttribute", "_this3", "_isActive", "val", "matchItem", "_a", "Konva", "m", "tr", "x", "y", "c", "s", "d", "m2", "m3", "m4", "m5", "a", "b", "e", "f", "r", "queue", "g", "i", "n", "_", "h", "l", "t2", "t3", "r2", "left", "right", "x2", "y2", "x3", "y3", "u", "pt", "p2", "start", "end", "pr", "n", "e", "Context", "a", "x", "y", "x2", "y2", "b", "c", "d", "f", "start", "end", "_a", "offset", "config", "e", "DD", "pos", "isString", "capitalize", "n", "SET", "idCounter", "Node", "config", "cache", "filter", "x", "y", "offset", "top", "n", "i", "e", "handler", "events", "t", "DD", "visible", "it", "at", "_a", "m", "size", "data", "no", "Node", "i", "fn", "no", "_a", "n", "top", "m", "config", "shapes", "STAGE", "MOUSELEAVE", "MOUSEENTER", "POINTERLEAVE", "POINTERENTER", "config", "id", "n", "p", "end", "i", "events", "DD", "x", "y", "Node", "config", "tr", "m", "start", "end", "n", "p", "_a", "size", "top", "o", "i", "e", "config", "c", "Node", "visible", "i", "p", "p3", "top", "now", "n", "a", "id", "i", "idCounter", "duration", "handler", "t", "p", "config", "i", "end", "start", "n", "Node", "b", "c", "d", "s", "a", "Konva", "Node", "DD", "Context", "x2", "y2", "t", "fa", "p", "n", "a", "b", "c", "d", "mt", "config", "x", "y", "i", "t", "n", "z", "i", "A", "B", "C", "b", "c", "u", "k", "error", "config", "ca", "n", "c", "p", "r", "data", "start", "end", "t", "x", "y", "i", "x2", "y2", "ii", "m", "u", "pt", "cs", "re", "j", "fa", "p2", "f", "v", "n", "offset", "Image", "_a", "config", "n", "x", "y", "n", "config", "set", "x", "y", "offset", "n", "x", "y", "stringToArray", "c", "data", "i", "e", "getDummyContext", "dummyContext", "_fillFunc", "_strokeFunc", "config", "CHANGE_KONVA", "LEFT", "SPACE", "RIGHT", "NONE", "ATTR_CHANGE_LIST", "attrChangeListLen", "n", "_a", "x", "y", "li", "_e", "max", "lineArray", "_fillFunc", "_strokeFunc", "EMPTY_STRING", "NORMAL", "config", "i", "stringToArray", "offset", "width", "e", "x", "y", "x", "y", "i", "ATTR_CHANGE_LIST", "TRANSFORM_CHANGE_STR", "e", "config", "node", "tr", "p", "self", "t", "_a", "offset", "Node", "p", "yi", "pr", "pa", "div", "i", "y", "x", "Blur", "Node", "data", "i", "Node", "data", "i", "data", "i", "Node", "_a", "_e", "data", "w", "h", "p", "i", "v", "y", "x", "r", "o", "Node", "data", "r", "g", "b", "i", "Node", "data", "i", "Node", "data", "v", "s", "h", "l", "rr", "gr", "br", "r", "g", "b", "a", "i", "data", "v", "s", "h", "rr", "gr", "br", "i", "r", "g", "b", "a", "Node", "data", "i", "x", "y", "i", "r", "g", "b", "a", "offset", "Node", "x", "y", "d", "p2", "m", "i", "a", "wt", "Node", "data", "i", "Node", "data", "x", "y", "i", "Node", "data", "i", "Node", "data", "i", "Node", "data", "i", "ia", "Node", "data", "i", "r", "g", "b", "d", "i", "r", "g", "b", "L", "data", "i", "Node", "Konva", "Image", "Konva", "id", "id", "error", "jstz", "get_date_offset", "offset", "lookup_key", "get_from_internationalization_api", "dst_dates", "find_dst_fold", "best_dst_match", "score_sample", "sample", "score", "j", "i", "get_by_dst", "get_rules", "check_has_dst", "rules", "determine", "require_jstz", "e", "t", "r", "n", "a", "i", "s", "o", "u", "l", "c", "d", "m", "h", "f", "g", "p", "y", "S", "v", "T", "b", "M", "D", "w", "E", "I", "C", "N", "A", "O", "$", "F", "Y", "k", "L", "W", "submitter", "i", "_", "elements", "fn", "config", "prefix", "location", "left", "right", "options", "error", "cookie", "id", "x", "y", "clone", "defaults", "ctx", "morphChildren", "findBestMatch", "e", "morphNode", "createMorphContext", "normalizeElement", "normalizeParent", "s", "n", "r", "render", "session", "visit", "size", "recentRequests", "Turbo", "document", "c", "createConsumer", "m", "x", "data", "submitter", "left", "right", "application", "error", "options", "_", "e", "filter", "fetch", "set", "size", "match", "oldValue", "left", "right", "_", "error", "_a", "constructor", "observer", "scope", "extend", "a", "b", "application", "logger", "elements", "element", "c", "n", "k", "v", "filter", "read", "write", "prefix", "now", "secondsSince", "ConnectionMonitor", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "consumer", "data", "error", "handler", "extend", "Subscription", "SubscriptionGuarantor", "s", "Subscriptions", "subscription", "Consumer", "createWebSocketURL", "a", "createConsumer", "getConfig", "createConsumer", "options", "a", "i", "error", "e", "_e", "error", "data", "error", "id", "start", "name", "style", "x", "y", "getComputedStyle", "getComputedStyle", "window", "min", "max", "v", "toPaddingObject", "options", "popperOffsets", "min", "max", "offset", "effect", "x", "y", "popper", "getComputedStyle", "options", "effect", "options", "window", "hash", "x", "y", "x", "y", "getComputedStyle", "getComputedStyle", "clippingParents", "getComputedStyle", "reference", "start", "options", "popperOffsets", "offset", "options", "placements", "placement", "a", "b", "options", "placements", "placement", "i", "start", "_loop", "_i", "checks", "offset", "options", "data", "x", "y", "options", "popperOffsets", "data", "offset", "min", "max", "start", "debounce", "fn", "merged", "defaultModifiers", "defaultOptions", "createPopper", "reference", "popper", "options", "m", "fn", "debounce", "destroy", "state", "effect", "noopFn", "BOX_CLASS", "CONTENT_CLASS", "BACKDROP_CLASS", "ARROW_CLASS", "SVG_ARROW_CLASS", "TOUCH_OPTIONS", "passive", "capture", "TIPPY_DEFAULT_APPEND_TO", "document", "body", "hasOwnProperty", "obj", "key", "call", "getValueAtIndexOrReturn", "value", "index", "defaultValue", "Array", "isArray", "v", "isType", "type", "str", "toString", "indexOf", "invokeWithArgsOrReturn", "args", "debounce", "fn", "ms", "timeout", "arg", "clearTimeout", "setTimeout", "removeProperties", "keys", "clone", "forEach", "splitBySpaces", "split", "filter", "Boolean", "normalizeToArray", "concat", "pushIfUnique", "arr", "push", "unique", "item", "getBasePlacement", "placement", "arrayFrom", "slice", "removeUndefinedProps", "Object", "reduce", "acc", "undefined", "div", "createElement", "isElement", "some", "isNodeList", "isMouseEvent", "isReferenceElement", "_tippy", "reference", "getArrayOfElements", "querySelectorAll", "setTransitionDuration", "els", "el", "style", "transitionDuration", "setVisibilityState", "state", "setAttribute", "getOwnerDocument", "elementOrElements", "element", "ownerDocument", "isCursorOutsideInteractiveBorder", "popperTreeData", "event", "clientX", "clientY", "every", "popperRect", "popperState", "props", "interactiveBorder", "basePlacement", "offsetData", "modifiersData", "offset", "topDistance", "top", "y", "bottomDistance", "bottom", "leftDistance", "left", "x", "rightDistance", "right", "exceedsTop", "exceedsBottom", "exceedsLeft", "exceedsRight", "updateTransitionEndListener", "box", "action", "listener", "method", "actualContains", "parent", "child", "target", "contains", "getRootNode", "host", "currentInput", "isTouch", "lastMouseMoveTime", "onDocumentTouchStart", "window", "performance", "addEventListener", "onDocumentMouseMove", "now", "removeEventListener", "onWindowBlur", "activeElement", "instance", "blur", "isVisible", "bindGlobalEventListeners", "isBrowser", "isIE11", "msCrypto", "createMemoryLeakWarning", "txt", "join", "clean", "spacesAndTabs", "lineStartWithSpaces", "replace", "trim", "getDevMessage", "message", "getFormattedMessage", "visitedMessages", "resetVisitedMessages", "Set", "warnWhen", "condition", "has", "add", "console", "warn", "errorWhen", "error", "validateTargets", "targets", "didPassFalsyValue", "didPassPlainObject", "prototype", "String", "pluginProps", "animateFill", "followCursor", "inlinePositioning", "sticky", "renderProps", "allowHTML", "animation", "arrow", "content", "inertia", "maxWidth", "role", "theme", "zIndex", "defaultProps", "appendTo", "aria", "expanded", "delay", "duration", "getReferenceClientRect", "hideOnClick", "ignoreAttributes", "interactive", "interactiveDebounce", "moveTransition", "onAfterUpdate", "onBeforeUpdate", "onCreate", "onDestroy", "onHidden", "onHide", "onMount", "onShow", "onShown", "onTrigger", "onUntrigger", "onClickOutside", "plugins", "popperOptions", "render", "showOnCreate", "touch", "trigger", "triggerTarget", "defaultKeys", "setDefaultProps", "partialProps", "validateProps", "getExtendedPassedProps", "passedProps", "plugin", "name", "getDataAttributeProps", "propKeys", "valueAsString", "getAttribute", "JSON", "parse", "e", "evaluateProps", "out", "prop", "nonPluginProps", "didPassUnknownProp", "length", "innerHTML", "dangerouslySetInnerHTML", "html", "createArrowElement", "className", "appendChild", "setContent", "textContent", "getChildren", "popper", "firstElementChild", "boxChildren", "children", "find", "node", "classList", "backdrop", "onUpdate", "prevProps", "nextProps", "removeAttribute", "removeChild", "$$tippy", "idCounter", "mouseMoveListeners", "mountedInstances", "createTippy", "showTimeout", "hideTimeout", "scheduleHideAnimationFrame", "isVisibleFromClick", "didHideDueToDocumentMouseDown", "didTouchMove", "ignoreOnFirstUpdate", "lastTriggerEvent", "currentTransitionEndListener", "onFirstUpdate", "listeners", "debouncedOnMouseMove", "onMouseMove", "currentTarget", "id", "popperInstance", "isEnabled", "isDestroyed", "isMounted", "isShown", "clearDelayTimeouts", "setProps", "show", "hide", "hideWithInteractivity", "enable", "disable", "unmount", "destroy", "pluginsHooks", "map", "hasAriaExpanded", "hasAttribute", "addListeners", "handleAriaExpandedAttribute", "handleStyles", "invokeHook", "scheduleShow", "getDocument", "getNormalizedTouchSettings", "getIsCustomTouchBehavior", "getIsDefaultRenderFn", "getCurrentTarget", "parentNode", "getDefaultTemplateChildren", "getDelay", "isShow", "fromHide", "pointerEvents", "hook", "shouldInvokePropsHook", "pluginHooks", "handleAriaContentAttribute", "attr", "nodes", "currentValue", "nextValue", "cleanupInteractiveMouseListeners", "onDocumentPress", "actualTarget", "composedPath", "removeDocumentPress", "onTouchMove", "onTouchStart", "addDocumentPress", "doc", "onTransitionedOut", "callback", "onTransitionEnd", "onTransitionedIn", "on", "eventType", "handler", "options", "onMouseLeave", "onBlurOrFocusOut", "removeListeners", "shouldScheduleClickHide", "isEventListenerStopped", "wasFocused", "scheduleHide", "isCursorOverReferenceOrPopper", "getNestedPopperTree", "getBoundingClientRect", "shouldBail", "relatedTarget", "createPopperInstance", "destroyPopperInstance", "computedReference", "contextElement", "tippyModifier", "enabled", "phase", "requires", "attributes", "modifiers", "padding", "adaptive", "createPopper", "mount", "nextElementSibling", "touchValue", "touchDelay", "requestAnimationFrame", "cancelAnimationFrame", "nestedPopper", "forceUpdate", "isAlreadyVisible", "isDisabled", "isTouchAndTouchDisabled", "visibility", "transition", "offsetHeight", "isAlreadyHidden", "i", "tippy", "optionalProps", "elements", "isSingleContentElement", "isMoreThanOneReferenceElement", "instances", "applyStylesModifier", "applyStyles", "effect", "state", "initialStyles", "popper", "position", "options", "strategy", "left", "top", "margin", "arrow", "reference", "Object", "assign", "elements", "style", "styles", "tippy", "setDefaultProps", "render", "ClipboardJS", "e", "global", "window", "supportsAdoptingStyleSheets", "ShadowRoot", "ShadyCSS", "nativeShadow", "Document", "prototype", "CSSStyleSheet", "constructionToken", "Symbol", "cssTagCache", "WeakMap", "CSSResult", "constructor", "cssText", "strings", "safeToken", "this", "Error", "_strings", "styleSheet", "_styleSheet", "cacheable", "length", "get", "replaceSync", "set", "toString", "unsafeCSS", "value", "String", "css", "values", "reduce", "acc", "v", "idx", "adoptStyles", "renderRoot", "styles", "adoptedStyleSheets", "map", "s", "forEach", "style", "document", "createElement", "nonce", "setAttribute", "textContent", "appendChild", "getCompatibleStyle", "sheet", "rule", "cssRules", "global", "window", "trustedTypes", "emptyStringForBooleanAttribute", "emptyScript", "polyfillSupport", "reactiveElementPolyfillSupport", "defaultConverter", "toAttribute", "value", "type", "Boolean", "Object", "Array", "JSON", "stringify", "fromAttribute", "fromValue", "Number", "parse", "e", "notEqual", "old", "defaultPropertyDeclaration", "attribute", "String", "converter", "reflect", "hasChanged", "finalized", "ReactiveElement", "HTMLElement", "constructor", "super", "this", "__instanceProperties", "Map", "isUpdatePending", "hasUpdated", "__reflectingProperty", "__initialize", "static", "initializer", "finalize", "_a", "_initializers", "push", "observedAttributes", "attributes", "elementProperties", "forEach", "v", "p", "attr", "__attributeNameForProperty", "__attributeToPropertyMap", "set", "name", "options", "state", "noAccessor", "prototype", "hasOwnProperty", "key", "Symbol", "descriptor", "getPropertyDescriptor", "defineProperty", "get", "oldValue", "requestUpdate", "configurable", "enumerable", "superCtor", "getPrototypeOf", "props", "properties", "propKeys", "getOwnPropertyNames", "getOwnPropertySymbols", "createProperty", "elementStyles", "finalizeStyles", "styles", "isArray", "Set", "flat", "Infinity", "reverse", "s", "unshift", "getCompatibleStyle", "toLowerCase", "__updatePromise", "Promise", "res", "enableUpdating", "_$changedProperties", "__saveInstanceProperties", "i", "addController", "controller", "__controllers", "renderRoot", "isConnected", "_b", "hostConnected", "call", "removeController", "splice", "indexOf", "_v", "createRenderRoot", "shadowRoot", "attachShadow", "shadowRootOptions", "adoptStyles", "connectedCallback", "c", "_requestedUpdate", "disconnectedCallback", "hostDisconnected", "attributeChangedCallback", "_old", "_$attributeToProperty", "__propertyToAttribute", "attrValue", "undefined", "removeAttribute", "setAttribute", "ctor", "propName", "getPropertyOptions", "shouldRequestUpdate", "has", "__reflectingProperties", "__enqueueUpdate", "async", "reject", "result", "scheduleUpdate", "performUpdate", "shouldUpdate", "changedProperties", "willUpdate", "hostUpdate", "update", "__markUpdated", "_$didUpdate", "_changedProperties", "hostUpdated", "firstUpdated", "updated", "updateComplete", "getUpdateComplete", "k", "mode", "_d", "reactiveElementVersions", "global", "window", "trustedTypes", "policy", "createPolicy", "createHTML", "s", "boundAttributeSuffix", "marker", "Math", "random", "String", "slice", "markerMatch", "nodeMarker", "d", "document", "createMarker", "createComment", "isPrimitive", "value", "isArray", "Array", "isIterable", "Symbol", "iterator", "SPACE_CHAR", "textEndRegex", "commentEndRegex", "comment2EndRegex", "tagEndRegex", "RegExp", "singleQuoteAttrEndRegex", "doubleQuoteAttrEndRegex", "rawTextElement", "tag", "type", "strings", "values", "_$litType$", "html", "svg", "noChange", "for", "nothing", "templateCache", "WeakMap", "walker", "createTreeWalker", "trustFromTemplateString", "tsa", "stringFromTSA", "hasOwnProperty", "Error", "getTemplateHtml", "l", "length", "attrNames", "rawTextEndRegex", "regex", "i", "attrName", "match", "attrNameEndIndex", "lastIndex", "exec", "test", "end", "startsWith", "push", "undefined", "Template", "constructor", "options", "node", "this", "parts", "nodeIndex", "attrNameIndex", "partCount", "el", "createElement", "currentNode", "content", "svgElement", "firstChild", "remove", "append", "childNodes", "nextNode", "nodeType", "hasAttributes", "attrsToRemove", "name", "getAttributeNames", "endsWith", "realName", "statics", "getAttribute", "toLowerCase", "split", "m", "index", "ctor", "PropertyPart", "BooleanAttributePart", "EventPart", "AttributePart", "removeAttribute", "tagName", "textContent", "emptyScript", "data", "indexOf", "static", "_options", "innerHTML", "resolveDirective", "part", "parent", "attributeIndex", "currentDirective", "_a", "__directives", "__directive", "nextDirectiveConstructor", "_b", "call", "_$initialize", "_c", "_d", "_$resolve", "TemplateInstance", "template", "_$parts", "_$disconnectableChildren", "_$template", "_$parent", "parentNode", "_$isConnected", "_clone", "fragment", "creationScope", "importNode", "partIndex", "templatePart", "ChildPart", "nextSibling", "ElementPart", "_update", "_$setValue", "startNode", "endNode", "_$committedValue", "_$startNode", "_$endNode", "__isConnected", "isConnected", "directiveParent", "_$clear", "_commitText", "_commitTemplateResult", "_commitNode", "_commitIterable", "_insert", "insertBefore", "createTextNode", "result", "_$getTemplate", "h", "instance", "get", "set", "itemParts", "itemPart", "item", "start", "from", "_$notifyConnectionChanged", "n", "setConnected", "element", "fill", "valueIndex", "noCommit", "change", "v", "_commitValue", "setAttribute", "emptyStringForBooleanAttribute", "super", "newListener", "oldListener", "shouldRemoveListener", "capture", "once", "passive", "shouldAddListener", "removeEventListener", "addEventListener", "handleEvent", "event", "host", "_$LH", "_boundAttributeSuffix", "_marker", "_markerMatch", "_HTML_RESULT", "_getTemplateHtml", "_TemplateInstance", "_isIterable", "_resolveDirective", "_ChildPart", "_AttributePart", "_BooleanAttributePart", "_EventPart", "_PropertyPart", "_ElementPart", "polyfillSupport", "litHtmlPolyfillSupport", "litHtmlVersions", "render", "container", "partOwnerNode", "renderBefore", "LitElement", "ReactiveElement", "constructor", "this", "renderOptions", "host", "__childPart", "createRenderRoot", "renderRoot", "super", "_a", "_b", "renderBefore", "firstChild", "update", "changedProperties", "value", "render", "hasUpdated", "isConnected", "connectedCallback", "setConnected", "disconnectedCallback", "noChange", "globalThis", "litElementHydrateSupport", "call", "polyfillSupport", "litElementPolyfillSupport", "_$changedProperties", "_c", "globalThis", "litElementVersions", "push", "customElement", "tagName", "classOrDescriptor", "clazz", "customElements", "define", "descriptor", "kind", "elements", "finisher", "standardProperty", "options", "element", "kind", "descriptor", "finisher", "clazz", "createProperty", "key", "Symbol", "placement", "originalKey", "initializer", "this", "call", "legacyProperty", "proto", "name", "constructor", "property", "protoOrDescriptor", "state", "options", "property", "slotAssignedElements", "_a", "window", "HTMLSlotElement", "prototype", "assignedElements", "slot", "opts", "assignedNodes", "filter", "node", "nodeType", "Node", "ELEMENT_NODE", "PartType", "ATTRIBUTE", "CHILD", "PROPERTY", "BOOLEAN_ATTRIBUTE", "EVENT", "ELEMENT", "directive", "c", "values", "_$litDirective$", "Directive", "constructor", "_partInfo", "_$isConnected", "this", "_$parent", "_$initialize", "part", "parent", "attributeIndex", "__part", "__attributeIndex", "_$resolve", "props", "update", "_part", "render", "_ChildPart", "ChildPart", "_$LH", "isSingleExpression", "part", "strings", "createMarker", "document", "createComment", "insertPart", "containerPart", "refPart", "container", "_$startNode", "parentNode", "refNode", "_$endNode", "startNode", "insertBefore", "endNode", "ChildPart", "options", "nextSibling", "oldParent", "_$parent", "parentChanged", "newConnectionState", "_a", "_$reparentDisconnectables", "call", "_$notifyConnectionChanged", "_$isConnected", "start", "n", "setChildPartValue", "value", "directiveParent", "_$setValue", "RESET_VALUE", "setCommittedValue", "_$committedValue", "getCommittedValue", "removePart", "end", "remove", "generateMap", "list", "start", "end", "map", "Map", "i", "set", "repeat", "directive", "Directive", "constructor", "partInfo", "super", "type", "PartType", "CHILD", "Error", "_getValuesAndKeys", "items", "keyFnOrTemplate", "template", "keyFn", "keys", "values", "index", "item", "render", "this", "update", "containerPart", "oldParts", "getCommittedValue", "newValues", "newKeys", "Array", "isArray", "_itemKeys", "oldKeys", "_a", "newParts", "newKeyToIndexMap", "oldKeyToIndexMap", "oldHead", "oldTail", "length", "newHead", "newTail", "setChildPartValue", "insertPart", "has", "oldIndex", "get", "oldPart", "newPart", "removePart", "setCommittedValue", "noChange", "live", "directive", "Directive", "constructor", "partInfo", "super", "type", "PartType", "PROPERTY", "ATTRIBUTE", "BOOLEAN_ATTRIBUTE", "Error", "isSingleExpression", "render", "value", "update", "part", "noChange", "nothing", "element", "name", "hasAttribute", "getAttribute", "String", "setCommittedValue", "notifyChildrenConnectedChanged", "parent", "isConnected", "children", "_$disconnectableChildren", "obj", "_b", "_a", "o", "e", "removeDisconnectableFromParent", "_$parent", "delete", "size", "addDisconnectableToParent", "Set", "has", "add", "installDisconnectAPI", "reparentDisconnectables", "newParent", "this", "notifyChildPartConnectedChanged", "isClearingValue", "fromPartIndex", "value", "_$committedValue", "Array", "isArray", "i", "length", "type", "PartType", "CHILD", "_c", "_$notifyConnectionChanged", "_d", "_$reparentDisconnectables", "AsyncDirective", "Directive", "constructor", "_$initialize", "part", "attributeIndex", "super", "_$isConnected", "_$AO", "isClearingDirective", "r", "reconnected", "call", "disconnected", "setValue", "isSingleExpression", "__part", "_$setValue", "newValues", "__attributeIndex", "createRef", "Ref", "lastElementForContextAndCallback", "WeakMap", "ref", "directive", "AsyncDirective", "render", "_ref", "nothing", "update", "part", "refChanged", "this", "_updateRefValue", "undefined", "_lastElementForRef", "_element", "_context", "_a", "options", "host", "element", "context", "globalThis", "lastElementForCallback", "get", "set", "call", "value", "t", "_b", "_c", "disconnected", "reconnected", "classMap", "directive", "Directive", "constructor", "partInfo", "super", "type", "PartType", "ATTRIBUTE", "name", "_a", "strings", "length", "Error", "render", "classInfo", "Object", "keys", "filter", "key", "join", "update", "part", "this", "_previousClasses", "Set", "_staticClasses", "split", "s", "has", "add", "classList", "element", "forEach", "remove", "delete", "value", "_b", "noChange", "i", "a2", "k", "code", "x", "scope", "eachUnbind", "handler", "y", "dispatch", "e", "_i", "a", "NinjaHeader", "s", "e", "n", "UnsafeHTMLDirective", "Directive", "constructor", "partInfo", "super", "this", "_value", "nothing", "type", "PartType", "CHILD", "Error", "directiveName", "render", "value", "_templateResult", "noChange", "strings", "raw", "_$litType$", "resultType", "values", "unsafeHTML", "directive", "__decorate", "c", "r", "d", "i", "Icon", "s", "__decorate", "e", "NinjaAction", "s", "o", "__decorate", "n", "e", "NinjaKeys", "s", "e", "options", "_a", "a", "m", "c", "l", "o", "n", "__decorate", "t", "Events", "Instances", "id", "Accordion", "options", "id", "i", "_a", "_b", "Default", "DefaultInstanceOptions", "Collapse", "options", "__assign", "Default", "DefaultInstanceOptions", "Carousel", "options", "__assign", "_a", "_b", "Default", "DefaultInstanceOptions", "Dismiss", "options", "__assign", "Default", "DefaultInstanceOptions", "Dropdown", "options", "__assign", "Default", "DefaultInstanceOptions", "Modal", "options", "__assign", "c", "_a", "handler", "Default", "DefaultInstanceOptions", "Drawer", "options", "__assign", "c", "_a", "handler", "Default", "DefaultInstanceOptions", "Tabs", "options", "__assign", "id", "t", "_a", "_b", "Default", "DefaultInstanceOptions", "Tooltip", "options", "__assign", "__spreadArray", "Default", "DefaultInstanceOptions", "Popover", "options", "__assign", "__spreadArray", "offset", "Default", "DefaultInstanceOptions", "Dial", "options", "__assign", "Default", "DefaultInstanceOptions", "InputCounter", "options", "__assign", "Default", "DefaultInstanceOptions", "CopyClipboard", "options", "__assign", "r", "a", "e", "n", "t", "o", "p", "l", "i", "u", "f", "hasProperty", "min", "max", "y", "m", "compareNames", "d", "D", "M", "fn", "addEventListener", "removeEventListener", "getComposedPath", "defaultOptions", "options", "config", "locales", "dt", "x", "View", "init", "DaysView", "start", "render", "range", "MonthsView", "YearsView", "id", "Picker", "main", "hide", "left", "top", "testFn", "onClickOutside", "clear", "Datepicker", "get", "destroy", "DateRangePicker", "Default", "DefaultInstanceOptions", "Datepicker", "options", "__assign", "data", "error", "a", "b", "div", "v", "prefix", "id", "i", "data", "error", "data", "p", "div", "error", "data", "error", "order", "i", "a", "b", "k", "e", "data", "p", "div", "e", "error", "append", "confirm", "data", "p", "b", "prefix", "size", "div", "f", "error", "i", "c", "t", "v", "div", "error", "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", "z", "i", "n", "a", "attachment", "attachmentCaption", "attachmentCaptionEditor", "attachmentMetadata", "attachmentMetadataContainer", "attachmentName", "attachmentProgress", "attachmentSize", "attachmentToolbar", "l", "h", "_", "c", "j", "V", "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", "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", "entries", "setPrototypeOf", "isFrozen", "getOwnPropertyDescriptor", "freeze", "seal", "create", "construct", "Reflect", "x", "fun", "thisValue", "Func", "arrayForEach", "unapply", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "arraySplice", "stringToLowerCase", "stringToString", "stringMatch", "stringReplace", "stringIndexOf", "indexOf", "stringTrim", "objectHasOwnProperty", "hasOwnProperty", "regExpTest", "typeErrorCreate", "func", "TypeError", "_len2", "_key2", "thisArg", "lastIndex", "addToSet", "set", "transformCaseFunc", "lcElement", "cleanArray", "clone", "newObject", "property", "lookupGetter", "desc", "t", "e", "r", "o", "s", "u", "d", "g", "m", "p", "f", "v", "A", "y", "C", "E", "S", "R", "k", "T", "w", "L", "D", "N", "I", "O", "F", "P", "M", "B", "W", "U", "q", "H", "J", "K", "G", "Y", "X", "$", "Z", "Q", "tt", "et", "it", "nt", "rt", "ot", "st", "at", "lt", "ct", "ut", "ht", "dt", "gt", "mt", "pt", "ft", "bt", "vt", "At", "yt", "xt", "Ct", "Et", "St", "Rt", "kt", "Tt", "wt", "Lt", "Dt", "Nt", "It", "Ot", "Ft", "Pt", "Mt", "Bt", "_t", "jt", "Wt", "Vt", "Ut", "zt", "qt", "DOMPurify", "addHook", "attrName", "forceKeepAttr", "DEFAULT_ALLOWED_ATTRIBUTES", "DEFAULT_FORBIDDEN_PROTOCOLS", "DEFAULT_FORBIDDEN_ELEMENTS", "HTMLSanitizer", "sanitizedElement", "sanitize", "sanitizedHtml", "getHTML", "outerHTML", "innerHTML", "sanitizer", "allowedAttributes", "forbiddenProtocols", "forbiddenElements", "purifyOptions", "createBodyElementForHTML", "sanitizeElements", "normalizeListElementNesting", "purifyConfig", "assign", "setConfig", "getBody", "walker", "nodesToRemove", "nextNode", "currentNode", "elementIsRemovable", "sanitizeElement", "hasAttribute", "protocol", "removeAttribute", "_ref", "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", "endsWithWhitespace", "previousPiece", "BlockView", "block", "createComment", "_getBlockConfig", "getLastAttribute", "textView", "shouldAddExtraNewlineElement", "isRTL", "getBlockBreakPosition", "DocumentView", "render", "sync", "elementStore", "setDocument", "shadowElement", "getBlocks", "isSynced", "elementsHaveEqualHTML", "fragment", "createDocumentFragmentForSync", "lastChild", "didSync", "findStoredElements", "createDocumentFragment", "storedElement", "replaceChild", "otherElement", "ignoreSpaces", "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", "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", "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", "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", "_this$delegate23", "_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", "internalToolbar", "_this$inputElement", "_this$ownerDocument2", "inputId", "nextElementSibling", "_this$editorControlle", "editorController", "_this$inputElement2", "_this$inputElement3", "defaultValue", "_this$editor", "attributeChangedCallback", "newValue", "isConnected", "reconnect", "_this$editorControlle2", "removeInternalToolbar", "_this$internalToolbar", "formDisabledCallback", "formResetCallback", "Trix", "VERSION", "version", "core", "models", "controllers", "observers", "customElements", "define", "Tribute", "error", "e", "range", "i", "import_activestorage", "e", "highlight", "error", "k", "i", "options", "e", "data", "id", "y", "config", "_", "data", "error", "data", "error", "order", "i", "e", "data", "e", "w", "a", "b", "l", "i", "min", "max", "n", "elements", "c", "error", "data", "max", "clone", "min", "add", "i", "data", "error", "max", "region", "x", "y", "elements", "events", "n", "self", "fn", "self", "queue", "plugin", "i", "start", "i", "code_points", "unicode_map", "set", "a", "b", "j", "filter", "clone", "a", "b", "options", "data", "self", "s", "a", "b", "id", "_", "fn", "timeout", "self", "trigger", "type", "stop", "addEvent", "options", "id", "iterate", "iterate", "i", "element", "elements", "el", "options", "data", "id", "iterate", "value", "filter", "input", "iterate", "self", "addEvent", "e", "options", "data", "escape", "fn", "hash", "events", "i", "end", "y", "j", "k", "n", "optgroup", "order", "a", "b", "id", "x", "label", "trigger", "top", "left", "addEvent", "target", "type", "callback", "options", "addEventListener", "input", "sync", "hash_key", "value", "get_hash", "preventDefault", "evt", "stop", "stopPropagation", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "plugin", "userOptions", "self", "orig_onOptionSelect", "onOptionSelect", "settings", "hideSelected", "cbOptions", "Object", "assign", "className", "checkedClassNames", "undefined", "uncheckedClassNames", "UpdateChecked", "checkbox", "toCheck", "checked", "classList", "remove", "add", "UpdateCheckbox", "option", "setTimeout", "HTMLInputElement", "contains", "hook", "orig_render_option", "render", "data", "escape_html", "rendered", "call", "addEventListener", "type", "hashed", "valueField", "items", "prepend", "on", "getOption", "removeItem", "dataset", "refreshOptions", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "plugin", "userOptions", "self", "options", "Object", "assign", "className", "title", "html", "data", "on", "button", "addEventListener", "evt", "isLocked", "clear", "settings", "mode", "allowEmptyOption", "addItem", "preventDefault", "stopPropagation", "control", "appendChild", "preventDefault", "evt", "stop", "stopPropagation", "addEvent", "target", "type", "callback", "options", "addEventListener", "iterate", "object", "Array", "isArray", "forEach", "key", "hasOwnProperty", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "setAttr", "el", "attrs", "val", "attr", "removeAttribute", "setAttribute", "insertAfter", "referenceNode", "newNode", "_referenceNode$parent", "parentNode", "insertBefore", "nextSibling", "_referenceNode$parent2", "isBefore", "_newNode", "previousElementSibling", "plugin", "self", "settings", "mode", "orig_lock", "lock", "orig_unlock", "unlock", "sortable", "drag_item", "hook", "orig_render_item", "render", "item", "data", "escape", "call", "mousedown", "dragStart", "setTimeout", "classList", "add", "dragOver", "moveitem", "dragLeave", "remove", "targetitem", "dragitem", "undefined", "dragend", "_drag_item", "querySelectorAll", "values", "control", "dataset", "value", "push", "setValue", "preventDefault", "evt", "stop", "stopPropagation", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "plugin", "userOptions", "self", "options", "Object", "assign", "title", "headerClass", "titleRowClass", "labelClass", "closeClass", "html", "data", "on", "header", "close_link", "addEventListener", "close", "dropdown", "insertBefore", "iterate", "object", "callback", "Array", "isArray", "forEach", "key", "hasOwnProperty", "removeClasses", "elmts", "classes", "norm_classes", "classesArray", "castAsArray", "map", "el", "cls", "classList", "remove", "args", "_classes", "trim", "split", "concat", "filter", "Boolean", "arg", "nodeIndex", "amongst", "nodeName", "i", "previousElementSibling", "matches", "plugin", "self", "hook", "new_pos", "settings", "mode", "control", "contains", "control_input", "items", "length", "Math", "max", "min", "caretPos", "isPending", "controlChildren", "child", "j", "insertAdjacentElement", "appendChild", "direction", "isFocused", "last_active", "getLastActive", "idx", "setCaret", "setActiveItem", "KEY_ESC", "KEY_TAB", "preventDefault", "evt", "stop", "stopPropagation", "addEvent", "target", "type", "callback", "options", "addEventListener", "iterate", "object", "Array", "isArray", "forEach", "key", "hasOwnProperty", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "addClasses", "elmts", "classes", "norm_classes", "classesArray", "castAsArray", "map", "el", "cls", "classList", "add", "args", "_classes", "split", "concat", "filter", "Boolean", "plugin", "self", "settings", "shouldOpen", "hook", "focus_node", "control", "control_input", "div", "append", "dropdown", "insertBefore", "placeholder", "on", "keyCode", "constants", "isOpen", "close", "clearActiveItems", "tabIndex", "onKeyDown", "call", "isDisabled", "focus", "orig_onBlur", "onBlur", "relatedTarget", "preventScroll", "addEvent", "target", "type", "callback", "options", "addEventListener", "plugin", "self", "on", "test_input", "document", "createElement", "control", "control_input", "style", "cssText", "wrapper", "appendChild", "transfer_styles", "style_name", "resize", "textContent", "value", "width", "clientWidth", "plugin", "self", "orig_deleteSelection", "deleteSelection", "hook", "evt", "activeItems", "length", "call", "plugin", "hook", "KEY_LEFT", "KEY_RIGHT", "parentMatch", "target", "selector", "wrapper", "matches", "parentNode", "nodeIndex", "el", "amongst", "nodeName", "i", "previousElementSibling", "plugin", "self", "orig_keydown", "onKeyDown", "hook", "evt", "index", "option", "options", "optgroup", "isOpen", "keyCode", "constants", "call", "ignoreHover", "activeOption", "previousSibling", "nextSibling", "querySelectorAll", "Math", "min", "length", "setActiveOption", "escape_html", "str", "replace", "preventDefault", "evt", "stop", "stopPropagation", "addEvent", "target", "type", "callback", "options", "addEventListener", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "plugin", "userOptions", "Object", "assign", "label", "title", "className", "append", "self", "html", "hook", "orig_render_item", "settings", "render", "item", "data", "escape", "call", "close_button", "appendChild", "isLocked", "shouldDelete", "removeItem", "refreshOptions", "inputState", "plugin", "userOptions", "self", "options", "Object", "assign", "text", "option", "settings", "labelField", "on", "value", "isFocused", "control_input", "trim", "setTextboxValue", "call", "iterate", "object", "callback", "Array", "isArray", "forEach", "key", "hasOwnProperty", "addClasses", "elmts", "classes", "norm_classes", "classesArray", "castAsArray", "map", "el", "cls", "classList", "add", "args", "_classes", "trim", "split", "concat", "filter", "Boolean", "arg", "plugin", "self", "orig_canLoad", "canLoad", "orig_clearActiveOption", "clearActiveOption", "orig_loadCallback", "loadCallback", "pagination", "dropdown_content", "loading_more", "load_more_opt", "default_values", "settings", "shouldLoadMore", "scroll_percent", "clientHeight", "scrollHeight", "scrollTop", "activeOption", "selectable", "index", "from", "indexOf", "length", "firstUrl", "sortField", "field", "canLoadMore", "query", "maxOptions", "children", "clearFilter", "option", "value", "items", "setNextUrl", "next_url", "getUrl", "clearPagination", "call", "hook", "options", "optgroups", "clearOptions", "first_option", "undefined", "dataset", "valueField", "lastValue", "render", "setAttribute", "querySelector", "optionClass", "append", "on", "Object", "keys", "assign", "no_more_results", "addEventListener", "load", "plugin", "data", "v", "e", "size", "b", "ts", "import_activestorage", "e", "error", "offset", "import_activestorage", "z", "max", "l", "a", "b", "x", "y", "W", "H", "e", "error", "zr", "k", "location", "e", "location", "data", "error", "e", "error", "error", "error", "prefix", "i", "data", "error", "duration", "e", "data", "offset", "data", "error", "b", "e", "visible", "offset", "id", "options", "data", "order", "prefix", "size", "div", "error", "data", "error", "data", "error", "v", "i", "size", "e", "div", "i", "error", "data", "error", "div", "error", "data", "FetchResponse", "interceptor", "prefix", "cookie", "FetchRequest", "options", "error", "fetch", "FetchResponse", "_", "options", "FetchRequest", "options", "FetchRequest", "options", "e", "r", "error", "div", "data", "t", "i", "location", "error", "location", "error", "prefix", "i", "elements", "e", "z", "s", "x", "V", "t", "s", "e", "i", "n", "T", "b", "a", "o", "r", "C", "v", "L", "I", "w", "g", "h", "c", "l", "d", "f", "m", "u", "p", "s", "debounce", "fn", "t", "e", "error", "_", "options", "_a", "config", "c", "i", "fn", "ts", "ts2", "config", "_i", "source", "_a", "__assign", "t", "s", "i", "n", "p", "r", "k", "a", "j", "self", "bind", "clear", "destroy", "set", "yr", "init", "triggerEvent", "_a", "fn", "config", "e", "defaults", "element", "handler", "options", "debounce", "triggerChange", "createEvent", "m", "c", "offset", "d", "month", "_", "x", "formats", "top", "left", "right", "b", "range", "data", "isKeyDown", "min", "max", "instances", "camelize", "value", "replace", "_", "char", "toUpperCase", "capitalize", "charAt", "slice", "dasherize", "toLowerCase", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "Array", "from", "reduce", "values", "getOwnStaticArrayValues", "forEach", "name", "add", "Set", "readInheritableStaticObjectPairs", "pairs", "push", "getOwnStaticObjectPairs", "Object", "getPrototypeOf", "reverse", "definition", "isArray", "keys", "map", "key", "extend", "extendWithReflect", "extended", "Reflect", "construct", "arguments", "new", "prototype", "create", "setPrototypeOf", "testReflectExtension", "a", "call", "b", "error", "ClassPropertiesBlessing", "classes", "properties", "classDefinition", "assign", "propertiesForClassDefinition", "get", "has", "attribute", "getAttributeName", "Error", "getAll", "TargetPropertiesBlessing", "targets", "targetDefinition", "propertiesForTargetDefinition", "target", "find", "identifier", "findAll", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "valueDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "attributeName", "data", "getAttributeNameForKey", "propertiesForValueDefinitionPair", "reader", "read", "writer", "write", "defaultValue", "set", "undefined", "delete", "hasCustomDefaultValue", "token", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "Boolean", "Number", "String", "parseValueTypeDefault", "toString", "parseValueTypeObject", "typeObject", "typeFromObject", "type", "defaultValueType", "default", "parseValueTypeDefinition", "typeFromDefaultValue", "typeFromConstant", "defaultValueForDefinition", "defaultValuesByType", "readers", "writers", "array", "boolean", "number", "object", "string", "JSON", "parse", "TypeError", "writeString", "writeJSON", "stringify", "Controller", "context", "shouldLoad", "application", "scope", "element", "initialize", "connect", "disconnect", "dispatch", "eventName", "detail", "prefix", "bubbles", "cancelable", "event", "CustomEvent", "dispatchEvent", "blessings", "kebabCase", "booleanOptions", "stringOptions", "numberOptions", "arrayOptions", "arrayOrStringOptions", "dateOptions", "dateFormats", "options", "date", "arrayOrString", "events", "elements", "mapping", "strftimeRegex", "RegExp", "join", "convertDateFormat", "format", "match", "StimulusFlatpickr", "config", "_initializeEvents", "_initializeOptions", "_initializeDateFormats", "fp", "flatpickr", "flatpickrElement", "_initializeElements", "inputTarget", "destroy", "hook", "bind", "optionType", "optionsCamelCase", "option", "optionKebab", "_handleDaysOfWeek", "disableDaysOfWeek", "_validateDaysOfWeek", "disable", "_disable", "enableDaysOfWeek", "enable", "_enable", "days", "day", "parseInt", "console", "disabledDays", "includes", "getDay", "enabledDays", "dateFormat", "val", "e", "hasInstanceTarget", "instanceTarget", "debounce", "fn", "dispatch", "nextRepaint", "nextEventLoopTick", "nextAnimationFrame", "id", "FetchResponse", "RequestInterceptor", "interceptor", "getCookie", "prefix", "cookie", "compact", "metaContent", "stringEntriesFromFormData", "mergeEntries", "FetchRequest", "options", "error", "_", "get", "post", "_toConsumableArray", "i", "allowTouchMove", "preventDefault", "e", "setOverflowHidden", "restoreOverflowSetting", "setPositionFixed", "restorePositionSetting", "y", "x", "isTargetElementTotallyScrolled", "handleScroll", "disableBodyScroll", "lock", "enableBodyScroll", "left", "right", "top", "bottom", "l", "u", "f", "p", "m", "x", "k", "a", "b", "c", "d", "s", "i", "n", "hi", "j", "to", "end", "hex", "SparkMD5", "raw", "hash", "start", "elements", "dispatchEvent", "DirectUpload", "error", "_", "range", "i", "set", "get", "e", "converter", "jstz", "e", "data", "i", "effect", "add2", "get", "initialize", "e", "error2", "cache", "effect3", "a", "b", "dispatch", "walk", "started", "start", "fn", "plugin2", "kebabCase", "hide", "start2", "end", "stages", "duration", "to", "debounce", "timeout", "reference", "plugin", "hasOwnProperty", "camelize", "_", "c", "capitalize", "effect2", "options", "get2", "l", "get3", "ownKeys", "v", "add", "r", "id", "on", "kebabCase2", "t", "e", "i", "a", "x", "s", "r", "m", "n", "o", "c", "l", "h", "g", "d", "u", "p", "f", "b", "v", "y", "w", "k", "A", "S", "C", "L", "M", "P", "I", "T", "z", "X", "R", "E", "Y", "H", "O", "F", "D", "_", "N", "W", "B", "U", "G", "V", "q", "Z", "$", "J", "Q", "K", "tt", "et", "it", "at", "st", "rt", "nt", "ot", "lt", "ht", "ct", "dt", "ut", "gt", "pt", "ft", "xt", "bt", "vt", "mt", "Gt", "yt", "wt", "kt", "At", "Ct", "St", "Lt", "Mt", "Pt", "It", "Tt", "zt", "Xt", "Rt", "Et", "Yt", "Ht", "Ot", "Ft", "Dt", "_t", "Nt", "Wt", "Bt", "jt", "Vt", "Ut", "qt", "Zt", "$t", "Jt", "Qt", "Kt", "te", "ee", "ie", "ae", "se", "re", "ne", "oe", "le", "he", "ce", "de", "ue", "ge", "pe", "fe", "xe", "be", "me", "ve", "ye", "we", "ke", "Ae", "Ce", "Se", "Le", "Me", "Pe", "Ie", "Te", "ze", "Xe", "Re", "Ee", "Ye", "Oe", "Ne", "_e", "He", "Fe", "De", "We", "Be", "Ge", "je", "Ve", "Ue", "qe", "Ze", "$e", "Je", "Qe", "Ke", "ti", "ei", "ii", "ai", "si", "ri", "ni", "oi", "li", "hi", "ci", "di", "ui", "gi", "pi", "fi", "xi", "bi", "mi", "vi", "yi", "wi", "ki", "Ai", "Ci", "Si", "Li", "Mi", "Pi", "Ii", "Ti", "zi", "Xi", "Ri", "Ei", "Yi", "Hi", "Oi", "Fi", "Di", "_i", "Ni", "Wi", "Bi", "Gi", "ji", "Vi", "Ui", "qi", "Zi", "$i", "Ji", "Qi", "Ki"]
}
