{
  "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/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_upload_controller.js", "../../javascript/controllers/mockup_uploader_controller.js", "../../javascript/controllers/mockup_video_options_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/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_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/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_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/view_toggle_controller.js", "../../javascript/controllers/zone_box_controller.js", "rails:/home/deployer/podzilla/releases/20260718022646/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/20260718022646/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// 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\"]\n  static values = { listingId: Number, selectedProductId: Number, currentSizes: Array, maxPrefixLength: { type: Number, default: 25 } }\n\n  openProductPicker() {\n    const modal = document.getElementById(\"product-picker-modal\")\n    if (modal) {\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      if (supportsSizePrefix) {\n        this.sizePrefixInputTarget.value = btn.dataset.suggestedPrefix || \"\"\n        this.sizePrefixInputTarget.focus()\n        this.updateSizePreview()\n      } else {\n        this.sizePrefixInputTarget.value = \"\"\n      }\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\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)}`\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\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    const mockupCount = this.element.querySelectorAll('input[name=\"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", "\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\"\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\"]\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.isValidFile(file)) {\n      this.uploadFile(file)\n    }\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.isValidFile(file)) {\n      this.uploadFile(file)\n    }\n    // Reset so the same file can be re-selected\n    e.target.value = \"\"\n  }\n\n  // -- Upload ---------------------------------------------------------------\n\n  uploadFile(file) {\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      if (response.ok) {\n        const html = await response.text()\n        Turbo.renderStreamMessage(html)\n      } else {\n        this.hideProgress()\n      }\n    } catch {\n      this.hideProgress()\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  isValidFile(file) {\n    const validExtensions = [\".png\", \".psd\", \".jpg\", \".jpeg\"]\n    return validExtensions.some(ext => file.name.toLowerCase().endsWith(ext))\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\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 form = this.element\n        const isCompact = form.classList.contains('space-y-4')\n\n        // Use Turbo to fetch and update the UI\n        fetch(`/products/variants?catalog_item_id=${catalogItemId}&is_compact=${isCompact}`, {\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            .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\"\n\nexport default class extends Controller {\n  static values = { url: String }\n\n  connect() {\n    this.pollInterval = setInterval(() => this.poll(), 3000)\n  }\n\n  disconnect() {\n    if (this.pollInterval) clearInterval(this.pollInterval)\n  }\n\n  async poll() {\n    try {\n      const response = await fetch(this.urlValue, {\n        headers: { \"Accept\": \"application/json\" }\n      })\n      if (!response.ok) return\n      const data = await response.json()\n      if (data.status !== \"pushing\" && data.status !== \"updating\") {\n        clearInterval(this.pollInterval)\n        window.location.reload()\n      }\n    } catch {\n      // Retry on next interval\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 = { url: String, paramKey: { type: String, default: \"workflow_status_ids\" } }\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  updatePositions() {\n    this.positionTargets.forEach((el, index) => {\n      el.textContent = index\n    })\n  }\n\n  saveOrder() {\n    const orderedIds = this.itemTargets.map(item => item.dataset.id)\n    const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.content\n\n    fetch(this.urlValue, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"X-CSRF-Token\": csrfToken,\n        \"Accept\": \"application/json\"\n      },\n      body: JSON.stringify({ [this.paramKeyValue]: orderedIds })\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\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\",\n    // Count badges\n    \"accountCount\", \"priorityCount\", \"categoryCount\",\n    // Search inputs\n    \"accountSearch\",\n    // Filter items\n    \"accountItem\"\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    // 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    // Priority count\n    if (this.hasPriorityCountTarget) {\n      const count = this.formTarget.querySelectorAll('input[name=\"priorities[]\"]:checked').length\n      this.updateCountBadge(this.priorityCountTarget, count)\n    }\n\n    // Category count\n    if (this.hasCategoryCountTarget) {\n      const count = this.formTarget.querySelectorAll('input[name=\"categories[]\"]:checked').length\n      this.updateCountBadge(this.categoryCountTarget, 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// 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\", \"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.\n  toggleAll() {\n    if (!this.hasSelectAllTarget) return\n\n    this.checkboxTargets.forEach((checkbox) => { checkbox.checked = this.selectAllTarget.checked })\n    this.updateSummary()\n  }\n\n  // Reconciles the select-all state and count after an individual change.\n  sync() {\n    this.syncSelectAll()\n    this.updateSummary()\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// 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 './filter_manager_controller.js';import * as module25 from './flash_clear_controller.js';import * as module26 from './form_controller.js';import * as module27 from './gift_box_form_controller.js';import * as module28 from './gift_box_packing_station_controller.js';import * as module29 from './gift_box_product_picker_controller.js';import * as module30 from './gift_box_template_form_controller.js';import * as module31 from './help_feedback_controller.js';import * as module32 from './inline_edit_controller.js';import * as module33 from './inventory_popover_controller.js';import * as module34 from './kiosk_keypad_controller.js';import * as module35 from './kiosk_reset_controller.js';import * as module36 from './lightbox_controller.js';import * as module37 from './line_items_controller.js';import * as module38 from './linked_row_controller.js';import * as module39 from './listing_builder_controller.js';import * as module40 from './listing_images_controller.js';import * as module41 from './listing_validator_controller.js';import * as module42 from './manual_order_controller.js';import * as module43 from './manual_order_variant_controller.js';import * as module44 from './mentions_controller.js';import * as module45 from './mobile_menu_controller.js';import * as module46 from './mockup_batch_poll_controller.js';import * as module47 from './mockup_output_size_controller.js';import * as module48 from './mockup_upload_controller.js';import * as module49 from './mockup_uploader_controller.js';import * as module50 from './mockup_video_options_controller.js';import * as module51 from './modal_controller.js';import * as module52 from './nav_dropdown_controller.js';import * as module53 from './notifications_controller.js';import * as module54 from './order_item_controller.js';import * as module55 from './overlay_editor_controller.js';import * as module56 from './pack_station_controller.js';import * as module57 from './paddle_controller.js';import * as module58 from './pagy_initializer_controller.js';import * as module59 from './paypal_controller.js';import * as module60 from './persistent_dropdown_controller.js';import * as module61 from './pick_list_filter_controller.js';import * as module62 from './pick_list_scanner_controller.js';import * as module63 from './placement_editor_controller.js';import * as module64 from './po_filter_controller.js';import * as module65 from './po_line_item_type_controller.js';import * as module66 from './pricing_controller.js';import * as module67 from './print_file_drop_controller.js';import * as module68 from './print_file_editor_controller.js';import * as module69 from './print_file_render_poll_controller.js';import * as module70 from './print_files_controller.js';import * as module71 from './print_locations_controller.js';import * as module72 from './print_station_controller.js';import * as module73 from './product_form_sidebar_controller.js';import * as module74 from './product_variant_controller.js';import * as module75 from './production_dashboard_controller.js';import * as module76 from './production_station_controller.js';import * as module77 from './profile_sync_controller.js';import * as module78 from './push_status_controller.js';import * as module79 from './qc_station_controller.js';import * as module80 from './receiving_station_controller.js';import * as module81 from './remote_modal_controller.js';import * as module82 from './removable_controller.js';import * as module83 from './removals_controller.js';import * as module84 from './reset_form_controller.js';import * as module85 from './scroll_tabs_controller.js';import * as module86 from './search_filter_controller.js';import * as module87 from './section_nav_controller.js';import * as module88 from './select_controller.js';import * as module89 from './selecteds_action_controller.js';import * as module90 from './send_email_confirm_controller.js';import * as module91 from './shipping_toggle_controller.js';import * as module92 from './sidebar_controller.js';import * as module93 from './simple_modal_controller.js';import * as module94 from './size_prefix_preview_controller.js';import * as module95 from './sortable_list_controller.js';import * as module96 from './ss_inventory_controller.js';import * as module97 from './ss_refresh_controller.js';import * as module98 from './ss_variant_import_controller.js';import * as module99 from './status_dropdown_controller.js';import * as module100 from './sticky_toc_controller.js';import * as module101 from './stripe_controller.js';import * as module102 from './submit_guard_controller.js';import * as module103 from './submit_spinner_controller.js';import * as module104 from './support_ticket_filter_controller.js';import * as module105 from './tabbed_interface_controller.js';import * as module106 from './taxonomy_selector_controller.js';import * as module107 from './template_layer_form_controller.js';import * as module108 from './template_layer_inline_controller.js';import * as module109 from './template_selection_controller.js';import * as module110 from './theme_controller.js';import * as module111 from './toast_controller.js';import * as module112 from './tooltip_controller.js';import * as module113 from './turbo_controller.js';import * as module114 from './turbo_native/sign_out_controller.js';import * as module115 from './turnstile_controller.js';import * as module116 from './user_autocomplete_controller.js';import * as module117 from './variant_counter_controller.js';import * as module118 from './variant_price_edit_controller.js';import * as module119 from './variant_print_files_color_controller.js';import * as module120 from './variant_print_files_controller.js';import * as module121 from './variant_sku_manager_controller.js';import * as module122 from './view_toggle_controller.js';import * as module123 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: 'filter-manager', module: module24, filename: 'filter_manager_controller.js'},{name: 'flash-clear', module: module25, filename: 'flash_clear_controller.js'},{name: 'form', module: module26, filename: 'form_controller.js'},{name: 'gift-box-form', module: module27, filename: 'gift_box_form_controller.js'},{name: 'gift-box-packing-station', module: module28, filename: 'gift_box_packing_station_controller.js'},{name: 'gift-box-product-picker', module: module29, filename: 'gift_box_product_picker_controller.js'},{name: 'gift-box-template-form', module: module30, filename: 'gift_box_template_form_controller.js'},{name: 'help-feedback', module: module31, filename: 'help_feedback_controller.js'},{name: 'inline-edit', module: module32, filename: 'inline_edit_controller.js'},{name: 'inventory-popover', module: module33, filename: 'inventory_popover_controller.js'},{name: 'kiosk-keypad', module: module34, filename: 'kiosk_keypad_controller.js'},{name: 'kiosk-reset', module: module35, filename: 'kiosk_reset_controller.js'},{name: 'lightbox', module: module36, filename: 'lightbox_controller.js'},{name: 'line-items', module: module37, filename: 'line_items_controller.js'},{name: 'linked-row', module: module38, filename: 'linked_row_controller.js'},{name: 'listing-builder', module: module39, filename: 'listing_builder_controller.js'},{name: 'listing-images', module: module40, filename: 'listing_images_controller.js'},{name: 'listing-validator', module: module41, filename: 'listing_validator_controller.js'},{name: 'manual-order', module: module42, filename: 'manual_order_controller.js'},{name: 'manual-order-variant', module: module43, filename: 'manual_order_variant_controller.js'},{name: 'mentions', module: module44, filename: 'mentions_controller.js'},{name: 'mobile-menu', module: module45, filename: 'mobile_menu_controller.js'},{name: 'mockup-batch-poll', module: module46, filename: 'mockup_batch_poll_controller.js'},{name: 'mockup-output-size', module: module47, filename: 'mockup_output_size_controller.js'},{name: 'mockup-upload', module: module48, filename: 'mockup_upload_controller.js'},{name: 'mockup-uploader', module: module49, filename: 'mockup_uploader_controller.js'},{name: 'mockup-video-options', module: module50, filename: 'mockup_video_options_controller.js'},{name: 'modal', module: module51, filename: 'modal_controller.js'},{name: 'nav-dropdown', module: module52, filename: 'nav_dropdown_controller.js'},{name: 'notifications', module: module53, filename: 'notifications_controller.js'},{name: 'order-item', module: module54, filename: 'order_item_controller.js'},{name: 'overlay-editor', module: module55, filename: 'overlay_editor_controller.js'},{name: 'pack-station', module: module56, filename: 'pack_station_controller.js'},{name: 'paddle', module: module57, filename: 'paddle_controller.js'},{name: 'pagy-initializer', module: module58, filename: 'pagy_initializer_controller.js'},{name: 'paypal', module: module59, filename: 'paypal_controller.js'},{name: 'persistent-dropdown', module: module60, filename: 'persistent_dropdown_controller.js'},{name: 'pick-list-filter', module: module61, filename: 'pick_list_filter_controller.js'},{name: 'pick-list-scanner', module: module62, filename: 'pick_list_scanner_controller.js'},{name: 'placement-editor', module: module63, filename: 'placement_editor_controller.js'},{name: 'po-filter', module: module64, filename: 'po_filter_controller.js'},{name: 'po-line-item-type', module: module65, filename: 'po_line_item_type_controller.js'},{name: 'pricing', module: module66, filename: 'pricing_controller.js'},{name: 'print-file-drop', module: module67, filename: 'print_file_drop_controller.js'},{name: 'print-file-editor', module: module68, filename: 'print_file_editor_controller.js'},{name: 'print-file-render-poll', module: module69, filename: 'print_file_render_poll_controller.js'},{name: 'print-files', module: module70, filename: 'print_files_controller.js'},{name: 'print-locations', module: module71, filename: 'print_locations_controller.js'},{name: 'print-station', module: module72, filename: 'print_station_controller.js'},{name: 'product-form-sidebar', module: module73, filename: 'product_form_sidebar_controller.js'},{name: 'product-variant', module: module74, filename: 'product_variant_controller.js'},{name: 'production-dashboard', module: module75, filename: 'production_dashboard_controller.js'},{name: 'production-station', module: module76, filename: 'production_station_controller.js'},{name: 'profile-sync', module: module77, filename: 'profile_sync_controller.js'},{name: 'push-status', module: module78, filename: 'push_status_controller.js'},{name: 'qc-station', module: module79, filename: 'qc_station_controller.js'},{name: 'receiving-station', module: module80, filename: 'receiving_station_controller.js'},{name: 'remote-modal', module: module81, filename: 'remote_modal_controller.js'},{name: 'removable', module: module82, filename: 'removable_controller.js'},{name: 'removals', module: module83, filename: 'removals_controller.js'},{name: 'reset-form', module: module84, filename: 'reset_form_controller.js'},{name: 'scroll-tabs', module: module85, filename: 'scroll_tabs_controller.js'},{name: 'search-filter', module: module86, filename: 'search_filter_controller.js'},{name: 'section-nav', module: module87, filename: 'section_nav_controller.js'},{name: 'select', module: module88, filename: 'select_controller.js'},{name: 'selecteds-action', module: module89, filename: 'selecteds_action_controller.js'},{name: 'send-email-confirm', module: module90, filename: 'send_email_confirm_controller.js'},{name: 'shipping-toggle', module: module91, filename: 'shipping_toggle_controller.js'},{name: 'sidebar', module: module92, filename: 'sidebar_controller.js'},{name: 'simple-modal', module: module93, filename: 'simple_modal_controller.js'},{name: 'size-prefix-preview', module: module94, filename: 'size_prefix_preview_controller.js'},{name: 'sortable-list', module: module95, filename: 'sortable_list_controller.js'},{name: 'ss-inventory', module: module96, filename: 'ss_inventory_controller.js'},{name: 'ss-refresh', module: module97, filename: 'ss_refresh_controller.js'},{name: 'ss-variant-import', module: module98, filename: 'ss_variant_import_controller.js'},{name: 'status-dropdown', module: module99, filename: 'status_dropdown_controller.js'},{name: 'sticky-toc', module: module100, filename: 'sticky_toc_controller.js'},{name: 'stripe', module: module101, filename: 'stripe_controller.js'},{name: 'submit-guard', module: module102, filename: 'submit_guard_controller.js'},{name: 'submit-spinner', module: module103, filename: 'submit_spinner_controller.js'},{name: 'support-ticket-filter', module: module104, filename: 'support_ticket_filter_controller.js'},{name: 'tabbed-interface', module: module105, filename: 'tabbed_interface_controller.js'},{name: 'taxonomy-selector', module: module106, filename: 'taxonomy_selector_controller.js'},{name: 'template-layer-form', module: module107, filename: 'template_layer_form_controller.js'},{name: 'template-layer-inline', module: module108, filename: 'template_layer_inline_controller.js'},{name: 'template-selection', module: module109, filename: 'template_selection_controller.js'},{name: 'theme', module: module110, filename: 'theme_controller.js'},{name: 'toast', module: module111, filename: 'toast_controller.js'},{name: 'tooltip', module: module112, filename: 'tooltip_controller.js'},{name: 'turbo', module: module113, filename: 'turbo_controller.js'},{name: 'turbo-native--sign-out', module: module114, filename: 'turbo_native/sign_out_controller.js'},{name: 'turnstile', module: module115, filename: 'turnstile_controller.js'},{name: 'user-autocomplete', module: module116, filename: 'user_autocomplete_controller.js'},{name: 'variant-counter', module: module117, filename: 'variant_counter_controller.js'},{name: 'variant-price-edit', module: module118, filename: 'variant_price_edit_controller.js'},{name: 'variant-print-files-color', module: module119, filename: 'variant_print_files_color_controller.js'},{name: 'variant-print-files', module: module120, filename: 'variant_print_files_controller.js'},{name: 'variant-sku-manager', module: module121, filename: 'variant_sku_manager_controller.js'},{name: 'view-toggle', module: module122, filename: 'view_toggle_controller.js'},{name: 'zone-box', module: module123, 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 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", "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;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AACO,MAAM,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAClE,MAAM,oBAAoB,CAAC,IAAI,IAAIA,OAAM;AAC5C,YAAI;AACJ,YAAI;AACJ,cAAMC,MAAI;AACV,cAAMC,KAAIF,KAAI;AACd,cAAM;AACN,iBAASG,KAAI,GAAGA,KAAIF,KAAGE,MAAK;AACxB,uBAAaD,KAAI,QAAQD,GAAC,EAAEE,EAAC,IAAID;AACjC,iBAAO,QAAQD,GAAC,EAAEE,EAAC,IAAI,MAAM,IAAI,IAAI,UAAU;AAAA,QACnD;AACA,eAAOD,KAAI;AAAA,MACf;AACO,MAAM,wBAAwB,CAAC,IAAI,IAAIF,OAAM;AAChD,YAAIA,OAAM,QAAW;AACjB,UAAAA,KAAI;AAAA,QACR;AACA,cAAM,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AACnC,cAAM,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AACnC,cAAM,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;AAC/B,cAAM,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;AAC/B,cAAMI,KAAI,KAAK,KAAK,KAAK,KAAK;AAC9B,cAAMC,KAAI,KAAK,KAAK,KAAK,KAAK;AAC9B,cAAMC,KAAI,KAAK,KAAK,KAAK;AACzB,YAAIF,OAAM,GAAG;AACT,iBAAQJ,KAAI,KAAK,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AAAA,QACjF;AACA,cAAMO,KAAIF,MAAK,IAAID;AACnB,cAAMI,KAAIF,KAAIF;AACd,cAAMK,KAAIT,KAAIO;AACd,cAAMG,KAAIF,KAAID,KAAIA;AAClB,cAAM,MAAME,KAAIA,KAAIC,KAAI,IAAI,KAAK,KAAKD,KAAIA,KAAIC,EAAC,IAAI;AACnD,cAAM,MAAMH,KAAIA,KAAIG,KAAI,IAAI,KAAK,KAAKH,KAAIA,KAAIG,EAAC,IAAI;AACnD,cAAM,OAAOH,KAAI,KAAK,KAAKA,KAAIA,KAAIG,EAAC,MAAM,IACpCA,KAAI,KAAK,IAAI,KAAK,KAAKD,KAAI,QAAQF,KAAI,IAAI,CAAC,IAC5C;AACN,eAAQ,KAAK,KAAKH,EAAC,IAAI,KAAMK,KAAI,MAAMF,KAAI,MAAM;AAAA,MACrD;AAOA,MAAM,gBAAgB,CAAC,YAAYP,IAAG,OAAO;AACzC,cAAMC,MAAI,GAAG,SAAS;AACtB,YAAI;AACJ,YAAI;AACJ,YAAIA,QAAM,GAAG;AACT,iBAAO;AAAA,QACX;AACA,YAAI,eAAe,GAAG;AAClB,kBAAQ;AACR,mBAASS,KAAI,GAAGA,MAAKT,KAAGS,MAAK;AACzB,qBACI,qBAAqBT,GAAC,EAAES,EAAC,IACrB,KAAK,IAAI,IAAIV,IAAGC,MAAIS,EAAC,IACrB,KAAK,IAAIV,IAAGU,EAAC,IACb,GAAGA,EAAC;AAAA,UAChB;AACA,iBAAO;AAAA,QACX,OACK;AACD,gBAAM,IAAI,MAAMT,GAAC;AACjB,mBAASS,KAAI,GAAGA,KAAIT,KAAGS,MAAK;AACxB,gBAAIA,EAAC,IAAIT,OAAK,GAAGS,KAAI,CAAC,IAAI,GAAGA,EAAC;AAAA,UAClC;AACA,iBAAO,cAAc,aAAa,GAAGV,IAAG,GAAG;AAAA,QAC/C;AAAA,MACJ;AACO,MAAM,WAAW,CAAC,QAAQ,aAAa,SAAS;AACnD,YAAIW,SAAQ;AACZ,YAAIX,KAAI,SAAS;AACjB,YAAI,QAAQ,SAAS,KAAKA,EAAC,KAAK;AAChC,YAAI,gBAAgB;AACpB,eAAOW,SAAQ,MAAO;AAClB,gBAAM,mBAAmB,KAAKX,KAAI,IAAI;AACtC,gBAAM,kBAAkB,KAAK,IAAI,SAAS,gBAAgB,IAAI;AAC9D,cAAI,kBAAkBW,QAAO;AACzB,YAAAA,SAAQ;AACR,YAAAX,MAAK;AAAA,UACT,OACK;AACD,kBAAM,mBAAmB,KAAKA,KAAI,IAAI;AACtC,kBAAM,kBAAkB,KAAK,IAAI,SAAS,gBAAgB,IAAI;AAC9D,gBAAI,kBAAkBW,QAAO;AACzB,cAAAA,SAAQ;AACR,cAAAX,MAAK;AAAA,YACT,OACK;AACD,sBAAQ;AAAA,YACZ;AAAA,UACJ;AACA;AACA,cAAI,gBAAgB,KAAK;AACrB;AAAA,UACJ;AAAA,QACJ;AACA,eAAOA;AAAA,MACX;AAAA;AAAA;;;AC/wBA,MAIa;AAJb;AAAA;AAAA;AACA;AACA;AACA;AACO,MAAM,OAAN,MAAM,cAAa,MAAM;AAAA,QAC5B,YAAYY,SAAQ;AAChB,gBAAMA,OAAM;AACZ,eAAK,YAAY,CAAC;AAClB,eAAK,aAAa;AAClB,eAAK,mBAAmB;AACxB,eAAK,GAAG,oBAAoB,WAAY;AACpC,iBAAK,mBAAmB;AAAA,UAC5B,CAAC;AAAA,QACL;AAAA,QACA,qBAAqB;AACjB,eAAK,YAAY,MAAK,cAAc,KAAK,KAAK,CAAC;AAC/C,eAAK,aAAa,MAAK,cAAc,KAAK,SAAS;AAAA,QACvD;AAAA,QACA,WAAW,SAAS;AAChB,gBAAMC,MAAK,KAAK;AAChB,kBAAQ,UAAU;AAClB,cAAI,WAAW;AACf,mBAASC,MAAI,GAAGA,MAAID,IAAG,QAAQC,OAAK;AAChC,kBAAMC,KAAIF,IAAGC,GAAC,EAAE;AAChB,kBAAME,KAAIH,IAAGC,GAAC,EAAE;AAChB,oBAAQC,IAAG;AAAA,cACP,KAAK;AACD,wBAAQ,OAAOC,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AACzB;AAAA,cACJ,KAAK;AACD,wBAAQ,OAAOA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AACzB;AAAA,cACJ,KAAK;AACD,wBAAQ,cAAcA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AACxD;AAAA,cACJ,KAAK;AACD,wBAAQ,iBAAiBA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAC/C;AAAA,cACJ,KAAK;AACD,sBAAM,KAAKA,GAAE,CAAC,GAAG,KAAKA,GAAE,CAAC,GAAG,KAAKA,GAAE,CAAC,GAAG,KAAKA,GAAE,CAAC,GAAG,QAAQA,GAAE,CAAC,GAAG,SAASA,GAAE,CAAC,GAAG,MAAMA,GAAE,CAAC,GAAG,KAAKA,GAAE,CAAC;AACnG,sBAAMC,KAAI,KAAK,KAAK,KAAK;AACzB,sBAAM,SAAS,KAAK,KAAK,IAAI,KAAK;AAClC,sBAAM,SAAS,KAAK,KAAK,KAAK,KAAK;AACnC,wBAAQ,UAAU,IAAI,EAAE;AACxB,wBAAQ,OAAO,GAAG;AAClB,wBAAQ,MAAM,QAAQ,MAAM;AAC5B,wBAAQ,IAAI,GAAG,GAAGA,IAAG,OAAO,QAAQ,QAAQ,IAAI,EAAE;AAClD,wBAAQ,MAAM,IAAI,QAAQ,IAAI,MAAM;AACpC,wBAAQ,OAAO,CAAC,GAAG;AACnB,wBAAQ,UAAU,CAAC,IAAI,CAAC,EAAE;AAC1B;AAAA,cACJ,KAAK;AACD,2BAAW;AACX,wBAAQ,UAAU;AAClB;AAAA,YACR;AAAA,UACJ;AACA,cAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,GAAG;AAC9B,oBAAQ,YAAY,IAAI;AAAA,UAC5B,OACK;AACD,oBAAQ,gBAAgB,IAAI;AAAA,UAChC;AAAA,QACJ;AAAA,QACA,cAAc;AACV,cAAI,SAAS,CAAC;AACd,eAAK,UAAU,QAAQ,SAAUC,OAAM;AACnC,gBAAIA,MAAK,YAAY,KAAK;AACtB,oBAAMC,SAAQD,MAAK,OAAO,CAAC;AAC3B,oBAAM,SAASA,MAAK,OAAO,CAAC;AAC5B,oBAAME,OAAMF,MAAK,OAAO,CAAC,IAAI;AAC7B,kBAAI,MAAM,KAAK,KAAK;AACpB,kBAAI,KAAK,IAAIC,SAAQC,IAAG,IAAI,KAAK;AAC7B,sBAAM,KAAK,IAAID,SAAQC,IAAG;AAAA,cAC9B;AACA,kBAAI,SAAS,GAAG;AACZ,yBAASC,KAAIF,SAAQ,KAAKE,KAAID,MAAKC,MAAK,KAAK;AACzC,wBAAM,QAAQ,MAAK,wBAAwBH,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,GAAGG,IAAG,CAAC;AAC/G,yBAAO,KAAK,MAAM,GAAG,MAAM,CAAC;AAAA,gBAChC;AAAA,cACJ,OACK;AACD,yBAASA,KAAIF,SAAQ,KAAKE,KAAID,MAAKC,MAAK,KAAK;AACzC,wBAAM,QAAQ,MAAK,wBAAwBH,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,GAAGG,IAAG,CAAC;AAC/G,yBAAO,KAAK,MAAM,GAAG,MAAM,CAAC;AAAA,gBAChC;AAAA,cACJ;AAAA,YACJ,WACSH,MAAK,YAAY,KAAK;AAC3B,uBAASG,KAAI,GAAKA,MAAK,GAAGA,MAAK,MAAM;AACjC,sBAAM,QAAQ,MAAK,sBAAsBA,IAAGH,MAAK,MAAM,GAAGA,MAAK,MAAM,GAAGA,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,GAAGA,MAAK,OAAO,CAAC,CAAC;AACtK,uBAAO,KAAK,MAAM,GAAG,MAAM,CAAC;AAAA,cAChC;AAAA,YACJ,OACK;AACD,uBAAS,OAAO,OAAOA,MAAK,MAAM;AAAA,YACtC;AAAA,UACJ,CAAC;AACD,cAAI,OAAO,OAAO,CAAC;AACnB,cAAI,OAAO,OAAO,CAAC;AACnB,cAAI,OAAO,OAAO,CAAC;AACnB,cAAI,OAAO,OAAO,CAAC;AACnB,cAAII,IAAGC;AACP,mBAASC,KAAI,GAAGA,KAAI,OAAO,SAAS,GAAGA,MAAK;AACxC,YAAAF,KAAI,OAAOE,KAAI,CAAC;AAChB,YAAAD,KAAI,OAAOC,KAAI,IAAI,CAAC;AACpB,gBAAI,CAAC,MAAMF,EAAC,GAAG;AACX,qBAAO,KAAK,IAAI,MAAMA,EAAC;AACvB,qBAAO,KAAK,IAAI,MAAMA,EAAC;AAAA,YAC3B;AACA,gBAAI,CAAC,MAAMC,EAAC,GAAG;AACX,qBAAO,KAAK,IAAI,MAAMA,EAAC;AACvB,qBAAO,KAAK,IAAI,MAAMA,EAAC;AAAA,YAC3B;AAAA,UACJ;AACA,iBAAO;AAAA,YACH,GAAG;AAAA,YACH,GAAG;AAAA,YACH,OAAO,OAAO;AAAA,YACd,QAAQ,OAAO;AAAA,UACnB;AAAA,QACJ;AAAA,QACA,YAAY;AACR,iBAAO,KAAK;AAAA,QAChB;AAAA,QACA,iBAAiB,QAAQ;AACrB,iBAAO,MAAK,4BAA4B,QAAQ,KAAK,SAAS;AAAA,QAClE;AAAA,QACA,OAAO,cAAc,IAAI,IAAIE,KAAIC,KAAI;AACjC,iBAAO,KAAK,MAAMD,MAAK,OAAOA,MAAK,OAAOC,MAAK,OAAOA,MAAK,GAAG;AAAA,QAClE;AAAA,QACA,OAAO,cAAc,WAAW;AAC5B,cAAI,aAAa;AACjB,mBAASF,KAAI,GAAGA,KAAI,UAAU,QAAQ,EAAEA,IAAG;AACvC,0BAAc,UAAUA,EAAC,EAAE;AAAA,UAC/B;AACA,iBAAO;AAAA,QACX;AAAA,QACA,OAAO,4BAA4B,QAAQ,WAAW;AAClD,cAAI,QAAQA,KAAI,GAAGG,MAAK,UAAU;AAClC,cAAI,CAACA,KAAI;AACL,mBAAO;AAAA,UACX;AACA,iBAAOH,KAAIG,OAAM,SAAS,UAAUH,EAAC,EAAE,YAAY;AAC/C,sBAAU,UAAUA,EAAC,EAAE;AACvB,cAAEA;AAAA,UACN;AACA,cAAIA,OAAMG,KAAI;AACV,qBAAS,UAAUH,KAAI,CAAC,EAAE,OAAO,MAAM,EAAE;AACzC,mBAAO;AAAA,cACH,GAAG,OAAO,CAAC;AAAA,cACX,GAAG,OAAO,CAAC;AAAA,YACf;AAAA,UACJ;AACA,cAAI,SAAS,MAAM;AACf,kBAAM,MAAM,UAAUA,EAAC,EAAE;AACzB,gBAAI,QAAQ,KAAK;AACb,uBAAS,UAAUA,EAAC,EAAE,OAAO,MAAM,GAAG,CAAC;AACvC,qBAAO;AAAA,gBACH,GAAG,OAAO,CAAC;AAAA,gBACX,GAAG,OAAO,CAAC;AAAA,cACf;AAAA,YACJ,OACK;AACD,qBAAO;AAAA,gBACH,GAAG,UAAUA,EAAC,EAAE,MAAM;AAAA,gBACtB,GAAG,UAAUA,EAAC,EAAE,MAAM;AAAA,cAC1B;AAAA,YACJ;AAAA,UACJ;AACA,gBAAM,KAAK,UAAUA,EAAC;AACtB,gBAAMR,KAAI,GAAG;AACb,kBAAQ,GAAG,SAAS;AAAA,YAChB,KAAK;AACD,qBAAO,MAAK,eAAe,QAAQ,GAAG,MAAM,GAAG,GAAG,MAAM,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,YACzE,KAAK;AACD,qBAAO,MAAK,sBAAsB,SAAS,QAAQ,MAAK,cAAc,SAAS,GAAG,CAACQ,OAAM;AACrF,uBAAO,kBAAkB,CAAC,GAAG,MAAM,GAAGR,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC,GAAGQ,EAAC;AAAA,cAC9F,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,MAAM,GAAGR,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,YAClE,KAAK;AACD,qBAAO,MAAK,0BAA0B,SAAS,QAAQ,MAAK,cAAc,SAAS,GAAG,CAACQ,OAAM;AACzF,uBAAO,sBAAsB,CAAC,GAAG,MAAM,GAAGR,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC,GAAGQ,EAAC;AAAA,cACtF,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,MAAM,GAAGR,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,YACtD,KAAK;AACD,oBAAM,KAAKA,GAAE,CAAC,GAAG,KAAKA,GAAE,CAAC,GAAG,KAAKA,GAAE,CAAC,GAAG,KAAKA,GAAE,CAAC,GAAG,SAASA,GAAE,CAAC,GAAG,MAAMA,GAAE,CAAC;AAC1E,kBAAI,QAAQA,GAAE,CAAC;AACf,uBAAU,SAAS,SAAU,GAAG;AAChC,qBAAO,MAAK,wBAAwB,IAAI,IAAI,IAAI,IAAI,OAAO,GAAG;AAAA,UACtE;AACA,iBAAO;AAAA,QACX;AAAA,QACA,OAAO,eAAe,MAAM,KAAK,KAAK,KAAK,KAAK,OAAO,OAAO;AAC1D,kBAAQ,UAAU,QAAQ,UAAU,SAAS,QAAQ;AACrD,kBAAQ,UAAU,QAAQ,UAAU,SAAS,QAAQ;AACrD,gBAAM,MAAM,KAAK,cAAc,KAAK,KAAK,KAAK,GAAG;AACjD,cAAI,MAAM,OAAO;AACb,mBAAO,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,UAC5B;AACA,cAAI,QAAQ,KAAK;AACb,mBAAO,EAAE,GAAG,OAAO,GAAG,SAAS,MAAM,MAAM,OAAO,CAAC,MAAM;AAAA,UAC7D;AACA,gBAAMY,MAAK,MAAM,QAAQ,MAAM;AAC/B,gBAAM,MAAM,KAAK,KAAM,OAAO,QAAS,IAAIA,KAAIA,GAAE,KAAK,MAAM,MAAM,KAAK;AACvE,gBAAM,OAAOA,KAAI;AACjB,cAAI,KAAK,IAAI,QAAQ,MAAMA,MAAK,QAAQ,IAAI,IAAI,OAAO;AACnD,mBAAO,EAAE,GAAG,QAAQ,KAAK,GAAG,QAAQ,KAAK;AAAA,UAC7C;AACA,gBAAMC,OAAM,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,QAAQ,MAAM,SAAS,MAAM;AAC/E,gBAAM,KAAK,MAAMA,MAAK,MAAM;AAC5B,gBAAM,KAAK,MAAMA,MAAK,MAAM;AAC5B,gBAAM,QAAQ,KAAK,cAAc,OAAO,OAAO,IAAI,EAAE;AACrD,gBAAM,OAAO,KAAK,KAAK,OAAO,OAAO,QAAQ,KAAK;AAClD,gBAAM,cAAc,KAAK,KAAM,OAAO,QAAS,IAAID,KAAIA,GAAE,KAAK,MAAM,MAAM,KAAK;AAC/E,gBAAM,eAAeA,KAAI;AACzB,iBAAO,EAAE,GAAG,KAAK,aAAa,GAAG,KAAK,aAAa;AAAA,QACvD;AAAA,QACA,OAAO,sBAAsB,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AACtE,mBAAS,IAAIP,IAAG;AACZ,mBAAOA,KAAIA,KAAIA;AAAA,UACnB;AACA,mBAAS,IAAIA,IAAG;AACZ,mBAAO,IAAIA,KAAIA,MAAK,IAAIA;AAAA,UAC5B;AACA,mBAAS,IAAIA,IAAG;AACZ,mBAAO,IAAIA,MAAK,IAAIA,OAAM,IAAIA;AAAA,UAClC;AACA,mBAAS,IAAIA,IAAG;AACZ,oBAAQ,IAAIA,OAAM,IAAIA,OAAM,IAAIA;AAAA,UACpC;AACA,gBAAMC,KAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;AAC1E,gBAAMC,KAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;AAC1E,iBAAO,EAAE,GAAAD,IAAG,GAAAC,GAAE;AAAA,QAClB;AAAA,QACA,OAAO,0BAA0B,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AAChE,mBAAS,IAAIF,IAAG;AACZ,mBAAOA,KAAIA;AAAA,UACf;AACA,mBAAS,IAAIA,IAAG;AACZ,mBAAO,IAAIA,MAAK,IAAIA;AAAA,UACxB;AACA,mBAAS,IAAIA,IAAG;AACZ,oBAAQ,IAAIA,OAAM,IAAIA;AAAA,UAC1B;AACA,gBAAMC,KAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;AACzD,gBAAMC,KAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;AACzD,iBAAO,EAAE,GAAAD,IAAG,GAAAC,GAAE;AAAA,QAClB;AAAA,QACA,OAAO,wBAAwB,IAAI,IAAI,IAAI,IAAI,OAAO,KAAK;AACvD,gBAAM,SAAS,KAAK,IAAI,GAAG,GAAG,SAAS,KAAK,IAAI,GAAG;AACnD,gBAAMO,MAAK;AAAA,YACP,GAAG,KAAK,KAAK,IAAI,KAAK;AAAA,YACtB,GAAG,KAAK,KAAK,IAAI,KAAK;AAAA,UAC1B;AACA,iBAAO;AAAA,YACH,GAAG,MAAMA,IAAG,IAAI,SAASA,IAAG,IAAI;AAAA,YAChC,GAAG,MAAMA,IAAG,IAAI,SAASA,IAAG,IAAI;AAAA,UACpC;AAAA,QACJ;AAAA,QACA,OAAO,cAAcZ,OAAM;AACvB,cAAI,CAACA,OAAM;AACP,mBAAO,CAAC;AAAA,UACZ;AACA,cAAIa,MAAKb;AACT,gBAAM,KAAK;AAAA,YACP;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACJ;AACA,UAAAa,MAAKA,IAAG,QAAQ,IAAI,OAAO,KAAK,GAAG,GAAG,GAAG;AACzC,mBAASjB,MAAI,GAAGA,MAAI,GAAG,QAAQA,OAAK;AAChC,YAAAiB,MAAKA,IAAG,QAAQ,IAAI,OAAO,GAAGjB,GAAC,GAAG,GAAG,GAAG,MAAM,GAAGA,GAAC,CAAC;AAAA,UACvD;AACA,gBAAM,MAAMiB,IAAG,MAAM,GAAG;AACxB,gBAAMlB,MAAK,CAAC;AACZ,gBAAM,SAAS,CAAC;AAChB,cAAI,MAAM;AACV,cAAI,MAAM;AACV,gBAAMmB,MAAK;AACX,cAAI;AACJ,mBAASlB,MAAI,GAAGA,MAAI,IAAI,QAAQA,OAAK;AACjC,gBAAI,MAAM,IAAIA,GAAC;AACf,gBAAIC,KAAI,IAAI,OAAO,CAAC;AACpB,kBAAM,IAAI,MAAM,CAAC;AACjB,mBAAO,SAAS;AAChB,mBAAQ,QAAQiB,IAAG,KAAK,GAAG,GAAI;AAC3B,qBAAO,KAAK,MAAM,CAAC,CAAC;AAAA,YACxB;AACA,gBAAIhB,KAAI,CAAC;AACT,gBAAI,gBAAgBD,OAAM,OAAOA,OAAM,MAAM,IAAI;AACjD,qBAASkB,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAMA,MAAK;AACjD,oBAAM,QAAQ,OAAOA,EAAC;AACtB,kBAAI,UAAU,MAAM;AAChB,gBAAAjB,GAAE,KAAK,GAAG,CAAC;AACX,oBAAI,iBAAiB,GAAG;AACpB,mCAAiB;AACjB,sBAAI,iBAAiB;AACjB,qCAAiB;AAAA,gBACzB;AACA;AAAA,cACJ;AACA,kBAAI,iBAAiB,GAAG;AACpB,oBAAI,kBAAkB,GAAG;AACrB,sBAAI,yBAAyB,KAAK,KAAK,GAAG;AACtC,oBAAAA,GAAE,KAAK,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7B,oBAAAA,GAAE,KAAK,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7B,oBAAAA,GAAE,KAAK,WAAW,MAAM,MAAM,CAAC,CAAC,CAAC;AACjC,qCAAiB;AACjB,wBAAI,iBAAiB;AACjB,uCAAiB;AACrB;AAAA,kBACJ;AACA,sBAAI,UAAU,QAAQ,UAAU,QAAQ,UAAU,MAAM;AACpD,oBAAAA,GAAE,KAAK,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7B,oBAAAA,GAAE,KAAK,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7B,qCAAiB;AACjB,wBAAI,iBAAiB;AACjB,uCAAiB;AACrB;AAAA,kBACJ;AACA,sBAAI,UAAU,OAAO,UAAU,KAAK;AAChC,oBAAAA,GAAE,KAAK,SAAS,OAAO,EAAE,CAAC;AAC1B,qCAAiB;AACjB,wBAAI,iBAAiB;AACjB,uCAAiB;AACrB;AAAA,kBACJ;AAAA,gBACJ,WACS,kBAAkB,GAAG;AAC1B,sBAAI,sBAAsB,KAAK,KAAK,GAAG;AACnC,oBAAAA,GAAE,KAAK,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7B,oBAAAA,GAAE,KAAK,WAAW,MAAM,MAAM,CAAC,CAAC,CAAC;AACjC,qCAAiB;AACjB,wBAAI,iBAAiB;AACjB,uCAAiB;AACrB;AAAA,kBACJ;AACA,sBAAI,UAAU,OAAO,UAAU,KAAK;AAChC,oBAAAA,GAAE,KAAK,SAAS,OAAO,EAAE,CAAC;AAC1B,qCAAiB;AACjB,wBAAI,iBAAiB;AACjB,uCAAiB;AACrB;AAAA,kBACJ;AAAA,gBACJ;AACA,sBAAM,YAAY,WAAW,KAAK;AAClC,oBAAI,CAAC,MAAM,SAAS,GAAG;AACnB,kBAAAA,GAAE,KAAK,SAAS;AAAA,gBACpB,OACK;AACD,kBAAAA,GAAE,KAAK,CAAC;AAAA,gBACZ;AACA,iCAAiB;AACjB,oBAAI,iBAAiB;AACjB,mCAAiB;AAAA,cACzB,OACK;AACD,sBAAM,SAAS,WAAW,KAAK;AAC/B,oBAAI,CAAC,MAAM,MAAM,GAAG;AAChB,kBAAAA,GAAE,KAAK,MAAM;AAAA,gBACjB,OACK;AACD,kBAAAA,GAAE,KAAK,CAAC;AAAA,gBACZ;AAAA,cACJ;AAAA,YACJ;AACA,mBAAOA,GAAE,SAAS,GAAG;AACjB,kBAAI,MAAMA,GAAE,CAAC,CAAC,GAAG;AACb;AAAA,cACJ;AACA,kBAAI,MAAM;AACV,kBAAI,SAAS,CAAC;AACd,oBAAM,SAAS,KAAK,SAAS;AAC7B,kBAAI,SAAS,QAAQ;AACrB,kBAAI,IAAI,IAAI,KAAKkB,KAAI,IAAI,IAAI;AAC7B,sBAAQnB,IAAG;AAAA,gBACP,KAAK;AACD,yBAAOC,GAAE,MAAM;AACf,yBAAOA,GAAE,MAAM;AACf,wBAAM;AACN,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,wBAAMA,GAAE,MAAM;AACd,wBAAMA,GAAE,MAAM;AACd,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,wBAAM,KAAKA,GAAE,MAAM;AACnB,wBAAM,KAAKA,GAAE,MAAM;AACnB,yBAAO;AACP,yBAAO;AACP,wBAAM;AACN,sBAAIH,IAAG,SAAS,KAAKA,IAAGA,IAAG,SAAS,CAAC,EAAE,YAAY,KAAK;AACpD,6BAAS,MAAMA,IAAG,SAAS,GAAG,OAAO,GAAG,OAAO;AAC3C,0BAAIA,IAAG,GAAG,EAAE,YAAY,KAAK;AACzB,8BAAMA,IAAG,GAAG,EAAE,OAAO,CAAC,IAAI;AAC1B,8BAAMA,IAAG,GAAG,EAAE,OAAO,CAAC,IAAI;AAC1B;AAAA,sBACJ;AAAA,oBACJ;AAAA,kBACJ;AACA,yBAAO,KAAK,KAAK,GAAG;AACpB,kBAAAE,KAAI;AACJ;AAAA,gBACJ,KAAK;AACD,wBAAMC,GAAE,MAAM;AACd,wBAAMA,GAAE,MAAM;AACd,wBAAM;AACN,yBAAO,KAAK,KAAK,GAAG;AACpB,kBAAAD,KAAI;AACJ;AAAA,gBACJ,KAAK;AACD,yBAAOC,GAAE,MAAM;AACf,wBAAM;AACN,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,wBAAMA,GAAE,MAAM;AACd,wBAAM;AACN,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,yBAAOA,GAAE,MAAM;AACf,wBAAM;AACN,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,wBAAMA,GAAE,MAAM;AACd,wBAAM;AACN,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,yBAAO,KAAKA,GAAE,MAAM,GAAGA,GAAE,MAAM,GAAGA,GAAE,MAAM,GAAGA,GAAE,MAAM,CAAC;AACtD,wBAAMA,GAAE,MAAM;AACd,wBAAMA,GAAE,MAAM;AACd,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,yBAAO,KAAK,MAAMA,GAAE,MAAM,GAAG,MAAMA,GAAE,MAAM,GAAG,MAAMA,GAAE,MAAM,GAAG,MAAMA,GAAE,MAAM,CAAC;AAC9E,yBAAOA,GAAE,MAAM;AACf,yBAAOA,GAAE,MAAM;AACf,wBAAM;AACN,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,2BAAS;AACT,2BAAS;AACT,4BAAUH,IAAGA,IAAG,SAAS,CAAC;AAC1B,sBAAI,QAAQ,YAAY,KAAK;AACzB,6BAAS,OAAO,MAAM,QAAQ,OAAO,CAAC;AACtC,6BAAS,OAAO,MAAM,QAAQ,OAAO,CAAC;AAAA,kBAC1C;AACA,yBAAO,KAAK,QAAQ,QAAQG,GAAE,MAAM,GAAGA,GAAE,MAAM,CAAC;AAChD,wBAAMA,GAAE,MAAM;AACd,wBAAMA,GAAE,MAAM;AACd,wBAAM;AACN,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,2BAAS;AACT,2BAAS;AACT,4BAAUH,IAAGA,IAAG,SAAS,CAAC;AAC1B,sBAAI,QAAQ,YAAY,KAAK;AACzB,6BAAS,OAAO,MAAM,QAAQ,OAAO,CAAC;AACtC,6BAAS,OAAO,MAAM,QAAQ,OAAO,CAAC;AAAA,kBAC1C;AACA,yBAAO,KAAK,QAAQ,QAAQ,MAAMG,GAAE,MAAM,GAAG,MAAMA,GAAE,MAAM,CAAC;AAC5D,yBAAOA,GAAE,MAAM;AACf,yBAAOA,GAAE,MAAM;AACf,wBAAM;AACN,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,yBAAO,KAAKA,GAAE,MAAM,GAAGA,GAAE,MAAM,CAAC;AAChC,wBAAMA,GAAE,MAAM;AACd,wBAAMA,GAAE,MAAM;AACd,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,yBAAO,KAAK,MAAMA,GAAE,MAAM,GAAG,MAAMA,GAAE,MAAM,CAAC;AAC5C,yBAAOA,GAAE,MAAM;AACf,yBAAOA,GAAE,MAAM;AACf,wBAAM;AACN,yBAAO,KAAK,KAAK,GAAG;AACpB;AAAA,gBACJ,KAAK;AACD,2BAAS;AACT,2BAAS;AACT,4BAAUH,IAAGA,IAAG,SAAS,CAAC;AAC1B,sBAAI,QAAQ,YAAY,KAAK;AACzB,6BAAS,OAAO,MAAM,QAAQ,OAAO,CAAC;AACtC,6BAAS,OAAO,MAAM,QAAQ,OAAO,CAAC;AAAA,kBAC1C;AACA,wBAAMG,GAAE,MAAM;AACd,wBAAMA,GAAE,MAAM;AACd,wBAAM;AACN,yBAAO,KAAK,QAAQ,QAAQ,KAAK,GAAG;AACpC;AAAA,gBACJ,KAAK;AACD,2BAAS;AACT,2BAAS;AACT,4BAAUH,IAAGA,IAAG,SAAS,CAAC;AAC1B,sBAAI,QAAQ,YAAY,KAAK;AACzB,6BAAS,OAAO,MAAM,QAAQ,OAAO,CAAC;AACtC,6BAAS,OAAO,MAAM,QAAQ,OAAO,CAAC;AAAA,kBAC1C;AACA,yBAAOG,GAAE,MAAM;AACf,yBAAOA,GAAE,MAAM;AACf,wBAAM;AACN,yBAAO,KAAK,QAAQ,QAAQ,KAAK,GAAG;AACpC;AAAA,gBACJ,KAAK;AACD,uBAAKA,GAAE,MAAM;AACb,uBAAKA,GAAE,MAAM;AACb,wBAAMA,GAAE,MAAM;AACd,kBAAAkB,MAAKlB,GAAE,MAAM;AACb,uBAAKA,GAAE,MAAM;AACb,uBAAK;AACL,uBAAK;AACL,wBAAMA,GAAE,MAAM;AACd,wBAAMA,GAAE,MAAM;AACd,wBAAM;AACN,2BAAS,KAAK,wCAAwC,IAAI,IAAI,KAAK,KAAKkB,KAAI,IAAI,IAAI,IAAI,GAAG;AAC3F;AAAA,gBACJ,KAAK;AACD,uBAAKlB,GAAE,MAAM;AACb,uBAAKA,GAAE,MAAM;AACb,wBAAMA,GAAE,MAAM;AACd,kBAAAkB,MAAKlB,GAAE,MAAM;AACb,uBAAKA,GAAE,MAAM;AACb,uBAAK;AACL,uBAAK;AACL,yBAAOA,GAAE,MAAM;AACf,yBAAOA,GAAE,MAAM;AACf,wBAAM;AACN,2BAAS,KAAK,wCAAwC,IAAI,IAAI,KAAK,KAAKkB,KAAI,IAAI,IAAI,IAAI,GAAG;AAC3F;AAAA,cACR;AACA,cAAArB,IAAG,KAAK;AAAA,gBACJ,SAAS,OAAOE;AAAA,gBAChB;AAAA,gBACA,OAAO;AAAA,kBACH,GAAG;AAAA,kBACH,GAAG;AAAA,gBACP;AAAA,gBACA,YAAY,KAAK,WAAW,QAAQ,QAAQ,OAAOA,IAAG,MAAM;AAAA,cAChE,CAAC;AAAA,YACL;AACA,gBAAIA,OAAM,OAAOA,OAAM,KAAK;AACxB,cAAAF,IAAG,KAAK;AAAA,gBACJ,SAAS;AAAA,gBACT,QAAQ,CAAC;AAAA,gBACT,OAAO;AAAA,gBACP,YAAY;AAAA,cAChB,CAAC;AAAA,YACL;AAAA,UACJ;AACA,iBAAOA;AAAA,QACX;AAAA,QACA,OAAO,WAAWS,IAAGC,IAAG,KAAK,QAAQ;AACjC,cAAI,KAAK,IAAIY,KAAId;AACjB,gBAAM,OAAO;AACb,kBAAQ,KAAK;AAAA,YACT,KAAK;AACD,qBAAO,KAAK,cAAcC,IAAGC,IAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AAAA,YACxD,KAAK;AACD,qBAAO,kBAAkB,CAACD,IAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAACC,IAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC;AAAA,YAC1G,KAAK;AACD,qBAAO,sBAAsB,CAACD,IAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAACC,IAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC;AAAA,YACxF,KAAK;AACD,oBAAM;AACN,oBAAMJ,SAAQ,OAAO,CAAC;AACtB,oBAAM,SAAS,OAAO,CAAC;AACvB,oBAAMC,OAAM,OAAO,CAAC,IAAI;AACxB,kBAAI,MAAM,KAAK,KAAK;AACpB,kBAAI,KAAK,IAAID,SAAQC,IAAG,IAAI,KAAK;AAC7B,sBAAM,KAAK,IAAID,SAAQC,IAAG;AAAA,cAC9B;AACA,mBAAK,KAAK,wBAAwB,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAGD,QAAO,CAAC;AACtF,kBAAI,SAAS,GAAG;AACZ,qBAAKE,KAAIF,SAAQ,KAAKE,KAAID,MAAKC,MAAK,KAAK;AACrC,kBAAAc,MAAK,KAAK,wBAAwB,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAGd,IAAG,CAAC;AAClF,yBAAO,KAAK,cAAc,GAAG,GAAG,GAAG,GAAGc,IAAG,GAAGA,IAAG,CAAC;AAChD,uBAAKA;AAAA,gBACT;AAAA,cACJ,OACK;AACD,qBAAKd,KAAIF,SAAQ,KAAKE,KAAID,MAAKC,MAAK,KAAK;AACrC,kBAAAc,MAAK,KAAK,wBAAwB,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAGd,IAAG,CAAC;AAClF,yBAAO,KAAK,cAAc,GAAG,GAAG,GAAG,GAAGc,IAAG,GAAGA,IAAG,CAAC;AAChD,uBAAKA;AAAA,gBACT;AAAA,cACJ;AACA,cAAAA,MAAK,KAAK,wBAAwB,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAGf,MAAK,CAAC;AACpF,qBAAO,KAAK,cAAc,GAAG,GAAG,GAAG,GAAGe,IAAG,GAAGA,IAAG,CAAC;AAChD,qBAAO;AAAA,UACf;AACA,iBAAO;AAAA,QACX;AAAA,QACA,OAAO,wCAAwC,IAAI,IAAIV,KAAIC,KAAIQ,KAAI,IAAI,IAAI,IAAI,QAAQ;AACnF,gBAAM,MAAM,UAAU,KAAK,KAAK;AAChC,gBAAM,KAAM,KAAK,IAAI,GAAG,KAAK,KAAKT,OAAO,IAAO,KAAK,IAAI,GAAG,KAAK,KAAKC,OAAO;AAC7E,gBAAM,KAAM,KAAK,KAAK,IAAI,GAAG,KAAK,KAAKD,OAAO,IACzC,KAAK,IAAI,GAAG,KAAK,KAAKC,OAAO;AAClC,gBAAM,SAAU,KAAK,MAAO,KAAK,MAAO,KAAK,MAAO,KAAK;AACzD,cAAI,SAAS,GAAG;AACZ,kBAAM,KAAK,KAAK,MAAM;AACtB,kBAAM,KAAK,KAAK,MAAM;AAAA,UAC1B;AACA,cAAIU,KAAI,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,QAC1E,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI;AAC/C,cAAIF,QAAO,IAAI;AACX,YAAAE,MAAK;AAAA,UACT;AACA,cAAI,MAAMA,EAAC,GAAG;AACV,YAAAA,KAAI;AAAA,UACR;AACA,gBAAM,MAAOA,KAAI,KAAK,KAAM;AAC5B,gBAAM,MAAOA,KAAI,CAAC,KAAK,KAAM;AAC7B,gBAAM,MAAM,KAAKX,OAAM,IAAM,KAAK,IAAI,GAAG,IAAI,MAAM,KAAK,IAAI,GAAG,IAAI;AACnE,gBAAM,MAAM,KAAKC,OAAM,IAAM,KAAK,IAAI,GAAG,IAAI,MAAM,KAAK,IAAI,GAAG,IAAI;AACnE,gBAAM,OAAO,SAAUW,IAAG;AACtB,mBAAO,KAAK,KAAKA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,CAAC;AAAA,UAC9C;AACA,gBAAM,SAAS,SAAUR,IAAGQ,IAAG;AAC3B,oBAAQR,GAAE,CAAC,IAAIQ,GAAE,CAAC,IAAIR,GAAE,CAAC,IAAIQ,GAAE,CAAC,MAAM,KAAKR,EAAC,IAAI,KAAKQ,EAAC;AAAA,UAC1D;AACA,gBAAM,SAAS,SAAUR,IAAGQ,IAAG;AAC3B,oBAAQR,GAAE,CAAC,IAAIQ,GAAE,CAAC,IAAIR,GAAE,CAAC,IAAIQ,GAAE,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,OAAOR,IAAGQ,EAAC,CAAC;AAAA,UACxE;AACA,gBAAM,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,OAAO,KAAK,KAAK,OAAO,EAAE,CAAC;AAC/D,gBAAMR,KAAI,EAAE,KAAK,OAAO,KAAK,KAAK,OAAO,EAAE;AAC3C,gBAAMQ,KAAI,EAAE,KAAK,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO,EAAE;AACrD,cAAI,SAAS,OAAOR,IAAGQ,EAAC;AACxB,cAAI,OAAOR,IAAGQ,EAAC,KAAK,IAAI;AACpB,qBAAS,KAAK;AAAA,UAClB;AACA,cAAI,OAAOR,IAAGQ,EAAC,KAAK,GAAG;AACnB,qBAAS;AAAA,UACb;AACA,cAAI,OAAO,KAAK,SAAS,GAAG;AACxB,qBAAS,SAAS,IAAI,KAAK;AAAA,UAC/B;AACA,cAAI,OAAO,KAAK,SAAS,GAAG;AACxB,qBAAS,SAAS,IAAI,KAAK;AAAA,UAC/B;AACA,iBAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,EAAE;AAAA,QAClD;AAAA,MACJ;AACA,WAAK,UAAU,YAAY;AAC3B,WAAK,UAAU,sBAAsB,CAAC,MAAM;AAC5C,oBAAc,IAAI;AAClB,cAAQ,gBAAgB,MAAM,MAAM;AAAA;AAAA;;;AC7pBpC,MAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAN,cAAoB,KAAK;AAAA,QAC5B,WAAW,KAAK;AACZ,gBAAM,WAAW,GAAG;AACpB,gBAAM,MAAM,KAAK,KAAK;AACtB,gBAAM,SAAS,KAAK,OAAO;AAC3B,cAAI,KAAK;AACT,gBAAM,cAAc,KAAK,QAAQ,MAAM,KAAK,OAAO,SAAS;AAC5D,cAAI,aAAa;AACb,iBAAK,KAAK,iBAAiB;AAAA,UAC/B;AACA,gBAAM,SAAS,KAAK,cAAc;AAClC,gBAAMC,MAAI,OAAO;AACjB,cAAI,IAAI;AACR,cAAI,aAAa;AACb,kBAAM,KAAK;AAAA,cACP,GAAG,GAAG,SAAS,CAAC;AAAA,cAChB,GAAG,GAAG,SAAS,CAAC;AAAA,cAChB,GAAG,GAAG,SAAS,CAAC;AAAA,cAChB,GAAG,GAAG,SAAS,CAAC;AAAA,cAChB,OAAOA,MAAI,CAAC;AAAA,cACZ,OAAOA,MAAI,CAAC;AAAA,YAChB;AACA,kBAAM,aAAa,KAAK,WAAW,GAAG,GAAG,SAAS,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG,KAAK,EAAE;AAChF,kBAAM,WAAW,KAAK,0BAA0B,KAAK,IAAI,GAAG,IAAI,SAAS,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC9H,iBAAK,OAAOA,MAAI,CAAC,IAAI,SAAS;AAC9B,iBAAK,OAAOA,MAAI,CAAC,IAAI,SAAS;AAAA,UAClC,OACK;AACD,iBAAK,OAAOA,MAAI,CAAC,IAAI,OAAOA,MAAI,CAAC;AACjC,iBAAK,OAAOA,MAAI,CAAC,IAAI,OAAOA,MAAI,CAAC;AAAA,UACrC;AACA,gBAAM,WAAW,KAAK,MAAM,IAAI,EAAE,IAAI,OAAO;AAC7C,gBAAM,QAAQ,KAAK,aAAa;AAChC,cAAI,KAAK,gBAAgB,GAAG;AACxB,gBAAI,KAAK;AACT,gBAAI,UAAU;AACd,gBAAI,UAAU,OAAOA,MAAI,CAAC,GAAG,OAAOA,MAAI,CAAC,CAAC;AAC1C,gBAAI,OAAO,OAAO;AAClB,gBAAI,OAAO,GAAG,CAAC;AACf,gBAAI,OAAO,CAAC,QAAQ,QAAQ,CAAC;AAC7B,gBAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC9B,gBAAI,UAAU;AACd,gBAAI,QAAQ;AACZ,iBAAK,aAAa,GAAG;AAAA,UACzB;AACA,cAAI,KAAK,mBAAmB,GAAG;AAC3B,gBAAI,KAAK;AACT,gBAAI,UAAU;AACd,gBAAI,UAAU,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AAClC,gBAAI,aAAa;AACb,oBAAM,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC;AACnC,oBAAM,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC;AAAA,YACvC,OACK;AACD,mBAAK,OAAO,CAAC,IAAI,OAAO,CAAC;AACzB,mBAAK,OAAO,CAAC,IAAI,OAAO,CAAC;AAAA,YAC7B;AACA,gBAAI,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,GAAG;AAC7C,gBAAI,OAAO,GAAG,CAAC;AACf,gBAAI,OAAO,CAAC,QAAQ,QAAQ,CAAC;AAC7B,gBAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC9B,gBAAI,UAAU;AACd,gBAAI,QAAQ;AACZ,iBAAK,aAAa,GAAG;AAAA,UACzB;AAAA,QACJ;AAAA,QACA,aAAa,KAAK;AACd,gBAAM,gBAAgB,KAAK,YAAY;AACvC,cAAI,eAAe;AACf,iBAAK,MAAM,cAAc;AACzB,gBAAI,YAAY,CAAC,CAAC;AAAA,UACtB;AACA,cAAI,gBAAgB,IAAI;AACxB,cAAI,eAAe;AACf,iBAAK,MAAM,cAAc;AAAA,UAC7B;AAAA,QACJ;AAAA,QACA,cAAc;AACV,gBAAM,WAAW,MAAM,YAAY;AACnC,gBAAMC,UAAS,KAAK,aAAa,IAAI;AACrC,iBAAO;AAAA,YACH,GAAG,SAAS;AAAA,YACZ,GAAG,SAAS,IAAIA;AAAA,YAChB,OAAO,SAAS;AAAA,YAChB,QAAQ,SAAS,SAASA,UAAS;AAAA,UACvC;AAAA,QACJ;AAAA,MACJ;AACA,YAAM,UAAU,YAAY;AAC5B,oBAAc,KAAK;AACnB,cAAQ,gBAAgB,OAAO,iBAAiB,IAAI,mBAAmB,CAAC;AACxE,cAAQ,gBAAgB,OAAO,gBAAgB,IAAI,mBAAmB,CAAC;AACvE,cAAQ,gBAAgB,OAAO,sBAAsB,KAAK;AAC1D,cAAQ,gBAAgB,OAAO,mBAAmB,IAAI;AAAA;AAAA;;;AClGtD,MAIa;AAJb;AAAA;AAAA;AACA;AACA;AACA;AACO,MAAM,SAAN,cAAqB,MAAM;AAAA,QAC9B,WAAW,SAAS;AAChB,kBAAQ,UAAU;AAClB,kBAAQ,IAAI,GAAG,GAAG,KAAK,MAAM,UAAU,GAAG,GAAG,KAAK,KAAK,GAAG,KAAK;AAC/D,kBAAQ,UAAU;AAClB,kBAAQ,gBAAgB,IAAI;AAAA,QAChC;AAAA,QACA,WAAW;AACP,iBAAO,KAAK,OAAO,IAAI;AAAA,QAC3B;AAAA,QACA,YAAY;AACR,iBAAO,KAAK,OAAO,IAAI;AAAA,QAC3B;AAAA,QACA,SAAS,OAAO;AACZ,cAAI,KAAK,OAAO,MAAM,QAAQ,GAAG;AAC7B,iBAAK,OAAO,QAAQ,CAAC;AAAA,UACzB;AAAA,QACJ;AAAA,QACA,UAAU,QAAQ;AACd,cAAI,KAAK,OAAO,MAAM,SAAS,GAAG;AAC9B,iBAAK,OAAO,SAAS,CAAC;AAAA,UAC1B;AAAA,QACJ;AAAA,MACJ;AACA,aAAO,UAAU,YAAY;AAC7B,aAAO,UAAU,YAAY;AAC7B,aAAO,UAAU,sBAAsB,CAAC,QAAQ;AAChD,oBAAc,MAAM;AACpB,cAAQ,gBAAgB,QAAQ,UAAU,GAAG,mBAAmB,CAAC;AAAA;AAAA;;;AChCjE,MAIa;AAJb;AAAA;AAAA;AACA;AACA;AACA;AACO,MAAM,UAAN,cAAsB,MAAM;AAAA,QAC/B,WAAW,SAAS;AAChB,gBAAM,KAAK,KAAK,QAAQ,GAAG,KAAK,KAAK,QAAQ;AAC7C,kBAAQ,UAAU;AAClB,kBAAQ,KAAK;AACb,cAAI,OAAO,IAAI;AACX,oBAAQ,MAAM,GAAG,KAAK,EAAE;AAAA,UAC5B;AACA,kBAAQ,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,KAAK,GAAG,KAAK;AAC3C,kBAAQ,QAAQ;AAChB,kBAAQ,UAAU;AAClB,kBAAQ,gBAAgB,IAAI;AAAA,QAChC;AAAA,QACA,WAAW;AACP,iBAAO,KAAK,QAAQ,IAAI;AAAA,QAC5B;AAAA,QACA,YAAY;AACR,iBAAO,KAAK,QAAQ,IAAI;AAAA,QAC5B;AAAA,QACA,SAAS,OAAO;AACZ,eAAK,QAAQ,QAAQ,CAAC;AAAA,QAC1B;AAAA,QACA,UAAU,QAAQ;AACd,eAAK,QAAQ,SAAS,CAAC;AAAA,QAC3B;AAAA,MACJ;AACA,cAAQ,UAAU,YAAY;AAC9B,cAAQ,UAAU,YAAY;AAC9B,cAAQ,UAAU,sBAAsB,CAAC,WAAW,SAAS;AAC7D,oBAAc,OAAO;AACrB,cAAQ,0BAA0B,SAAS,UAAU,CAAC,KAAK,GAAG,CAAC;AAC/D,cAAQ,gBAAgB,SAAS,WAAW,GAAG,mBAAmB,CAAC;AACnE,cAAQ,gBAAgB,SAAS,WAAW,GAAG,mBAAmB,CAAC;AAAA;AAAA;;;ACpCnE,MAKaC;AALb;AAAA;AAAA;AACA;AACA;AACA;AACA;AACO,MAAMA,SAAN,MAAM,eAAc,MAAM;AAAA,QAC7B,YAAY,OAAO;AACf,gBAAM,KAAK;AACX,eAAK,gBAAgB,MAAM;AACvB,iBAAK,aAAa;AAAA,UACtB;AACA,eAAK,GAAG,qBAAqB,CAAC,UAAU;AACpC,iBAAK,iBAAiB,MAAM,MAAM;AAClC,iBAAK,cAAc;AAAA,UACvB,CAAC;AACD,eAAK,cAAc;AAAA,QACvB;AAAA,QACA,gBAAgB;AACZ,gBAAM,QAAQ,KAAK,MAAM;AACzB,cAAI,SAAS,MAAM,UAAU;AACzB;AAAA,UACJ;AACA,cAAI,SAAS,MAAM,eAAe,GAAG;AACjC;AAAA,UACJ;AACA,cAAI,SAAS,MAAM,kBAAkB,GAAG;AACpC,kBAAM,kBAAkB,EAAE,QAAQ,KAAK,aAAa;AAAA,UACxD;AAAA,QACJ;AAAA,QACA,iBAAiB,OAAO;AACpB,cAAI,SAAS,MAAM,qBAAqB,GAAG;AACvC,kBAAM,qBAAqB,EAAE,QAAQ,KAAK,aAAa;AAAA,UAC3D;AAAA,QACJ;AAAA,QACA,UAAU;AACN,eAAK,iBAAiB,KAAK,MAAM,CAAC;AAClC,gBAAM,QAAQ;AACd,iBAAO;AAAA,QACX;AAAA,QACA,mBAAmB;AACf,gBAAM,kBAAkB,CAAC,CAAC,KAAK,aAAa;AAC5C,gBAAM,YAAY,KAAK,UAAU;AACjC,cAAI,mBAAmB,WAAW;AAC9B,mBAAO;AAAA,UACX;AACA,iBAAO,MAAM,iBAAiB,IAAI;AAAA,QACtC;AAAA,QACA,WAAW,SAAS;AAChB,gBAAM,QAAQ,KAAK,SAAS;AAC5B,gBAAM,SAAS,KAAK,UAAU;AAC9B,gBAAM,eAAe,KAAK,aAAa;AACvC,gBAAM,QAAQ,KAAK,MAAM;AACzB,cAAI;AACJ,cAAI,OAAO;AACP,kBAAM,YAAY,KAAK,MAAM;AAC7B,kBAAM,aAAa,KAAK,MAAM;AAC9B,gBAAI,aAAa,YAAY;AACzB,uBAAS;AAAA,gBACL;AAAA,gBACA,KAAK,MAAM;AAAA,gBACX,KAAK,MAAM;AAAA,gBACX;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACJ;AAAA,YACJ,OACK;AACD,uBAAS,CAAC,OAAO,GAAG,GAAG,OAAO,MAAM;AAAA,YACxC;AAAA,UACJ;AACA,cAAI,KAAK,QAAQ,KAAK,KAAK,UAAU,KAAK,cAAc;AACpD,oBAAQ,UAAU;AAClB,2BACM,KAAK,oBAAoB,SAAS,OAAO,QAAQ,YAAY,IAC7D,QAAQ,KAAK,GAAG,GAAG,OAAO,MAAM;AACtC,oBAAQ,UAAU;AAClB,oBAAQ,gBAAgB,IAAI;AAAA,UAChC;AACA,cAAI,OAAO;AACP,gBAAI,cAAc;AACd,sBAAQ,KAAK;AAAA,YACjB;AACA,oBAAQ,UAAU,MAAM,SAAS,MAAM;AAAA,UAC3C;AAAA,QACJ;AAAA,QACA,SAAS,SAAS;AACd,gBAAM,QAAQ,KAAK,MAAM,GAAG,SAAS,KAAK,OAAO,GAAG,eAAe,KAAK,aAAa;AACrF,kBAAQ,UAAU;AAClB,cAAI,CAAC,cAAc;AACf,oBAAQ,KAAK,GAAG,GAAG,OAAO,MAAM;AAAA,UACpC,OACK;AACD,iBAAK,oBAAoB,SAAS,OAAO,QAAQ,YAAY;AAAA,UACjE;AACA,kBAAQ,UAAU;AAClB,kBAAQ,gBAAgB,IAAI;AAAA,QAChC;AAAA,QACA,WAAW;AACP,cAAIC,KAAI,IAAI;AACZ,kBAAQ,MAAMA,MAAK,KAAK,MAAM,WAAW,QAAQA,QAAO,SAASA,OAAM,KAAK,KAAK,MAAM,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,WAAW,QAAQ,OAAO,SAAS,KAAK;AAAA,QAC9K;AAAA,QACA,YAAY;AACR,cAAIA,KAAI,IAAI;AACZ,kBAAQ,MAAMA,MAAK,KAAK,MAAM,YAAY,QAAQA,QAAO,SAASA,OAAM,KAAK,KAAK,MAAM,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,YAAY,QAAQ,OAAO,SAAS,KAAK;AAAA,QAChL;AAAA,QACA,OAAO,QAAQ,KAAK,UAAU,UAAU,MAAM;AAC1C,gBAAM,MAAM,KAAK,mBAAmB;AACpC,cAAI,SAAS,WAAY;AACrB,kBAAM,QAAQ,IAAI,OAAM;AAAA,cACpB,OAAO;AAAA,YACX,CAAC;AACD,qBAAS,KAAK;AAAA,UAClB;AACA,cAAI,UAAU;AACd,cAAI,cAAc;AAClB,cAAI,MAAM;AAAA,QACd;AAAA,MACJ;AACA,MAAAD,OAAM,UAAU,YAAY;AAC5B,MAAAA,OAAM,UAAU,sBAAsB,CAAC,OAAO;AAC9C,oBAAcA,MAAK;AACnB,cAAQ,gBAAgBA,QAAO,gBAAgB,GAAG,mCAAmC,CAAC,CAAC;AACvF,cAAQ,gBAAgBA,QAAO,OAAO;AACtC,cAAQ,0BAA0BA,QAAO,QAAQ,CAAC,KAAK,KAAK,SAAS,QAAQ,CAAC;AAC9E,cAAQ,gBAAgBA,QAAO,SAAS,GAAG,mBAAmB,CAAC;AAC/D,cAAQ,gBAAgBA,QAAO,SAAS,GAAG,mBAAmB,CAAC;AAC/D,cAAQ,gBAAgBA,QAAO,aAAa,GAAG,mBAAmB,CAAC;AACnE,cAAQ,gBAAgBA,QAAO,cAAc,GAAG,mBAAmB,CAAC;AAAA;AAAA;;;AClIpE,MAKM,kBAYH,cAA+B,MAAe,IAAW,OAAiB,MAAe,MAAe,mBAC9F,OAwEA;AA1Fb;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAZA,MAYG,eAAe;AAZlB,MAYkC,OAAO;AAZzC,MAYiD,KAAK;AAZtD,MAY4D,QAAQ;AAZpE,MAY6E,OAAO;AAZpF,MAY4F,OAAO;AAZnG,MAY2G,oBAAoB,iBAAiB;AACzI,MAAM,QAAN,cAAoB,MAAM;AAAA,QAC7B,YAAYE,SAAQ;AAChB,gBAAMA,OAAM;AACZ,eAAK,GAAG,aAAa,SAAU,KAAK;AAChC,iBAAK,cAAc,IAAI,KAAK;AAC5B,iBAAK,MAAM;AAAA,UACf,CAAC;AAAA,QACL;AAAA,QACA,UAAU;AACN,iBAAO,KAAK,KAAK,MAAM,EAAE,CAAC;AAAA,QAC9B;AAAA,QACA,SAAS;AACL,iBAAO,KAAK,KAAK,KAAK,EAAE,CAAC;AAAA,QAC7B;AAAA,QACA,cAAc,MAAM;AAChB,cAAI,OAAO,MAAMC;AACjB,gBAAM,OAAO,WAAY;AACrB,iBAAK,MAAM;AAAA,UACf;AACA,eAAKA,MAAI,GAAGA,MAAI,mBAAmBA,OAAK;AACpC,iBAAK,GAAG,iBAAiBA,GAAC,IAAI,cAAc,IAAI;AAAA,UACpD;AAAA,QACJ;AAAA,QACA,WAAW;AACP,iBAAO,KAAK,QAAQ,EAAE,MAAM;AAAA,QAChC;AAAA,QACA,YAAY;AACR,iBAAO,KAAK,QAAQ,EAAE,OAAO;AAAA,QACjC;AAAA,QACA,QAAQ;AACJ,cAAI,OAAO,KAAK,QAAQ,GAAG,MAAM,KAAK,OAAO,GAAG,OAAO,QAAQ,kBAAkB,cAAcC,IAAGC,IAAG;AACrG,cAAI,QAAQ,KAAK;AACb,oBAAQ,KAAK,MAAM;AACnB,qBAAS,KAAK,OAAO;AACrB,+BAAmB,IAAI,iBAAiB;AACxC,2BAAe,IAAI,aAAa;AAChC,4BAAgB,IAAI,cAAc;AAClC,YAAAD,KAAI;AACJ,YAAAC,KAAI;AACJ,oBAAQ,kBAAkB;AAAA,cACtB,KAAK;AACD,gBAAAD,KAAI,QAAQ;AACZ,gBAAAC,KAAI,KAAK;AACT;AAAA,cACJ,KAAK;AACD,gBAAAD,KAAI,QAAQ;AACZ,gBAAAC,KAAI,SAAS;AACb;AAAA,cACJ,KAAK;AACD,gBAAAD,KAAI,QAAQ;AACZ,gBAAAC,KAAI,SAAS;AACb;AAAA,cACJ,KAAK;AACD,gBAAAD,KAAI,KAAK;AACT,gBAAAC,KAAI,SAAS;AACb;AAAA,YACR;AACA,gBAAI,SAAS;AAAA,cACT,GAAG,KAAKD;AAAA,cACR,GAAG,KAAKC;AAAA,cACR;AAAA,cACA;AAAA,YACJ,CAAC;AACD,iBAAK,SAAS;AAAA,cACV,GAAG,KAAKD;AAAA,cACR,GAAG,KAAKC;AAAA,YACZ,CAAC;AAAA,UACL;AAAA,QACJ;AAAA,MACJ;AACA,YAAM,UAAU,YAAY;AAC5B,oBAAc,KAAK;AACZ,MAAM,MAAN,cAAkB,MAAM;AAAA,QAC3B,WAAW,SAAS;AAChB,gBAAM,QAAQ,KAAK,MAAM,GAAG,SAAS,KAAK,OAAO,GAAG,mBAAmB,KAAK,iBAAiB,GAAG,eAAe,KAAK,aAAa,GAAG,gBAAgB,KAAK,cAAc,GAAG,eAAe,KAAK,aAAa;AAC3M,cAAI,UAAU;AACd,cAAI,WAAW;AACf,cAAI,aAAa;AACjB,cAAI,cAAc;AAClB,cAAI,OAAO,iBAAiB,UAAU;AAClC,sBACI,WACI,aACI,cACI,KAAK,IAAI,cAAc,QAAQ,GAAG,SAAS,CAAC;AAAA,UAChE,OACK;AACD,sBAAU,KAAK,IAAI,aAAa,CAAC,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC9D,uBAAW,KAAK,IAAI,aAAa,CAAC,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC/D,0BAAc,KAAK,IAAI,aAAa,CAAC,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAClE,yBAAa,KAAK,IAAI,aAAa,CAAC,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAAA,UACrE;AACA,kBAAQ,UAAU;AAClB,kBAAQ,OAAO,SAAS,CAAC;AACzB,cAAI,qBAAqB,IAAI;AACzB,oBAAQ,QAAQ,QAAQ,gBAAgB,GAAG,CAAC;AAC5C,oBAAQ,OAAO,QAAQ,GAAG,KAAK,aAAa;AAC5C,oBAAQ,QAAQ,QAAQ,gBAAgB,GAAG,CAAC;AAAA,UAChD;AACA,kBAAQ,OAAO,QAAQ,UAAU,CAAC;AAClC,kBAAQ,IAAI,QAAQ,UAAU,UAAU,UAAW,KAAK,KAAK,IAAK,GAAG,GAAG,KAAK;AAC7E,cAAI,qBAAqB,OAAO;AAC5B,oBAAQ,OAAO,QAAQ,SAAS,iBAAiB,CAAC;AAClD,oBAAQ,OAAO,QAAQ,cAAc,SAAS,CAAC;AAC/C,oBAAQ,OAAO,QAAQ,SAAS,iBAAiB,CAAC;AAAA,UACtD;AACA,kBAAQ,OAAO,OAAO,SAAS,WAAW;AAC1C,kBAAQ,IAAI,QAAQ,aAAa,SAAS,aAAa,aAAa,GAAG,KAAK,KAAK,GAAG,KAAK;AACzF,cAAI,qBAAqB,MAAM;AAC3B,oBAAQ,QAAQ,QAAQ,gBAAgB,GAAG,MAAM;AACjD,oBAAQ,OAAO,QAAQ,GAAG,SAAS,aAAa;AAChD,oBAAQ,QAAQ,QAAQ,gBAAgB,GAAG,MAAM;AAAA,UACrD;AACA,kBAAQ,OAAO,YAAY,MAAM;AACjC,kBAAQ,IAAI,YAAY,SAAS,YAAY,YAAY,KAAK,KAAK,GAAG,KAAK,IAAI,KAAK;AACpF,cAAI,qBAAqB,MAAM;AAC3B,oBAAQ,OAAO,IAAI,SAAS,iBAAiB,CAAC;AAC9C,oBAAQ,OAAO,KAAK,cAAc,SAAS,CAAC;AAC5C,oBAAQ,OAAO,IAAI,SAAS,iBAAiB,CAAC;AAAA,UAClD;AACA,kBAAQ,OAAO,GAAG,OAAO;AACzB,kBAAQ,IAAI,SAAS,SAAS,SAAS,KAAK,IAAK,KAAK,KAAK,IAAK,GAAG,KAAK;AACxE,kBAAQ,UAAU;AAClB,kBAAQ,gBAAgB,IAAI;AAAA,QAChC;AAAA,QACA,cAAc;AACV,cAAID,KAAI,GAAGC,KAAI,GAAG,eAAe,KAAK,aAAa,GAAG,gBAAgB,KAAK,cAAc,GAAG,YAAY,KAAK,iBAAiB,GAAG,QAAQ,KAAK,MAAM,GAAG,SAAS,KAAK,OAAO;AAC5K,cAAI,cAAc,IAAI;AAClB,YAAAA,MAAK;AACL,sBAAU;AAAA,UACd,WACS,cAAc,MAAM;AACzB,sBAAU;AAAA,UACd,WACS,cAAc,MAAM;AACzB,YAAAD,MAAK,eAAe;AACpB,qBAAS;AAAA,UACb,WACS,cAAc,OAAO;AAC1B,qBAAS,eAAe;AAAA,UAC5B;AACA,iBAAO;AAAA,YACH,GAAGA;AAAA,YACH,GAAGC;AAAA,YACH;AAAA,YACA;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,UAAU,YAAY;AAC1B,oBAAc,GAAG;AACjB,cAAQ,gBAAgB,KAAK,oBAAoB,IAAI;AACrD,cAAQ,gBAAgB,KAAK,gBAAgB,GAAG,mBAAmB,CAAC;AACpE,cAAQ,gBAAgB,KAAK,iBAAiB,GAAG,mBAAmB,CAAC;AACrE,cAAQ,gBAAgB,KAAK,gBAAgB,GAAG,mCAAmC,CAAC,CAAC;AAAA;AAAA;;;AC5KrF,MAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AACA;AACO,MAAM,OAAN,cAAmB,MAAM;AAAA,QAC5B,WAAW,SAAS;AAChB,gBAAM,eAAe,KAAK,aAAa,GAAG,QAAQ,KAAK,MAAM,GAAG,SAAS,KAAK,OAAO;AACrF,kBAAQ,UAAU;AAClB,cAAI,CAAC,cAAc;AACf,oBAAQ,KAAK,GAAG,GAAG,OAAO,MAAM;AAAA,UACpC,OACK;AACD,iBAAK,oBAAoB,SAAS,OAAO,QAAQ,YAAY;AAAA,UACjE;AACA,kBAAQ,UAAU;AAClB,kBAAQ,gBAAgB,IAAI;AAAA,QAChC;AAAA,MACJ;AACA,WAAK,UAAU,YAAY;AAC3B,oBAAc,IAAI;AAClB,cAAQ,gBAAgB,MAAM,gBAAgB,GAAG,mCAAmC,CAAC,CAAC;AAAA;AAAA;;;ACrBtF,MAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AACA;AACO,MAAM,iBAAN,cAA6B,MAAM;AAAA,QACtC,WAAW,SAAS;AAChB,gBAAM,SAAS,KAAK,WAAW,GAAG,SAAS,KAAK,OAAO,GAAG,QAAQ,KAAK,MAAM,GAAG,eAAe,KAAK,aAAa;AACjH,kBAAQ,UAAU;AAClB,cAAI,CAAC,cAAc;AACf,oBAAQ,OAAO,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;AACvC,qBAASC,MAAI,GAAGA,MAAI,OAAO,QAAQA,OAAK;AACpC,sBAAQ,OAAO,OAAOA,GAAC,EAAE,GAAG,OAAOA,GAAC,EAAE,CAAC;AAAA,YAC3C;AAAA,UACJ,OACK;AACD,iBAAK,uBAAuB,SAAS,QAAQ,OAAO,QAAQ,YAAY;AAAA,UAC5E;AACA,kBAAQ,UAAU;AAClB,kBAAQ,gBAAgB,IAAI;AAAA,QAChC;AAAA,QACA,aAAa;AACT,gBAAM,QAAQ,KAAK,MAAM;AACzB,gBAAM,SAAS,KAAK,MAAM,UAAU;AACpC,gBAAM,SAAS,CAAC;AAChB,mBAASA,MAAI,GAAGA,MAAI,OAAOA,OAAK;AAC5B,mBAAO,KAAK;AAAA,cACR,GAAG,SAAS,KAAK,IAAKA,MAAI,IAAI,KAAK,KAAM,KAAK;AAAA,cAC9C,GAAG,KAAK,SAAS,KAAK,IAAKA,MAAI,IAAI,KAAK,KAAM,KAAK;AAAA,YACvD,CAAC;AAAA,UACL;AACA,iBAAO;AAAA,QACX;AAAA,QACA,cAAc;AACV,gBAAM,SAAS,KAAK,WAAW;AAC/B,cAAI,OAAO,OAAO,CAAC,EAAE;AACrB,cAAI,OAAO,OAAO,CAAC,EAAE;AACrB,cAAI,OAAO,OAAO,CAAC,EAAE;AACrB,cAAI,OAAO,OAAO,CAAC,EAAE;AACrB,iBAAO,QAAQ,CAAC,UAAU;AACtB,mBAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,mBAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,mBAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,mBAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAAA,UACjC,CAAC;AACD,iBAAO;AAAA,YACH,GAAG;AAAA,YACH,GAAG;AAAA,YACH,OAAO,OAAO;AAAA,YACd,QAAQ,OAAO;AAAA,UACnB;AAAA,QACJ;AAAA,QACA,WAAW;AACP,iBAAO,KAAK,OAAO,IAAI;AAAA,QAC3B;AAAA,QACA,YAAY;AACR,iBAAO,KAAK,OAAO,IAAI;AAAA,QAC3B;AAAA,QACA,SAAS,OAAO;AACZ,eAAK,OAAO,QAAQ,CAAC;AAAA,QACzB;AAAA,QACA,UAAU,QAAQ;AACd,eAAK,OAAO,SAAS,CAAC;AAAA,QAC1B;AAAA,MACJ;AACA,qBAAe,UAAU,YAAY;AACrC,qBAAe,UAAU,YAAY;AACrC,qBAAe,UAAU,sBAAsB,CAAC,QAAQ;AACxD,oBAAc,cAAc;AAC5B,cAAQ,gBAAgB,gBAAgB,UAAU,GAAG,mBAAmB,CAAC;AACzE,cAAQ,gBAAgB,gBAAgB,SAAS,GAAG,mBAAmB,CAAC;AACxE,cAAQ,gBAAgB,gBAAgB,gBAAgB,GAAG,mCAAmC,CAAC,CAAC;AAAA;AAAA;;;ACvEhG,MAIM,MACO;AALb;AAAA;AAAA;AACA;AACA;AACA;AACA,MAAM,OAAO,KAAK,KAAK;AAChB,MAAM,OAAN,cAAmB,MAAM;AAAA,QAC5B,WAAW,SAAS;AAChB,kBAAQ,UAAU;AAClB,kBAAQ,IAAI,GAAG,GAAG,KAAK,YAAY,GAAG,GAAG,MAAM,KAAK;AACpD,kBAAQ,OAAO,KAAK,YAAY,GAAG,CAAC;AACpC,kBAAQ,IAAI,GAAG,GAAG,KAAK,YAAY,GAAG,MAAM,GAAG,IAAI;AACnD,kBAAQ,UAAU;AAClB,kBAAQ,gBAAgB,IAAI;AAAA,QAChC;AAAA,QACA,WAAW;AACP,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC;AAAA,QACA,YAAY;AACR,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC;AAAA,QACA,SAAS,OAAO;AACZ,eAAK,YAAY,QAAQ,CAAC;AAAA,QAC9B;AAAA,QACA,UAAU,QAAQ;AACd,eAAK,YAAY,SAAS,CAAC;AAAA,QAC/B;AAAA,MACJ;AACA,WAAK,UAAU,YAAY;AAC3B,WAAK,UAAU,YAAY;AAC3B,WAAK,UAAU,sBAAsB,CAAC,eAAe,aAAa;AAClE,oBAAc,IAAI;AAClB,cAAQ,gBAAgB,MAAM,eAAe,GAAG,mBAAmB,CAAC;AACpE,cAAQ,gBAAgB,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAAA;AAAA;;;AChCpE,MAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AACA;AACO,MAAM,SAAN,cAAqB,MAAM;AAAA,QAC9B,YAAYC,SAAQ;AAChB,gBAAMA,OAAM;AACZ,eAAK,WAAW;AAChB,eAAK,OAAO,IAAI,UAAU,MAAM;AAC5B,kBAAM,UAAU,KAAK;AACrB,iBAAK,WAAW;AAChB,mBAAO;AAAA,UACX,CAAC;AACD,eAAK,GAAG,yBAAyB,WAAY;AACzC,iBAAK,WAAW,CAAC;AAAA,UACrB,CAAC;AACD,eAAK,GAAG,0BAA0B,WAAY;AAC1C,iBAAK,WAAW;AAAA,UACpB,CAAC;AACD,eAAK,GAAG,yBAAyB,WAAY;AACzC,gBAAI,CAAC,KAAK,KAAK,UAAU,GAAG;AACxB;AAAA,YACJ;AACA,0BAAc,KAAK,QAAQ;AAC3B,iBAAK,aAAa;AAAA,UACtB,CAAC;AAAA,QACL;AAAA,QACA,WAAW,SAAS;AAChB,gBAAM,OAAO,KAAK,UAAU,GAAG,QAAQ,KAAK,WAAW,GAAG,MAAM,QAAQ,GAAGC,OAAM,KAAK,WAAW,EAAE,IAAI,GAAG,UAAU,KAAK,aAAa,GAAGC,KAAID,KAAI,MAAM,CAAC,GAAGE,KAAIF,KAAI,MAAM,CAAC,GAAG,QAAQA,KAAI,MAAM,CAAC,GAAG,SAASA,KAAI,MAAM,CAAC,GAAG,QAAQ,KAAK,MAAM;AAC7O,cAAI,KAAK,QAAQ,KAAK,KAAK,UAAU,GAAG;AACpC,oBAAQ,UAAU;AAClB,oBAAQ,KAAK,GAAG,GAAG,OAAO,MAAM;AAChC,oBAAQ,UAAU;AAClB,oBAAQ,gBAAgB,IAAI;AAAA,UAChC;AACA,cAAI,OAAO;AACP,gBAAI,SAAS;AACT,oBAAMG,UAAS,QAAQ,IAAI,GAAG,MAAM,QAAQ;AAC5C,sBAAQ,UAAU,OAAOF,IAAGC,IAAG,OAAO,QAAQC,QAAO,MAAM,CAAC,GAAGA,QAAO,MAAM,CAAC,GAAG,OAAO,MAAM;AAAA,YACjG,OACK;AACD,sBAAQ,UAAU,OAAOF,IAAGC,IAAG,OAAO,QAAQ,GAAG,GAAG,OAAO,MAAM;AAAA,YACrE;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,SAAS,SAAS;AACd,gBAAM,OAAO,KAAK,UAAU,GAAG,QAAQ,KAAK,WAAW,GAAG,MAAM,QAAQ,GAAGF,OAAM,KAAK,WAAW,EAAE,IAAI,GAAG,UAAU,KAAK,aAAa,GAAG,QAAQA,KAAI,MAAM,CAAC,GAAG,SAASA,KAAI,MAAM,CAAC;AACnL,kBAAQ,UAAU;AAClB,cAAI,SAAS;AACT,kBAAMG,UAAS,QAAQ,IAAI;AAC3B,kBAAM,MAAM,QAAQ;AACpB,oBAAQ,KAAKA,QAAO,MAAM,CAAC,GAAGA,QAAO,MAAM,CAAC,GAAG,OAAO,MAAM;AAAA,UAChE,OACK;AACD,oBAAQ,KAAK,GAAG,GAAG,OAAO,MAAM;AAAA,UACpC;AACA,kBAAQ,UAAU;AAClB,kBAAQ,UAAU,IAAI;AAAA,QAC1B;AAAA,QACA,mBAAmB;AACf,iBAAO,MAAM,iBAAiB,IAAI;AAAA,QACtC;AAAA,QACA,eAAe;AACX,gBAAM,OAAO;AACb,eAAK,WAAW,YAAY,WAAY;AACpC,iBAAK,aAAa;AAAA,UACtB,GAAG,MAAO,KAAK,UAAU,CAAC;AAAA,QAC9B;AAAA,QACA,QAAQ;AACJ,cAAI,KAAK,UAAU,GAAG;AAClB;AAAA,UACJ;AACA,gBAAM,QAAQ,KAAK,SAAS;AAC5B,eAAK,KAAK,UAAU,KAAK;AACzB,eAAK,aAAa;AAClB,eAAK,KAAK,MAAM;AAAA,QACpB;AAAA,QACA,OAAO;AACH,eAAK,KAAK,KAAK;AACf,wBAAc,KAAK,QAAQ;AAAA,QAC/B;AAAA,QACA,YAAY;AACR,iBAAO,KAAK,KAAK,UAAU;AAAA,QAC/B;AAAA,QACA,eAAe;AACX,gBAAM,QAAQ,KAAK,WAAW,GAAG,YAAY,KAAK,UAAU,GAAG,aAAa,KAAK,WAAW,GAAG,OAAO,WAAW,SAAS,GAAG,MAAM,KAAK,SAAS;AACjJ,cAAI,QAAQ,MAAM,GAAG;AACjB,iBAAK,WAAW,QAAQ,CAAC;AAAA,UAC7B,OACK;AACD,iBAAK,WAAW,CAAC;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AACA,aAAO,UAAU,YAAY;AAC7B,oBAAc,MAAM;AACpB,cAAQ,gBAAgB,QAAQ,WAAW;AAC3C,cAAQ,gBAAgB,QAAQ,YAAY;AAC5C,cAAQ,gBAAgB,QAAQ,cAAc;AAC9C,cAAQ,gBAAgB,QAAQ,OAAO;AACvC,cAAQ,gBAAgB,QAAQ,cAAc,GAAG,mBAAmB,CAAC;AACrE,cAAQ,gBAAgB,QAAQ,aAAa,IAAI,mBAAmB,CAAC;AACrE,cAAQ,WAAW,QAAQ;AAAA,QACvB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,UAAU;AAAA,MACd,CAAC;AAAA;AAAA;;;AC3GD,MAIa;AAJb;AAAA;AAAA;AACA;AACA;AACA;AACO,MAAM,OAAN,cAAmB,MAAM;AAAA,QAC5B,WAAW,SAAS;AAChB,gBAAM,cAAc,KAAK,YAAY,GAAG,cAAc,KAAK,YAAY,GAAG,YAAY,KAAK,UAAU;AACrG,kBAAQ,UAAU;AAClB,kBAAQ,OAAO,GAAG,IAAI,WAAW;AACjC,mBAASC,MAAI,GAAGA,MAAI,YAAY,GAAGA,OAAK;AACpC,kBAAM,SAASA,MAAI,MAAM,IAAI,cAAc;AAC3C,kBAAMC,KAAI,SAAS,KAAK,IAAKD,MAAI,KAAK,KAAM,SAAS;AACrD,kBAAME,KAAI,KAAK,SAAS,KAAK,IAAKF,MAAI,KAAK,KAAM,SAAS;AAC1D,oBAAQ,OAAOC,IAAGC,EAAC;AAAA,UACvB;AACA,kBAAQ,UAAU;AAClB,kBAAQ,gBAAgB,IAAI;AAAA,QAChC;AAAA,QACA,WAAW;AACP,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC;AAAA,QACA,YAAY;AACR,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC;AAAA,QACA,SAAS,OAAO;AACZ,eAAK,YAAY,QAAQ,CAAC;AAAA,QAC9B;AAAA,QACA,UAAU,QAAQ;AACd,eAAK,YAAY,SAAS,CAAC;AAAA,QAC/B;AAAA,MACJ;AACA,WAAK,UAAU,YAAY;AAC3B,WAAK,UAAU,YAAY;AAC3B,WAAK,UAAU,sBAAsB,CAAC,eAAe,aAAa;AAClE,oBAAc,IAAI;AAClB,cAAQ,gBAAgB,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAClE,cAAQ,gBAAgB,MAAM,eAAe,GAAG,mBAAmB,CAAC;AACpE,cAAQ,gBAAgB,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAAA;AAAA;;;AC/B7D,WAASC,eAAc,QAAQ;AAClC,WAAO,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,OAAO,UAAU;AACnD,UAAI,aAAa,KAAK,IAAI,GAAG;AACzB,cAAM,WAAW,MAAM,QAAQ,CAAC;AAChC,YAAI,YAAY,6BAA6B,KAAK,QAAQ,GAAG;AACzD,cAAI,KAAK,OAAO,QAAQ;AACxB,gBAAM,QAAQ,CAAC,IAAI;AAAA,QACvB,OACK;AACD,cAAI,KAAK,IAAI;AAAA,QACjB;AAAA,MACJ,WACS,6BAA6B,KAAK,QAAQ,MAAM,QAAQ,CAAC,KAAK,GAAG,GAAG;AACzE,YAAI,KAAK,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,MACpC,WACS,QAAQ,KAAK,wBAAwB,KAAK,IAAI,GAAG;AACtD,YAAI,IAAI,SAAS,CAAC,KAAK;AAAA,MAC3B,WACS,MAAM;AACX,YAAI,KAAK,IAAI;AAAA,MACjB;AACA,aAAO;AAAA,IACX,GAAG,CAAC,CAAC;AAAA,EACT;AAmBA,WAAS,sBAAsB;AAC3B,QAAI,wBAAwB,MAAM;AAC9B,aAAO;AAAA,IACX;AACA,0BAAsB;AACtB,QAAI;AACA,YAAMC,KAAI,SAAS,cAAc,QAAQ;AACzC,MAAAA,GAAE,QAAQ;AACV,MAAAA,GAAE,SAAS;AACX,YAAM,MAAMA,GAAE,WAAW,UAAU;AACnC,UAAI,KAAK;AACL,YAAI,cAAc;AAClB,YAAI,cAAc;AAClB,YAAI,aAAa;AACjB,YAAI,gBAAgB;AACpB,YAAI,gBAAgB;AACpB,YAAI,YAAY;AAChB,YAAI,OAAO;AACX,YAAI,SAAS,KAAK,GAAG,EAAE;AACvB,cAAMC,QAAO,IAAI,aAAa,GAAG,GAAG,IAAI,EAAE,EAAE;AAC5C,iBAASC,KAAI,GAAGA,KAAID,MAAK,QAAQC,MAAK,GAAG;AACrC,cAAID,MAAKC,EAAC,IAAI,GAAG;AACb,kCAAsB;AACtB;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,SACOC,KAAG;AAAA,IACV;AACA,WAAO;AAAA,EACX;AACA,WAAS,oBAAoB,YAAY;AACrC,WAAO,WACF,MAAM,GAAG,EACT,IAAI,CAAC,WAAW;AACjB,eAAS,OAAO,KAAK;AACrB,YAAM,WAAW,OAAO,QAAQ,GAAG,KAAK;AACxC,YAAM,YAAY,OAAO,QAAQ,GAAG,KAAK,KAAK,OAAO,QAAQ,GAAG,KAAK;AACrE,UAAI,YAAY,CAAC,WAAW;AACxB,iBAAS,IAAI,MAAM;AAAA,MACvB;AACA,aAAO;AAAA,IACX,CAAC,EACI,KAAK,IAAI;AAAA,EAClB;AAEA,WAASC,mBAAkB;AACvB,QAAIC,eAAc;AACd,aAAOA;AAAA,IACX;AACA,IAAAA,gBAAe,KAAK,oBAAoB,EAAE,WAAW,UAAU;AAC/D,WAAOA;AAAA,EACX;AACA,WAASC,WAAU,SAAS;AACxB,YAAQ,SAAS,KAAK,cAAc,KAAK,eAAe,KAAK,aAAa;AAAA,EAC9E;AACA,WAASC,aAAY,SAAS;AAC1B,YAAQ,QAAQ,cAAc,CAAC;AAC/B,YAAQ,WAAW,KAAK,cAAc,KAAK,eAAe,KAAK,aAAa;AAAA,EAChF;AACA,WAAS,iBAAiBC,SAAQ;AAC9B,IAAAA,UAASA,WAAU,CAAC;AACpB,QAAI,CAACA,QAAO,gCACR,CAACA,QAAO,gCACR,CAACA,QAAO,kBAAkB;AAC1B,MAAAA,QAAO,OAAOA,QAAO,QAAQ;AAAA,IACjC;AACA,WAAOA;AAAA,EACX;AArHA,MA8BM,MAAe,QAAmB,SAAqB,SAAqBC,eAA+B,YAAmB,MAAYC,OAAe,MAAe,YAAqB,KAAa,QAAmB,QAAmB,QAAmB,UAAkBC,QAAaC,QAAiB,KAAa,MAAe,MAAeC,OAAe,UAAgBC,mBAgBhYC,oBACC,qBA+CAV,eAwBS;AAtHb;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAyBA,MAAM,OAAO;AAAb,MAAqB,SAAS;AAA9B,MAAwC,UAAU;AAAlD,MAA6D,UAAU;AAAvE,MAAkFI,gBAAe;AAAjG,MAAiH,aAAa;AAA9H,MAAoI,OAAO;AAA3I,MAAgJC,QAAO;AAAvJ,MAA+J,OAAO;AAAtK,MAA8K,aAAa;AAA3L,MAAmM,MAAM;AAAzM,MAAgN,SAAS;AAAzN,MAAmO,SAAS;AAA5O,MAAsP,SAAS;AAA/P,MAAyQ,WAAW;AAApR,MAA2RC,SAAQ;AAAnS,MAAwSC,SAAQ;AAAhT,MAAyT,MAAM;AAA/T,MAAsU,OAAO;AAA7U,MAAqV,OAAO;AAA5V,MAAoWC,QAAO;AAA3W,MAAmX,WAAW;AAA9X,MAAmYC,oBAAmB;AAAA,QAClZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAhBA,MAgBGC,qBAAoBD,kBAAiB;AACxC,MAAI,sBAAsB;AAuEnB,MAAM,OAAN,cAAmB,MAAM;AAAA,QAC5B,YAAYN,SAAQ;AAChB,gBAAM,iBAAiBA,OAAM,CAAC;AAC9B,eAAK,gBAAgB;AACrB,eAAK,gBAAgB;AACrB,mBAASQ,MAAI,GAAGA,MAAID,oBAAmBC,OAAK;AACxC,iBAAK,GAAGF,kBAAiBE,GAAC,IAAIP,eAAc,KAAK,YAAY;AAAA,UACjE;AACA,eAAK,aAAa;AAAA,QACtB;AAAA,QACA,WAAW,SAAS;AAChB,cAAIQ,KAAI;AACR,gBAAM,UAAU,KAAK,SAAS,aAAa,QAAQ;AACnD,cAAI,CAAC,KAAK,KAAK,GAAG;AACd;AAAA,UACJ;AACA,cAAI,UAAU,KAAK,QAAQ,GAAG,WAAW,KAAK,SAAS,GAAG,eAAe,KAAK,WAAW,IAAI,UAAU,gBAAgB,KAAK,cAAc,GAAG,YAAY,KAAK,UAAU,GAAG,SAAS,GAAG,QAAQ,KAAK,MAAM,GAAG,aAAa,KAAK,SAAS,GAAG,gBAAgB,KAAK,cAAc,GAAG,iBAAiB,KAAK,eAAe,GAAG,OAAO,KAAK,KAAK,GAAG,iBAAiB,KAAK,eAAe,GAAG,kBAAkB,KAAK,gBAAgB,GAAG,kBAAkB,eAAe,QAAQ,WAAW,MAAM,IAAI,oBAAoB,eAAe,QAAQ,cAAc,MAAM,IAAID;AAChiB,sBAAY,cAAc,UAAU,QAAQ,YAAY;AACxD,cAAI,aAAa,eAAe;AAChC,cAAI,WAAW;AACf,cAAI,CAAC,MAAM,qBAAqB;AAC5B,kBAAM,UAAU,KAAK,YAAY,GAAG;AACpC,uBAAW;AACX,kBAAM,UAAUC,MAAK,QAAQ,2BAA2B,QAAQA,QAAO,SAASA,MAAK,QAAQ;AAC7F,kBAAM,WAAW,KAAK,QAAQ,4BAA4B,QAAQ,OAAO,SAAS,KAAK,QAAQ;AAC/F,0BAAc,SAAS,WAAW,IAAI,eAAe;AAAA,UACzD;AACA,cAAI,cAAc,KAAK;AACnB,oBAAQ,QAAQ,aAAa,SAAS;AAAA,UAC1C;AACA,kBAAQ,QAAQ,QAAQ,KAAK,gBAAgB,CAAC;AAC9C,kBAAQ,QAAQ,gBAAgB,QAAQ;AACxC,kBAAQ,QAAQ,aAAaP,KAAI;AACjC,cAAI,kBAAkB,QAAQ;AAC1B,sBAAU,KAAK,UAAU,IAAI,aAAa,eAAe,UAAU,KAAK;AAAA,UAC5E,WACS,kBAAkB,QAAQ;AAC/B,qBAAS,KAAK,UAAU,IAAI,aAAa,eAAe,UAAU;AAAA,UACtE;AACA,kBAAQ,UAAU,SAAS,SAAS,OAAO;AAC3C,eAAKM,MAAI,GAAGA,MAAI,YAAYA,OAAK;AAC7B,gBAAI,iBAAiB;AACrB,gBAAI,iBAAiB;AACrB,kBAAM,MAAM,QAAQA,GAAC,GAAG,OAAO,IAAI,MAAM,QAAQ,IAAI,OAAO,WAAW,IAAI;AAC3E,oBAAQ,KAAK;AACb,gBAAI,UAAUJ,QAAO;AACjB,gCAAkB,aAAa,QAAQ,UAAU;AAAA,YACrD,WACS,UAAU,QAAQ;AACvB,iCAAmB,aAAa,QAAQ,UAAU,KAAK;AAAA,YAC3D;AACA,gBAAI,iBAAiB;AACjB,sBAAQ,KAAK;AACb,sBAAQ,UAAU;AAClB,oBAAM,UAAU,oBAAoB,QAAQ,oBAAoB,SAAS,kBAAmB,CAAC,MAAM,sBAC7F,KAAK,MAAM,WAAW,CAAC,IACvB,KAAK,MAAM,WAAW,CAAC;AAC7B,oBAAMM,KAAI;AACV,oBAAMC,KAAI,aAAa,iBAAiB;AACxC,sBAAQ,OAAOD,IAAGC,EAAC;AACnB,oBAAM,YAAY,UAAU,WAAW,CAAC,WAAW,aAAa,UAAU,IAAI;AAC9E,sBAAQ,OAAOD,KAAI,KAAK,MAAM,SAAS,GAAGC,EAAC;AAC3C,sBAAQ,YAAY,WAAW;AAC/B,oBAAM,WAAW,KAAK,mBAAmB;AACzC,sBAAQ,cAAc,YAAY;AAClC,sBAAQ,OAAO;AACf,sBAAQ,QAAQ;AAAA,YACpB;AACA,kBAAM,oBAAoB;AAC1B,gBAAI,cAAc,QACb,kBAAkB,KAAK,UAAU,WAAW,iBAAiB;AAC9D,oBAAM,eAAe,KAAK,MAAM,GAAG,EAAE,SAAS;AAC9C,oBAAM,QAAQpB,eAAc,IAAI;AAChC,uBAASqB,MAAK,GAAGA,MAAK,MAAM,QAAQA,OAAM;AACtC,sBAAM,SAAS,MAAMA,GAAE;AACvB,oBAAI,WAAW,OAAO,CAAC,YAAY,UAAU,SAAS;AAClD,qCAAmB,aAAa,UAAU,IAAI,SAAS;AAAA,gBAC3D;AACA,qBAAK,gBAAgB;AACrB,qBAAK,gBAAgB,aAAa;AAClC,qBAAK,eAAe;AACpB,oBAAI,gBAAgB;AAChB,0BAAQ,KAAK;AACb,wBAAM,gBAAgB,QAAQ,MAAM,GAAGJ,GAAC;AACxC,wBAAM,oBAAoB,cAAc,OAAO,CAAC,KAAK,SAAS,MAAMjB,eAAc,KAAK,IAAI,EAAE,QAAQ,CAAC;AACtG,wBAAM,YAAYqB,MAAK;AACvB,iCAAe;AAAA,oBACX,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,GAAG;AAAA,oBACH,GAAG,aAAa;AAAA,oBAChB,WAAWJ;AAAA,oBACX,QAAQI;AAAA,oBACR,cAAc;AAAA,oBACd,OAAO,KAAK,YAAY,MAAM,EAAE;AAAA,oBAChC;AAAA,kBACJ,CAAC;AAAA,gBACL;AACA,wBAAQ,gBAAgB,IAAI;AAC5B,oBAAI,gBAAgB;AAChB,0BAAQ,QAAQ;AAAA,gBACpB;AACA,kCAAkB,KAAK,YAAY,MAAM,EAAE,QAAQ;AAAA,cACvD;AAAA,YACJ,OACK;AACD,kBAAI,kBAAkB,GAAG;AACrB,wBAAQ,QAAQ,iBAAiB,GAAG,aAAa,IAAI;AAAA,cACzD;AACA,mBAAK,gBAAgB;AACrB,mBAAK,gBAAgB,aAAa;AAClC,mBAAK,eAAe;AACpB,sBAAQ,gBAAgB,IAAI;AAAA,YAChC;AACA,gBAAI,mBAAmB;AACnB,sBAAQ,KAAK;AACb,sBAAQ,UAAU;AAClB,oBAAM,UAAU,CAAC,MAAM,sBACjB,CAAC,KAAK,MAAM,WAAW,CAAC,IACxB;AACN,oBAAMF,KAAI;AACV,sBAAQ,OAAOA,IAAG,aAAa,iBAAiB,OAAO;AACvD,oBAAM,YAAY,UAAU,WAAW,CAAC,WAAW,aAAa,UAAU,IAAI;AAC9E,sBAAQ,OAAOA,KAAI,KAAK,MAAM,SAAS,GAAG,aAAa,iBAAiB,OAAO;AAC/E,sBAAQ,YAAY,WAAW;AAC/B,oBAAM,WAAW,KAAK,mBAAmB;AACzC,sBAAQ,cAAc,YAAY;AAClC,sBAAQ,OAAO;AACf,sBAAQ,QAAQ;AAAA,YACpB;AACA,oBAAQ,QAAQ;AAChB,gBAAI,aAAa,GAAG;AAChB,4BAAc;AAAA,YAClB;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,SAAS,SAAS;AACd,gBAAM,QAAQ,KAAK,SAAS,GAAG,SAAS,KAAK,UAAU;AACvD,kBAAQ,UAAU;AAClB,kBAAQ,KAAK,GAAG,GAAG,OAAO,MAAM;AAChC,kBAAQ,UAAU;AAClB,kBAAQ,gBAAgB,IAAI;AAAA,QAChC;AAAA,QACA,QAAQ,MAAM;AACV,gBAAM,MAAM,KAAK,UAAU,IAAI,IACzB,OACA,SAAS,QAAQ,SAAS,SACtB,KACA,OAAO;AACjB,eAAK,SAAS,MAAM,GAAG;AACvB,iBAAO;AAAA,QACX;AAAA,QACA,WAAW;AACP,gBAAM,SAAS,KAAK,MAAM,UAAU,QAAQ,KAAK,MAAM,UAAU;AACjE,iBAAO,SAAS,KAAK,aAAa,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM;AAAA,QAC1E;AAAA,QACA,YAAY;AACR,gBAAM,SAAS,KAAK,MAAM,WAAW,QAAQ,KAAK,MAAM,WAAW;AACnE,iBAAO,SACD,KAAK,SAAS,IAAI,KAAK,QAAQ,SAAS,KAAK,WAAW,IACtD,KAAK,QAAQ,IAAI,IACnB,KAAK,MAAM;AAAA,QACrB;AAAA,QACA,eAAe;AACX,iBAAO,KAAK;AAAA,QAChB;AAAA,QACA,gBAAgB;AACZ,eAAK,KAAK,2HAA2H;AACrI,iBAAO,KAAK;AAAA,QAChB;AAAA,QACA,YAAY,MAAM;AACd,cAAID,KAAI,IAAI,IAAI,IAAII,KAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC5C,cAAI,WAAWjB,iBAAgB,GAAG,WAAW,KAAK,SAAS,GAAG;AAC9D,mBAAS,KAAK;AACd,mBAAS,OAAO,KAAK,gBAAgB;AACrC,oBAAU,SAAS,YAAY,IAAI;AACnC,mBAAS,QAAQ;AACjB,gBAAM,cAAc,WAAW;AAC/B,iBAAO;AAAA,YACH,0BAA0Ba,MAAK,QAAQ,6BAA6B,QAAQA,QAAO,SAASA,MAAK,cAAc;AAAA,YAC/G,2BAA2B,KAAK,QAAQ,8BAA8B,QAAQ,OAAO,SAAS,KAAK;AAAA,YACnG,wBAAwB,KAAK,QAAQ,2BAA2B,QAAQ,OAAO,SAAS,KAAK,YAAY;AAAA,YACzG,yBAAyB,KAAK,QAAQ,4BAA4B,QAAQ,OAAO,SAAS,KAAK,eAAe;AAAA,YAC9G,qBAAqBI,MAAK,QAAQ,wBAAwB,QAAQA,QAAO,SAASA,MAAK;AAAA,YACvF,iBAAiB,KAAK,QAAQ,oBAAoB,QAAQ,OAAO,SAAS,KAAK,MAAM;AAAA,YACrF,kBAAkB,KAAK,QAAQ,qBAAqB,QAAQ,OAAO,SAAS,KAAK,MAAM;AAAA,YACvF,wBAAwB,KAAK,QAAQ,2BAA2B,QAAQ,OAAO,SAAS,KAAK,KAAK;AAAA,YAClG,yBAAyB,KAAK,QAAQ,4BAA4B,QAAQ,OAAO,SAAS,KAAK,KAAK;AAAA,YACpG,kBAAkB,KAAK,QAAQ,qBAAqB,QAAQ,OAAO,SAAS,KAAK,oBAAoB;AAAA,YACrG,sBAAsB,KAAK,QAAQ,yBAAyB,QAAQ,OAAO,SAAS,KAAK,MAAM;AAAA,YAC/F,OAAO,QAAQ;AAAA,YACf,QAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA,kBAAkB;AACd,iBAAQ,KAAK,UAAU,IACnBV,SACA,KAAK,YAAY,IACjBA,UACC,KAAK,SAAS,IAAI,YACnB,oBAAoB,KAAK,WAAW,CAAC;AAAA,QAC7C;AAAA,QACA,aAAa,MAAM;AACf,gBAAM,QAAQ,KAAK,MAAM;AACzB,cAAI,UAAU,SAAS;AACnB,mBAAO,KAAK,KAAK;AAAA,UACrB;AACA,gBAAM,QAAQ,KAAK,cAAc,IAAI;AACrC,iBAAO,KAAK,QAAQ,KAAK;AAAA,YACrB,MAAM;AAAA,YACN;AAAA,YACA,iBAAiB;AAAA,UACrB,CAAC;AAAA,QACL;AAAA,QACA,cAAc,MAAM;AAChB,gBAAM,gBAAgB,KAAK,cAAc;AACzC,gBAAM,SAAS,KAAK;AACpB,iBAAOP,iBAAgB,EAAE,YAAY,IAAI,EAAE,QAAQ,gBAAgB;AAAA,QACvE;AAAA,QACA,eAAe;AACX,cAAI,QAAQ,KAAK,KAAK,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,SAAS,GAAG,YAAY,GAAG,eAAe,KAAK,WAAW,IAAI,UAAU,QAAQ,KAAK,MAAM,OAAO,SAAS,KAAK,MAAM,QAAQ,aAAa,UAAU,QAAQ,UAAU,QAAW,cAAc,WAAW,QAAQ,WAAW,QAAW,UAAU,KAAK,QAAQ,GAAG,WAAW,QAAQ,UAAU,GAAG,cAAc,SAAS,UAAU,GAAG,kBAAkB,GAAG,OAAO,KAAK,KAAK,GAAG,aAAa,SAASS,OAAM,aAAa,SAAS,QAAQ,YAAY,oBAAoB,KAAK,SAAS;AAC9gB,eAAK,UAAU,CAAC;AAChB,UAAAT,iBAAgB,EAAE,OAAO,KAAK,gBAAgB;AAC9C,gBAAM,kBAAkB,oBAClB,KAAK,cAAc,QAAQ,IAC3B;AACN,mBAASF,KAAI,GAAGoB,OAAM,MAAM,QAAQpB,KAAIoB,MAAK,EAAEpB,IAAG;AAC9C,gBAAI,OAAO,MAAMA,EAAC;AAClB,gBAAI,YAAY,KAAK,cAAc,IAAI;AACvC,gBAAI,cAAc,YAAY,UAAU;AACpC,qBAAO,KAAK,SAAS,GAAG;AACpB,oBAAI,MAAM,GAAG,OAAOH,eAAc,IAAI,EAAE,QAAQ,QAAQ,IAAI,aAAa;AACzE,uBAAO,MAAM,MAAM;AACf,wBAAM,MAAO,MAAM,SAAU,GAAG,YAAYA,eAAc,IAAI,GAAG,SAAS,UAAU,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,cAAc,KAAK,cAAc,MAAM;AACvJ,wBAAM,yBAAyB,qBAC3B,eACA,kBAAkB,eAAe;AACrC,wBAAM,iBAAiB,yBACjB,cAAc,kBACd;AACN,sBAAI,kBAAkB,UAAU;AAC5B,0BAAM,MAAM;AACZ,4BAAQ;AACR,iCAAa;AAAA,kBACjB,OACK;AACD,2BAAO;AAAA,kBACX;AAAA,gBACJ;AACA,oBAAI,OAAO;AACP,sBAAI,YAAY;AACZ,0BAAMwB,aAAYxB,eAAc,IAAI;AACpC,0BAAM,aAAaA,eAAc,KAAK;AACtC,0BAAM,WAAWwB,WAAU,WAAW,MAAM;AAC5C,0BAAM,oBAAoB,aAAaZ,UAAS,aAAa;AAC7D,wBAAI;AACJ,wBAAI,qBAAqB,cAAc,UAAU;AAC7C,kCAAY,WAAW;AAAA,oBAC3B,OACK;AACD,4BAAM,iBAAiB,WAAW,YAAYA,MAAK;AACnD,4BAAM,gBAAgB,WAAW,YAAY,IAAI;AACjD,kCAAY,KAAK,IAAI,gBAAgB,aAAa,IAAI;AAAA,oBAC1D;AACA,wBAAI,YAAY,GAAG;AACf,4BAAM;AACN,8BAAQY,WAAU,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE;AACvC,mCAAa,KAAK,cAAc,KAAK;AAAA,oBACzC;AAAA,kBACJ;AACA,0BAAQ,MAAM,UAAU;AACxB,uBAAK,aAAa,KAAK;AACvB,8BAAY,KAAK,IAAI,WAAW,UAAU;AAC1C,qCAAmB;AACnB,wBAAM,uBAAuB,KAAK,sBAAsB,eAAe;AACvE,sBAAI,sBAAsB;AACtB,yBAAK,4BAA4B;AACjC;AAAA,kBACJ;AACA,wBAAM,YAAYxB,eAAc,IAAI;AACpC,yBAAO,UAAU,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,SAAS;AAC9C,sBAAI,KAAK,SAAS,GAAG;AACjB,gCAAY,KAAK,cAAc,IAAI;AACnC,wBAAI,aAAa,UAAU;AACvB,2BAAK,aAAa,IAAI;AACtB,yCAAmB;AACnB,kCAAY,KAAK,IAAI,WAAW,SAAS;AACzC;AAAA,oBACJ;AAAA,kBACJ;AAAA,gBACJ,OACK;AACD;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ,OACK;AACD,mBAAK,aAAa,IAAI;AACtB,iCAAmB;AACnB,0BAAY,KAAK,IAAI,WAAW,SAAS;AACzC,kBAAI,KAAK,sBAAsB,eAAe,KAAKG,KAAIoB,OAAM,GAAG;AAC5D,qBAAK,4BAA4B;AAAA,cACrC;AAAA,YACJ;AACA,gBAAI,KAAK,QAAQ,KAAK,QAAQ,SAAS,CAAC,GAAG;AACvC,mBAAK,QAAQ,KAAK,QAAQ,SAAS,CAAC,EAAE,kBAAkB;AAAA,YAC5D;AACA,gBAAI,eAAe,kBAAkB,eAAe,aAAa;AAC7D;AAAA,YACJ;AAAA,UACJ;AACA,eAAK,aAAa;AAClB,eAAK,YAAY;AAAA,QACrB;AAAA,QACA,sBAAsB,iBAAiB;AACnC,gBAAM,WAAW,CAAC,KAAK,SAAS,GAAG,eAAe,KAAK,WAAW,IAAI,UAAU,SAAS,KAAK,MAAM,QAAQ,cAAc,WAAW,QAAQ,WAAW,QAAW,UAAU,KAAK,QAAQ,GAAG,cAAc,SAAS,UAAU,GAAG,OAAO,KAAK,KAAK,GAAG,aAAa,SAAST;AAC3Q,iBAAQ,CAAC,cACJ,eAAe,kBAAkB,eAAe;AAAA,QACzD;AAAA,QACA,8BAA8B;AAC1B,gBAAM,QAAQ,KAAK,MAAM,OAAO,aAAa,UAAU,QAAQ,UAAU,QAAW,UAAU,KAAK,QAAQ,GAAG,WAAW,QAAQ,UAAU,GAAG,oBAAoB,KAAK,SAAS;AAChL,gBAAM,WAAW,KAAK,QAAQ,KAAK,QAAQ,SAAS,CAAC;AACrD,cAAI,CAAC,YAAY,CAAC,mBAAmB;AACjC;AAAA,UACJ;AACA,cAAI,YAAY;AACZ,kBAAM,YAAY,KAAK,cAAc,SAAS,OAAO,QAAQ,IAAI;AACjE,gBAAI,CAAC,WAAW;AACZ,uBAAS,OAAO,SAAS,KAAK,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC;AAAA,YACnE;AAAA,UACJ;AACA,eAAK,QAAQ,OAAO,KAAK,QAAQ,SAAS,GAAG,CAAC;AAC9C,eAAK,aAAa,SAAS,OAAO,QAAQ;AAAA,QAC9C;AAAA,QACA,wBAAwB;AACpB,iBAAO;AAAA,QACX;AAAA,QACA,mBAAmB;AACf,gBAAM,UAAU,KAAK,eAAe,EAAE,QAAQ,WAAW,MAAM,MAC3D,KAAK,eAAe,EAAE,QAAQ,cAAc,MAAM;AACtD,gBAAM,YAAY,KAAK,UAAU;AACjC,cAAI,WAAW,WAAW;AACtB,mBAAO;AAAA,UACX;AACA,cAAI,aAAa,KAAK,mBAAmB,MAAM,KAAK,oBAAoB,GAAG;AACvE,mBAAO;AAAA,UACX;AACA,iBAAO,MAAM,iBAAiB;AAAA,QAClC;AAAA,MACJ;AACA,WAAK,UAAU,YAAYP;AAC3B,WAAK,UAAU,cAAcC;AAC7B,WAAK,UAAU,YAAY;AAC3B,WAAK,UAAU,sBAAsB;AAAA,QACjC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACA,oBAAc,IAAI;AAClB,cAAQ,gBAAgB,MAAM,SAAS,yBAAyB,CAAC;AACjE,cAAQ,gBAAgB,MAAM,UAAU,yBAAyB,CAAC;AAClE,cAAQ,gBAAgB,MAAM,aAAa,OAAO;AAClD,cAAQ,gBAAgB,MAAM,cAAc,OAAO;AACnD,cAAQ,gBAAgB,MAAM,YAAY,IAAI,mBAAmB,CAAC;AAClE,cAAQ,gBAAgB,MAAM,aAAa,MAAM;AACjD,cAAQ,gBAAgB,MAAM,eAAe,MAAM;AACnD,cAAQ,gBAAgB,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAChE,cAAQ,gBAAgB,MAAM,SAASG,KAAI;AAC3C,cAAQ,gBAAgB,MAAM,iBAAiB,GAAG;AAClD,cAAQ,gBAAgB,MAAM,cAAc,GAAG,mBAAmB,CAAC;AACnE,cAAQ,gBAAgB,MAAM,QAAQ,IAAI;AAC1C,cAAQ,gBAAgB,MAAM,YAAY,OAAO,oBAAoB,CAAC;AACtE,cAAQ,gBAAgB,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AACtE,cAAQ,gBAAgB,MAAM,QAAQ,IAAI,mBAAmB,CAAC;AAC9D,cAAQ,gBAAgB,MAAM,kBAAkB,EAAE;AAClD,cAAQ,gBAAgB,MAAM,mBAAmB,QAAW,mBAAmB,CAAC;AAChF,cAAQ,gBAAgB,MAAM,kBAAkB,MAAS;AAAA;AAAA;;;ACzezD,WAASc,WAAU,SAAS;AACxB,YAAQ,SAAS,KAAK,aAAa,GAAG,CAAC;AAAA,EAC3C;AACA,WAASC,aAAY,SAAS;AAC1B,YAAQ,WAAW,KAAK,aAAa,GAAG,CAAC;AAAA,EAC7C;AAbA,MAOMC,eAAmBC,SAOZ;AAdb;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMD,gBAAe;AAArB,MAAyBC,UAAS;AAO3B,MAAM,WAAN,cAAuB,MAAM;AAAA,QAChC,YAAYC,SAAQ;AAChB,gBAAMA,OAAM;AACZ,eAAK,cAAc,KAAK,oBAAoB;AAC5C,eAAK,YAAY,CAAC;AAClB,eAAK,mBAAmB;AACxB,eAAK,GAAG,oBAAoB,WAAY;AACpC,iBAAK,mBAAmB;AACxB,iBAAK,aAAa;AAAA,UACtB,CAAC;AACD,eAAK,GAAG,0JAA0J,KAAK,YAAY;AACnL,eAAK,aAAa;AAAA,QACtB;AAAA,QACA,qBAAqB;AACjB,iBAAO,KAAK,cAAc,KAAK,SAAS;AAAA,QAC5C;AAAA,QACA,kBAAkB,QAAQ;AACtB,cAAI,CAAC,KAAK,MAAM,MAAM;AAClB,mBAAO;AAAA,UACX;AACA,gBAAM,cAAc,KAAK;AACzB,cAAI,SAAS,aAAa;AACtB,mBAAO;AAAA,UACX;AACA,iBAAO,KAAK,4BAA4B,QAAQ,KAAK,SAAS;AAAA,QAClE;AAAA,QACA,qBAAqB;AACjB,eAAK,YAAY,KAAK,cAAc,KAAK,MAAM,IAAI;AACnD,eAAK,aAAa,KAAK,mBAAmB;AAAA,QAC9C;AAAA,QACA,WAAW,SAAS;AAChB,kBAAQ,QAAQ,QAAQ,KAAK,gBAAgB,CAAC;AAC9C,kBAAQ,QAAQ,gBAAgB,KAAK,aAAa,CAAC;AACnD,kBAAQ,QAAQ,aAAa,MAAM;AACnC,kBAAQ,KAAK;AACb,gBAAM,iBAAiB,KAAK,eAAe;AAC3C,gBAAM,OAAO,KAAK,KAAK;AACvB,gBAAM,WAAW,KAAK,SAAS;AAC/B,gBAAM,YAAY,KAAK;AACvB,gBAAM,eAAe,eAAe,QAAQ,WAAW,MAAM;AAC7D,gBAAM,iBAAiB,eAAe,QAAQ,cAAc,MAAM;AAClE,cAAI,cAAc;AACd,oBAAQ,UAAU;AAAA,UACtB;AACA,mBAASC,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACvC,oBAAQ,KAAK;AACb,kBAAM,KAAK,UAAUA,EAAC,EAAE;AACxB,oBAAQ,UAAU,GAAG,GAAG,GAAG,CAAC;AAC5B,oBAAQ,OAAO,UAAUA,EAAC,EAAE,QAAQ;AACpC,iBAAK,cAAc,UAAUA,EAAC,EAAE;AAChC,oBAAQ,gBAAgB,IAAI;AAC5B,gBAAI,cAAc;AACd,kBAAIA,OAAM,GAAG;AACT,wBAAQ,OAAO,GAAG,WAAW,IAAI,CAAC;AAAA,cACtC;AACA,sBAAQ,OAAO,UAAUA,EAAC,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,YACvD;AACA,oBAAQ,QAAQ;AAAA,UACpB;AACA,cAAI,cAAc;AACd,oBAAQ,cAAc;AACtB,oBAAQ,YAAY,WAAW;AAC/B,oBAAQ,OAAO;AAAA,UACnB;AACA,cAAI,gBAAgB;AAChB,oBAAQ,UAAU;AAClB,qBAASA,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACvC,sBAAQ,KAAK;AACb,oBAAM,KAAK,UAAUA,EAAC,EAAE;AACxB,sBAAQ,UAAU,GAAG,GAAG,GAAG,CAAC;AAC5B,sBAAQ,OAAO,UAAUA,EAAC,EAAE,QAAQ;AACpC,kBAAIA,OAAM,GAAG;AACT,wBAAQ,OAAO,GAAG,CAAC;AAAA,cACvB;AACA,sBAAQ,OAAO,UAAUA,EAAC,EAAE,OAAO,CAAC;AACpC,sBAAQ,QAAQ;AAAA,YACpB;AACA,oBAAQ,cAAc;AACtB,oBAAQ,YAAY,WAAW;AAC/B,oBAAQ,OAAO;AAAA,UACnB;AACA,kBAAQ,QAAQ;AAAA,QACpB;AAAA,QACA,SAAS,SAAS;AACd,kBAAQ,UAAU;AAClB,gBAAM,YAAY,KAAK;AACvB,cAAI,UAAU,UAAU,GAAG;AACvB,kBAAM,KAAK,UAAU,CAAC,EAAE;AACxB,oBAAQ,OAAO,GAAG,GAAG,GAAG,CAAC;AAAA,UAC7B;AACA,mBAASA,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACvC,kBAAM,KAAK,UAAUA,EAAC,EAAE;AACxB,oBAAQ,OAAO,GAAG,GAAG,GAAG,CAAC;AAAA,UAC7B;AACA,kBAAQ,QAAQ,aAAa,KAAK,SAAS,CAAC;AAC5C,kBAAQ,QAAQ,eAAe,KAAK,QAAQ;AAC5C,kBAAQ,OAAO;AAAA,QACnB;AAAA,QACA,eAAe;AACX,iBAAO,KAAK;AAAA,QAChB;AAAA,QACA,gBAAgB;AACZ,eAAK,KAAK,2HAA2H;AACrI,iBAAO,KAAK;AAAA,QAChB;AAAA,QACA,QAAQ,MAAM;AACV,iBAAO,KAAK,UAAU,QAAQ,KAAK,MAAM,IAAI;AAAA,QACjD;AAAA,QACA,kBAAkB;AACd,iBAAO,KAAK,UAAU,gBAAgB,KAAK,IAAI;AAAA,QACnD;AAAA,QACA,aAAa,MAAM;AACf,gBAAM,cAAc,KAAK;AACzB,gBAAM,WAAW,YAAY,WAAW,IAAI;AAC5C,mBAAS,KAAK;AACd,mBAAS,OAAO,KAAK,gBAAgB;AACrC,gBAAM,UAAU,SAAS,YAAY,IAAI;AACzC,mBAAS,QAAQ;AACjB,iBAAO;AAAA,YACH,OAAO,QAAQ;AAAA,YACf,QAAQ,SAAS,GAAG,KAAK,SAAS,CAAC,IAAI,EAAE;AAAA,UAC7C;AAAA,QACJ;AAAA,QACA,eAAe;AACX,gBAAM,UAAUC,eAAc,KAAK,KAAK,CAAC;AACzC,cAAI,KAAK,UAAU,MAAM,OAAO;AAC5B,oBAAQ,QAAQ;AAAA,UACpB;AACA,gBAAM,QAAQ,CAAC;AACf,cAAI,QAAQ;AACZ,mBAASD,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACrC,kBAAM,KAAK;AAAA,cACP,MAAM,QAAQA,EAAC;AAAA,cACf,OAAO,KAAK,aAAa,QAAQA,EAAC,CAAC,EAAE;AAAA,YACzC,CAAC;AACD,qBAAS,MAAMA,EAAC,EAAE;AAAA,UACtB;AACA,gBAAM,EAAE,OAAO,eAAe,OAAO,IAAI,KAAK,aAAa,KAAK,MAAM,IAAI;AAC1E,eAAK,YAAY;AACjB,eAAK,aAAa;AAClB,eAAK,YAAY,CAAC;AAClB,cAAI,CAAC,KAAK,MAAM,MAAM;AAClB,mBAAO;AAAA,UACX;AACA,gBAAM,gBAAgB,KAAK,cAAc;AACzC,gBAAM,QAAQ,KAAK,MAAM;AACzB,gBAAM,cAAc,KAAK,YAAY;AACrC,gBAAM,oBAAoB,KAAK,IAAI,GAAG,QAAQ,aAAa;AAC3D,gBAAM,YAAY,KAAK,IAAI,KAAK,cAAc,KAAK,MAAM,QAAQ,IAAI,SAAS,KAAK,eAAe,CAAC;AACnG,cAAIE,UAAS;AACb,cAAI,UAAU,UAAU;AACpB,YAAAA,UAAS,KAAK,IAAI,GAAG,KAAK,aAAa,IAAI,YAAY,CAAC;AAAA,UAC5D;AACA,cAAI,UAAU,SAAS;AACnB,YAAAA,UAAS,KAAK,IAAI,GAAG,KAAK,aAAa,SAAS;AAAA,UACpD;AACA,cAAI,gBAAgBA;AACpB,mBAASF,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACnC,kBAAM,iBAAiB,KAAK,kBAAkB,aAAa;AAC3D,gBAAI,CAAC;AACD;AACJ,kBAAM,OAAO,MAAMA,EAAC,EAAE;AACtB,gBAAI,aAAa,MAAMA,EAAC,EAAE,QAAQ;AAClC,gBAAI,SAAS,OAAO,UAAU,WAAW;AACrC,oBAAM,iBAAiB,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,SAAS;AACvD,6BAAe,KAAK,aAAa,aAAa;AAAA,YAClD;AACA,kBAAM,gBAAgB,gBAAgB;AACtC,kBAAM,eAAe,KAAK,kBAAkB,gBAAgB,KAAK,cAC7D,gBAAgB,KAAK,cAAc,oBACjC,KAAK,aACL,aAAa;AACnB,gBAAI,CAAC,cAAc;AACf;AAAA,YACJ;AACA,kBAAMG,SAAQ,KAAK,cAAc,eAAe,GAAG,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC;AACnG,gBAAI,OAAO;AACX,gBAAI,aAAa;AACb,kBAAI;AACA,uBAAO,YAAY,MAAMH,KAAI,CAAC,EAAE,MAAM,IAAI,IAAI,KAAK,SAAS;AAAA,cAChE,SACOI,KAAG;AACN,uBAAO;AAAA,cACX;AAAA,YACJ;AACA,2BAAe,KAAK;AACpB,yBAAa,KAAK;AAClB,iBAAK,aAAa;AAClB,kBAAM,WAAW,KAAK,eAAe,OAAOD,SAAQ,GAAK,eAAe,GAAG,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC;AAC3H,kBAAM,WAAW,KAAK,MAAM,aAAa,IAAI,eAAe,GAAG,aAAa,IAAI,eAAe,CAAC;AAChG,iBAAK,UAAU,KAAK;AAAA,cAChB,YAAY,SAAS;AAAA,cACrB,YAAY,SAAS;AAAA,cACrB,MAAM,QAAQH,EAAC;AAAA,cACf;AAAA,cACA,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,OAAOG;AAAA,YACX,CAAC;AACD,6BAAiB;AAAA,UACrB;AAAA,QACJ;AAAA,QACA,cAAc;AACV,cAAI,CAAC,KAAK,UAAU,QAAQ;AACxB,mBAAO;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,OAAO;AAAA,cACP,QAAQ;AAAA,YACZ;AAAA,UACJ;AACA,gBAAM,SAAS,CAAC;AAChB,eAAK,UAAU,QAAQ,SAAU,MAAM;AACnC,mBAAO,KAAK,KAAK,GAAG,CAAC;AACrB,mBAAO,KAAK,KAAK,GAAG,CAAC;AACrB,mBAAO,KAAK,KAAK,GAAG,CAAC;AACrB,mBAAO,KAAK,KAAK,GAAG,CAAC;AAAA,UACzB,CAAC;AACD,cAAI,OAAO,OAAO,CAAC,KAAK;AACxB,cAAI,OAAO,OAAO,CAAC,KAAK;AACxB,cAAI,OAAO,OAAO,CAAC,KAAK;AACxB,cAAI,OAAO,OAAO,CAAC,KAAK;AACxB,cAAIE,IAAGC;AACP,mBAASN,KAAI,GAAGA,KAAI,OAAO,SAAS,GAAGA,MAAK;AACxC,YAAAK,KAAI,OAAOL,KAAI,CAAC;AAChB,YAAAM,KAAI,OAAON,KAAI,IAAI,CAAC;AACpB,mBAAO,KAAK,IAAI,MAAMK,EAAC;AACvB,mBAAO,KAAK,IAAI,MAAMA,EAAC;AACvB,mBAAO,KAAK,IAAI,MAAMC,EAAC;AACvB,mBAAO,KAAK,IAAI,MAAMA,EAAC;AAAA,UAC3B;AACA,gBAAM,WAAW,KAAK,SAAS;AAC/B,iBAAO;AAAA,YACH,GAAG,OAAO,WAAW;AAAA,YACrB,GAAG,OAAO,WAAW;AAAA,YACrB,OAAO,OAAO,OAAO;AAAA,YACrB,QAAQ,OAAO,OAAO;AAAA,UAC1B;AAAA,QACJ;AAAA,QACA,UAAU;AACN,eAAK,cAAc,KAAK,WAAW;AACnC,iBAAO,MAAM,QAAQ;AAAA,QACzB;AAAA,MACJ;AACA,eAAS,UAAU,YAAYX;AAC/B,eAAS,UAAU,cAAcC;AACjC,eAAS,UAAU,eAAeD;AAClC,eAAS,UAAU,iBAAiBC;AACpC,eAAS,UAAU,YAAY;AAC/B,eAAS,UAAU,sBAAsB,CAAC,QAAQ,YAAY,MAAM;AACpE,oBAAc,QAAQ;AACtB,cAAQ,gBAAgB,UAAU,MAAM;AACxC,cAAQ,gBAAgB,UAAU,cAAc,OAAO;AACvD,cAAQ,gBAAgB,UAAU,YAAY,IAAI,mBAAmB,CAAC;AACtE,cAAQ,gBAAgB,UAAU,aAAaE,OAAM;AACrD,cAAQ,gBAAgB,UAAU,SAAS,MAAM;AACjD,cAAQ,gBAAgB,UAAU,iBAAiB,GAAG,mBAAmB,CAAC;AAC1E,cAAQ,gBAAgB,UAAU,gBAAgB,QAAQ;AAC1D,cAAQ,gBAAgB,UAAU,eAAeA,OAAM;AACvD,cAAQ,gBAAgB,UAAU,QAAQD,aAAY;AACtD,cAAQ,gBAAgB,UAAU,kBAAkB,EAAE;AACtD,cAAQ,gBAAgB,UAAU,eAAe,MAAS;AAC1D,cAAQ,gBAAgB,UAAU,aAAa,SAAS;AAAA;AAAA;;;AC5NxD,WAAS,UAAU,YAAY,KAAK,cAAc;AAC9C,QAAI,eAAe,WAAW;AAC1B,aAAO;AAAA,IACX;AACA,WAAO,KAAK,SAAS,OAAO,UAAU,KAAK,CAAC;AAC5C,UAAM,SAAU,KAAK,SAAS,GAAG,IAAI,MAAO,OAAO;AACnD,QAAI,KAAK,SAAS,OAAO,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,OAAO,GAAG,IAAI,GAAG;AACxE,aAAO;AAAA,IACX,WACS,KAAK,SAAS,OAAO,KAAK,MAAM,KAAK,IAAI,GAAG;AACjD,aAAO;AAAA,IACX,WACS,KAAK,SAAS,OAAO,KAAK,MAAM,KAAK,IAAI,GAAG;AACjD,aAAO;AAAA,IACX,WACS,KAAK,SAAS,OAAO,MAAM,MAAM,MAAM,IAAI,GAAG;AACnD,aAAO;AAAA,IACX,WACS,KAAK,SAAS,OAAO,MAAM,MAAM,MAAM,IAAI,GAAG;AACnD,aAAO;AAAA,IACX,WACS,KAAK,SAAS,OAAO,MAAM,MAAM,MAAM,IAAI,GAAG;AACnD,aAAO;AAAA,IACX,WACS,KAAK,SAAS,OAAO,MAAM,MAAM,MAAM,IAAI,GAAG;AACnD,aAAO;AAAA,IACX,WACS,KAAK,SAAS,OAAO,MAAM,MAAM,MAAM,IAAI,GAAG;AACnD,aAAO;AAAA,IACX,OACK;AACD,WAAK,MAAM,yDAAyD,KAAK;AACzE,aAAO;AAAA,IACX;AAAA,EACJ;AAYA,WAAS,UAAU,OAAO;AACtB,WAAO;AAAA,MACH,GAAG,MAAM,IACJ,MAAM,QAAQ,IAAK,KAAK,IAAI,MAAM,QAAQ,IAC1C,MAAM,SAAS,IAAK,KAAK,IAAI,CAAC,MAAM,QAAQ;AAAA,MACjD,GAAG,MAAM,IACJ,MAAM,SAAS,IAAK,KAAK,IAAI,MAAM,QAAQ,IAC3C,MAAM,QAAQ,IAAK,KAAK,IAAI,MAAM,QAAQ;AAAA,IACnD;AAAA,EACJ;AACA,WAAS,kBAAkB,OAAO,UAAU,OAAO;AAC/C,UAAMU,KAAI,MAAM,KACX,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,QAAQ,KACtC,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,QAAQ;AAC3C,UAAMC,KAAI,MAAM,KACX,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,QAAQ,KACtC,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,QAAQ;AAC3C,WAAO;AAAA,MACH,GAAG;AAAA,MACH,UAAU,MAAM,WAAW;AAAA,MAC3B,GAAAD;AAAA,MACA,GAAAC;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,mBAAmB,OAAO,UAAU;AACzC,UAAM,SAAS,UAAU,KAAK;AAC9B,WAAO,kBAAkB,OAAO,UAAU,MAAM;AAAA,EACpD;AACA,WAAS,QAAQ,OAAO,gBAAgB,KAAK;AACzC,QAAI,UAAU;AACd,aAASC,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACnC,YAAM,QAAQ,MAAM,SAAS,MAAMA,EAAC,CAAC;AACrC,YAAM,UAAU,KAAK,IAAI,QAAQ,cAAc,KAAK,KAAK,KAAK;AAC9D,YAAM,MAAM,KAAK,IAAI,SAAS,KAAK,KAAK,IAAI,OAAO;AACnD,UAAI,MAAM,KAAK;AACX,kBAAU;AAAA,MACd;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AA42BA,WAAS,gBAAgB,KAAK;AAC1B,QAAI,EAAE,eAAe,QAAQ;AACzB,WAAK,KAAK,yCAAyC;AAAA,IACvD;AACA,QAAI,eAAe,OAAO;AACtB,UAAI,QAAQ,SAAU,MAAM;AACxB,YAAI,cAAc,QAAQ,IAAI,MAAM,IAAI;AACpC,eAAK,KAAK,0BACN,OACA,4BACA,cAAc,KAAK,IAAI,CAAC;AAAA,QAChC;AAAA,MACJ,CAAC;AAAA,IACL;AACA,WAAO,OAAO,CAAC;AAAA,EACnB;AAxgCA,MASM,aACAC,mBAoBA,YACAC,uBAcA,QAUA,cAoCA,eAUA,kBAyCF,yBACS;AA/Ib;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc;AACpB,MAAMD,oBAAmB;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ,EACK,IAAI,CAACE,QAAMA,MAAI,IAAI,WAAW,EAAE,EAChC,KAAK,GAAG;AACb,MAAM,aAAa;AACnB,MAAMD,wBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACA,MAAM,SAAS;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,MACpB;AACA,MAAM,eAAe,kBAAkB,MAAM;AAoC7C,MAAM,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACA,MAAM,mBAAmB;AAyCzB,MAAI,0BAA0B;AACvB,MAAM,cAAN,cAA0B,MAAM;AAAA,QACnC,YAAYE,SAAQ;AAChB,gBAAMA,OAAM;AACZ,eAAK,oBAAoB;AACzB,eAAK,gBAAgB;AACrB,eAAK,mBAAmB;AACxB,eAAK,gBAAgB;AACrB,eAAK,mBAAmB,KAAK,iBAAiB,KAAK,IAAI;AACvD,eAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,eAAK,SAAS,KAAK,OAAO,KAAK,IAAI;AACnC,eAAK,GAAGH,mBAAkB,KAAK,MAAM;AACrC,cAAI,KAAK,QAAQ,GAAG;AAChB,iBAAK,OAAO;AAAA,UAChB;AAAA,QACJ;AAAA,QACA,SAAS,MAAM;AACX,eAAK,QAAQ,IAAI;AACjB,iBAAO;AAAA,QACX;AAAA,QACA,QAAQ,MAAM;AACV,eAAK,KAAK,2HAA2H;AACrI,iBAAO,KAAK,SAAS,CAAC,IAAI,CAAC;AAAA,QAC/B;AAAA,QACA,UAAU;AACN,iBAAO,KAAK,UAAU,KAAK,OAAO,CAAC;AAAA,QACvC;AAAA,QACA,qBAAqB;AACjB,iBAAO,cAAc,KAAK;AAAA,QAC9B;AAAA,QACA,SAAS,QAAQ,CAAC,GAAG;AACjB,cAAI,KAAK,UAAU,KAAK,OAAO,QAAQ;AACnC,iBAAK,OAAO;AAAA,UAChB;AACA,gBAAM,gBAAgB,MAAM,OAAO,CAAC,SAAS;AACzC,gBAAI,KAAK,aAAa,IAAI,GAAG;AACzB,mBAAK,MAAM,6EAA6E;AACxF,qBAAO;AAAA,YACX;AACA,mBAAO;AAAA,UACX,CAAC;AACD,eAAK,SAAS,QAAQ;AACtB,cAAI,MAAM,WAAW,KAAK,KAAK,sBAAsB,GAAG;AACpD,iBAAK,SAAS,MAAM,CAAC,EAAE,oBAAoB,CAAC;AAAA,UAChD,OACK;AACD,iBAAK,SAAS,CAAC;AAAA,UACnB;AACA,eAAK,OAAO,QAAQ,CAAC,SAAS;AAC1B,kBAAM,WAAW,MAAM;AACnB,kBAAI,KAAK,MAAM,EAAE,WAAW,KAAK,KAAK,sBAAsB,GAAG;AAC3D,qBAAK,SAAS,KAAK,MAAM,EAAE,CAAC,EAAE,oBAAoB,CAAC;AAAA,cACvD;AACA,mBAAK,qBAAqB;AAC1B,kBAAI,CAAC,KAAK,iBAAiB,CAAC,KAAK,WAAW,GAAG;AAC3C,qBAAK,OAAO;AAAA,cAChB;AAAA,YACJ;AACA,gBAAI,KAAK,oBAAoB,QAAQ;AACjC,oBAAM,mBAAmB,KAAK,oBACzB,IAAI,CAAC,SAAS,OAAO,YAAY,KAAK,mBAAmB,CAAC,EAC1D,KAAK,GAAG;AACb,mBAAK,GAAG,kBAAkB,QAAQ;AAAA,YACtC;AACA,iBAAK,GAAGC,sBAAqB,IAAI,CAACC,QAAMA,MAAI,IAAI,KAAK,mBAAmB,CAAC,EAAE,EAAE,KAAK,GAAG,GAAG,QAAQ;AAChG,iBAAK,GAAG,2BAA2B,KAAK,mBAAmB,CAAC,IAAI,QAAQ;AACxE,iBAAK,WAAW,IAAI;AAAA,UACxB,CAAC;AACD,eAAK,qBAAqB;AAC1B,gBAAM,kBAAkB,CAAC,CAAC,KAAK,QAAQ,WAAW;AAClD,cAAI,iBAAiB;AACjB,iBAAK,OAAO;AAAA,UAChB;AACA,iBAAO;AAAA,QACX;AAAA,QACA,WAAW,MAAM;AACb,cAAI;AACJ,eAAK,GAAG,aAAa,KAAK,mBAAmB,CAAC,IAAI,CAACA,QAAM;AACrD,sBAAU,KAAK,oBAAoB;AACnC,gBAAI,CAAC,KAAK,WAAW,KAAK,SAAS,KAAK,QAAQ,OAAO,GAAG;AACtD,mBAAK,UAAUA,KAAG,KAAK;AAAA,YAC3B;AAAA,UACJ,CAAC;AACD,eAAK,GAAG,YAAY,KAAK,mBAAmB,CAAC,IAAI,CAACA,QAAM;AACpD,gBAAI,CAAC,SAAS;AACV;AAAA,YACJ;AACA,kBAAM,MAAM,KAAK,oBAAoB;AACrC,kBAAM,KAAK,IAAI,IAAI,QAAQ;AAC3B,kBAAM,KAAK,IAAI,IAAI,QAAQ;AAC3B,iBAAK,MAAM,EAAE,QAAQ,CAAC,cAAc;AAChC,kBAAI,cAAc,MAAM;AACpB;AAAA,cACJ;AACA,kBAAI,UAAU,WAAW,GAAG;AACxB;AAAA,cACJ;AACA,oBAAM,WAAW,UAAU,oBAAoB;AAC/C,wBAAU,oBAAoB;AAAA,gBAC1B,GAAG,SAAS,IAAI;AAAA,gBAChB,GAAG,SAAS,IAAI;AAAA,cACpB,CAAC;AACD,wBAAU,UAAUA,GAAC;AAAA,YACzB,CAAC;AACD,sBAAU;AAAA,UACd,CAAC;AAAA,QACL;AAAA,QACA,WAAW;AACP,iBAAO,KAAK,UAAU,CAAC;AAAA,QAC3B;AAAA,QACA,kBAAkB;AACd,iBAAO,KAAK;AAAA,QAChB;AAAA,QACA,SAAS;AACL,cAAI,KAAK,QAAQ;AACb,iBAAK,OAAO,QAAQ,CAAC,SAAS;AAC1B,mBAAK,IAAI,MAAM,KAAK,mBAAmB,CAAC;AAAA,YAC5C,CAAC;AAAA,UACL;AACA,eAAK,SAAS,CAAC;AACf,eAAK,qBAAqB;AAAA,QAC9B;AAAA,QACA,uBAAuB;AACnB,eAAK,YAAY,UAAU;AAC3B,eAAK,YAAY,WAAW;AAC5B,eAAK,6BAA6B,mBAAmB;AAAA,QACzD;AAAA,QACA,eAAe;AACX,iBAAO,KAAK,UAAU,YAAY,KAAK,aAAa;AAAA,QACxD;AAAA,QACA,eAAe,MAAM,MAAM,KAAK,SAAS,GAAG,UAAU;AAClD,gBAAM,OAAO,KAAK,cAAc;AAAA,YAC5B,eAAe;AAAA,YACf,YAAY;AAAA,YACZ,YAAY,KAAK,aAAa;AAAA,UAClC,CAAC;AACD,gBAAM,WAAW,KAAK,iBAAiB,QAAQ;AAC/C,gBAAM,SAAS,KAAK,oBAAoB,QAAQ;AAChD,gBAAM,KAAK,KAAK,IAAI,SAAS,IAAI,KAAK,QAAQ,IAAI,SAAS;AAC3D,gBAAM,KAAK,KAAK,IAAI,SAAS,IAAI,KAAK,QAAQ,IAAI,SAAS;AAC3D,gBAAM,YAAY,MAAM,SAAS,KAAK,oBAAoB,CAAC,IAAI,KAAK,KAAK,MACpE,KAAK,KAAK;AACf,gBAAM,MAAM;AAAA,YACR,GAAG,OAAO,IAAI,KAAK,KAAK,IAAI,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ;AAAA,YAC/D,GAAG,OAAO,IAAI,KAAK,KAAK,IAAI,QAAQ,IAAI,KAAK,KAAK,IAAI,QAAQ;AAAA,YAC9D,OAAO,KAAK,QAAQ,SAAS;AAAA,YAC7B,QAAQ,KAAK,SAAS,SAAS;AAAA,YAC/B;AAAA,UACJ;AACA,iBAAO,kBAAkB,KAAK,CAAC,MAAM,SAAS,GAAG,GAAG;AAAA,YAChD,GAAG;AAAA,YACH,GAAG;AAAA,UACP,CAAC;AAAA,QACL;AAAA,QACA,gBAAgB;AACZ,gBAAM,OAAO,KAAK,QAAQ;AAC1B,cAAI,CAAC,MAAM;AACP,mBAAO;AAAA,cACH,GAAG,CAAC;AAAA,cACJ,GAAG,CAAC;AAAA,cACJ,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,UAAU;AAAA,YACd;AAAA,UACJ;AACA,gBAAM,cAAc,CAAC;AACrB,eAAK,MAAM,EAAE,IAAI,CAACE,UAAS;AACvB,kBAAM,MAAMA,MAAK,cAAc;AAAA,cAC3B,eAAe;AAAA,cACf,YAAY;AAAA,cACZ,YAAY,KAAK,aAAa;AAAA,YAClC,CAAC;AACD,kBAAM,SAAS;AAAA,cACX,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE;AAAA,cACrB,EAAE,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,IAAI,EAAE;AAAA,cACjC,EAAE,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,IAAI,IAAI,IAAI,OAAO;AAAA,cAC9C,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,OAAO;AAAA,YACtC;AACA,kBAAM,QAAQA,MAAK,qBAAqB;AACxC,mBAAO,QAAQ,SAAU,OAAO;AAC5B,oBAAM,cAAc,MAAM,MAAM,KAAK;AACrC,0BAAY,KAAK,WAAW;AAAA,YAChC,CAAC;AAAA,UACL,CAAC;AACD,gBAAMC,MAAK,IAAI,UAAU;AACzB,UAAAA,IAAG,OAAO,CAAC,MAAM,SAAS,KAAK,SAAS,CAAC,CAAC;AAC1C,cAAI,OAAO,UAAU,OAAO,UAAU,OAAO,WAAW,OAAO;AAC/D,sBAAY,QAAQ,SAAU,OAAO;AACjC,kBAAM,cAAcA,IAAG,MAAM,KAAK;AAClC,gBAAI,SAAS,QAAW;AACpB,qBAAO,OAAO,YAAY;AAC1B,qBAAO,OAAO,YAAY;AAAA,YAC9B;AACA,mBAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,mBAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,mBAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,mBAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAAA,UACvC,CAAC;AACD,UAAAA,IAAG,OAAO;AACV,gBAAMC,KAAID,IAAG,MAAM,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;AACvC,iBAAO;AAAA,YACH,GAAGC,GAAE;AAAA,YACL,GAAGA,GAAE;AAAA,YACL,OAAO,OAAO;AAAA,YACd,QAAQ,OAAO;AAAA,YACf,UAAU,MAAM,SAAS,KAAK,SAAS,CAAC;AAAA,UAC5C;AAAA,QACJ;AAAA,QACA,OAAO;AACH,iBAAO,KAAK,aAAa,EAAE;AAAA,QAC/B;AAAA,QACA,OAAO;AACH,iBAAO,KAAK,aAAa,EAAE;AAAA,QAC/B;AAAA,QACA,WAAW;AACP,iBAAO,KAAK,aAAa,EAAE;AAAA,QAC/B;AAAA,QACA,YAAY;AACR,iBAAO,KAAK,aAAa,EAAE;AAAA,QAC/B;AAAA,QACA,kBAAkB;AACd,eAAK,YAAY;AACjB,wBAAc,QAAQ,CAAC,SAAS;AAC5B,iBAAK,cAAc,IAAI;AAAA,UAC3B,CAAC;AACD,eAAK,cAAc,SAAS;AAC5B,eAAK,mBAAmB;AAAA,QAC5B;AAAA,QACA,cAAc,MAAM;AAChB,gBAAM,SAAS,IAAI,KAAK;AAAA,YACpB,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,aAAa;AAAA,YACb,MAAM,OAAO;AAAA,YACb,cAAc;AAAA,YACd,WAAW;AAAA,YACX,gBAAgB,eAAe,KAAK;AAAA,UACxC,CAAC;AACD,gBAAMC,QAAO;AACb,iBAAO,GAAG,wBAAwB,SAAUL,KAAG;AAC3C,YAAAK,MAAK,iBAAiBL,GAAC;AAAA,UAC3B,CAAC;AACD,iBAAO,GAAG,aAAa,CAACA,QAAM;AAC1B,mBAAO,SAAS;AAChB,YAAAA,IAAE,eAAe;AAAA,UACrB,CAAC;AACD,iBAAO,GAAG,WAAW,CAACA,QAAM;AACxB,YAAAA,IAAE,eAAe;AAAA,UACrB,CAAC;AACD,iBAAO,GAAG,cAAc,MAAM;AAC1B,kBAAM,MAAM,MAAM,SAAS,KAAK,SAAS,CAAC;AAC1C,kBAAM,eAAe,KAAK,mBAAmB;AAC7C,kBAAM,SAAS,UAAU,MAAM,KAAK,YAAY;AAChD,mBAAO,SAAS,EAAE,YACb,OAAO,SAAS,EAAE,QAAQ,MAAM,SAAS;AAC9C,iBAAK,gBAAgB;AAAA,UACzB,CAAC;AACD,iBAAO,GAAG,YAAY,MAAM;AACxB,mBAAO,SAAS,EAAE,YACb,OAAO,SAAS,EAAE,QAAQ,MAAM,SAAS;AAC9C,iBAAK,gBAAgB;AAAA,UACzB,CAAC;AACD,eAAK,IAAI,MAAM;AAAA,QACnB;AAAA,QACA,cAAc;AACV,gBAAM,OAAO,IAAI,MAAM;AAAA,YACnB,MAAM;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,UAAU,KAAK,OAAO;AAClB,oBAAMG,MAAK,MAAM,UAAU;AAC3B,oBAAM,UAAUA,IAAG,QAAQ;AAC3B,oBAAM,QAAQ,MAAM,MAAM;AAC1B,oBAAM,SAAS,MAAM,OAAO;AAC5B,kBAAI,UAAU;AACd,kBAAI,KAAK,CAAC,SAAS,CAAC,SAAS,QAAQ,UAAU,GAAG,SAAS,UAAU,CAAC;AACtE,kBAAIA,IAAG,cAAc,KAAKA,IAAG,kBAAkB,GAAG;AAC9C,sBAAM,oBAAoBA,IAAG,kBAAkB;AAC/C,sBAAM,qBAAqBA,IAAG,mBAAmB;AACjD,sBAAM,MAAM,KAAK,SAAS,iBAAiB;AAC3C,sBAAM,OAAO,KAAK,IAAI,GAAG;AACzB,sBAAM,OAAO,CAAC,KAAK,IAAI,GAAG;AAC1B,sBAAM,KAAK,QAAQ;AACnB,sBAAM,KAAK,SAAS;AACpB,oBAAIG,KAAI;AACR,oBAAI,OAAO,GAAG;AACV,kBAAAA,KAAI,KAAK,IAAIA,IAAG,CAAC,KAAK,IAAI;AAAA,gBAC9B,WACS,OAAO,GAAG;AACf,kBAAAA,KAAI,KAAK,IAAIA,KAAI,SAAS,MAAM,IAAI;AAAA,gBACxC;AACA,oBAAI,OAAO,GAAG;AACV,kBAAAA,KAAI,KAAK,IAAIA,IAAG,CAAC,KAAK,IAAI;AAAA,gBAC9B,WACS,OAAO,GAAG;AACf,kBAAAA,KAAI,KAAK,IAAIA,KAAI,QAAQ,MAAM,IAAI;AAAA,gBACvC;AACA,sBAAM,QAAQ,KAAK,OAAOA;AAC1B,sBAAM,QAAQ,KAAK,OAAOA;AAC1B,sBAAM,OAAO,KAAK,MAAM,MAAM;AAC9B,sBAAM,OAAO,QAAQ,OAAO,qBAAqB;AACjD,sBAAM,OAAO,QAAQ,OAAO,qBAAqB;AACjD,oBAAI,OAAO,OAAO,KAAK;AACvB,oBAAI,OAAO,MAAM,IAAI;AAAA,cACzB;AACA,kBAAI,gBAAgB,KAAK;AAAA,YAC7B;AAAA,YACA,SAAS,CAAC,KAAK,UAAU;AACrB,kBAAI,CAAC,KAAK,wBAAwB,GAAG;AACjC;AAAA,cACJ;AACA,oBAAM,UAAU,KAAK,QAAQ;AAC7B,kBAAI,UAAU;AACd,kBAAI,KAAK,CAAC,SAAS,CAAC,SAAS,MAAM,MAAM,IAAI,UAAU,GAAG,MAAM,OAAO,IAAI,UAAU,CAAC;AACtF,kBAAI,gBAAgB,KAAK;AAAA,YAC7B;AAAA,UACJ,CAAC;AACD,eAAK,IAAI,IAAI;AACb,eAAK,WAAW,IAAI;AACpB,eAAK,GAAG,aAAa,CAACN,QAAM;AACxB,YAAAA,IAAE,eAAe;AAAA,UACrB,CAAC;AACD,eAAK,GAAG,YAAY,CAACA,QAAM;AACvB,YAAAA,IAAE,eAAe;AAAA,UACrB,CAAC;AACD,eAAK,GAAG,WAAW,CAACA,QAAM;AACtB,YAAAA,IAAE,eAAe;AAAA,UACrB,CAAC;AACD,eAAK,GAAG,YAAY,CAACA,QAAM;AACvB,iBAAK,OAAO;AAAA,UAChB,CAAC;AAAA,QACL;AAAA,QACA,iBAAiBA,KAAG;AAChB,cAAI,KAAK,eAAe;AACpB;AAAA,UACJ;AACA,eAAK,oBAAoBA,IAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC;AACrD,gBAAM,QAAQ,KAAK,aAAa;AAChC,gBAAM,QAAQ,MAAM;AACpB,gBAAM,SAAS,MAAM;AACrB,gBAAM,aAAa,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAC,CAAC;AACrE,eAAK,MAAM,KAAK,IAAI,SAAS,UAAU;AACvC,eAAK,MAAM,KAAK,IAAI,QAAQ,UAAU;AACtC,cAAI,OAAO,WAAW,aAAa;AAC/B,mBAAO,iBAAiB,aAAa,KAAK,gBAAgB;AAC1D,mBAAO,iBAAiB,aAAa,KAAK,gBAAgB;AAC1D,mBAAO,iBAAiB,WAAW,KAAK,gBAAgB,IAAI;AAC5D,mBAAO,iBAAiB,YAAY,KAAK,gBAAgB,IAAI;AAAA,UACjE;AACA,eAAK,gBAAgB;AACrB,gBAAM,KAAKA,IAAE,OAAO,oBAAoB;AACxC,gBAAM,MAAMA,IAAE,OAAO,SAAS,EAAE,mBAAmB;AACnD,eAAK,oBAAoB;AAAA,YACrB,GAAG,IAAI,IAAI,GAAG;AAAA,YACd,GAAG,IAAI,IAAI,GAAG;AAAA,UAClB;AACA;AACA,eAAK,MAAM,kBAAkB,EAAE,KAAKA,IAAE,KAAK,QAAQ,KAAK,QAAQ,EAAE,CAAC;AACnE,eAAK,OAAO,QAAQ,CAAC,WAAW;AAC5B,mBAAO,MAAM,kBAAkB,EAAE,KAAKA,IAAE,KAAK,OAAO,CAAC;AAAA,UACzD,CAAC;AAAA,QACL;AAAA,QACA,iBAAiBA,KAAG;AAChB,cAAIL,IAAGC,IAAG;AACV,gBAAM,aAAa,KAAK,QAAQ,MAAM,KAAK,iBAAiB;AAC5D,gBAAM,QAAQ,WAAW,SAAS;AAClC,gBAAM,qBAAqBI,GAAC;AAC5B,gBAAM,KAAK,MAAM,mBAAmB;AACpC,cAAI,aAAa;AAAA,YACb,GAAG,GAAG,IAAI,KAAK,kBAAkB;AAAA,YACjC,GAAG,GAAG,IAAI,KAAK,kBAAkB;AAAA,UACrC;AACA,gBAAM,SAAS,WAAW,oBAAoB;AAC9C,cAAI,KAAK,oBAAoB,GAAG;AAC5B,yBAAa,KAAK,oBAAoB,EAAE,QAAQ,YAAYA,GAAC;AAAA,UACjE;AACA,qBAAW,oBAAoB,UAAU;AACzC,gBAAM,SAAS,WAAW,oBAAoB;AAC9C,cAAI,OAAO,MAAM,OAAO,KAAK,OAAO,MAAM,OAAO,GAAG;AAChD;AAAA,UACJ;AACA,cAAI,KAAK,sBAAsB,WAAW;AACtC,kBAAM,QAAQ,KAAK,aAAa;AAChC,YAAAL,KAAI,WAAW,EAAE,IAAI,MAAM,QAAQ;AACnC,YAAAC,KAAI,CAAC,WAAW,EAAE,IAAI,MAAM,SAAS;AACrC,kBAAM,uBAAuB,MAAM,SAAS,KAAK,kBAAkB,CAAC;AACpE,gBAAI,QAAQ,KAAK,MAAM,CAACA,IAAGD,EAAC,IAAI,KAAK,KAAK,IAAI;AAC9C,gBAAI,MAAM,SAAS,GAAG;AAClB,uBAAS,KAAK;AAAA,YAClB;AACA,kBAAM,cAAc,MAAM,SAAS,KAAK,SAAS,CAAC;AAClD,kBAAM,cAAc,cAAc;AAClC,kBAAM,MAAM,MAAM,SAAS,KAAK,sBAAsB,CAAC;AACvD,kBAAM,aAAa,QAAQ,KAAK,cAAc,GAAG,aAAa,GAAG;AACjE,kBAAM,OAAO,aAAa,MAAM;AAChC,kBAAM,QAAQ,mBAAmB,OAAO,IAAI;AAC5C,iBAAK,cAAc,OAAOK,GAAC;AAC3B;AAAA,UACJ;AACA,gBAAM,gBAAgB,KAAK,cAAc;AACzC,cAAI;AACJ,cAAI,kBAAkB,YAAY;AAC9B,6BAAiB,KAAK,UAAU,KAAK,CAACA,IAAE;AAAA,UAC5C,WACS,kBAAkB,QAAQ;AAC/B,6BAAiB,KAAK,UAAU;AAAA,UACpC,OACK;AACD,6BAAiB,KAAK,UAAU,KAAKA,IAAE;AAAA,UAC3C;AACA,cAAI,kBAAkB,KAAK,gBAAgB,KAAKA,IAAE;AAClD,cAAI,KAAK,sBAAsB,YAAY;AACvC,gBAAI,gBAAgB;AAChB,oBAAM,eAAe,kBACf;AAAA,gBACE,GAAG,KAAK,MAAM,IAAI;AAAA,gBAClB,GAAG,KAAK,OAAO,IAAI;AAAA,cACvB,IACE;AAAA,gBACE,GAAG,KAAK,QAAQ,eAAe,EAAE,EAAE;AAAA,gBACnC,GAAG,KAAK,QAAQ,eAAe,EAAE,EAAE;AAAA,cACvC;AACJ,8BAAgB,KAAK,KAAK,KAAK,IAAI,aAAa,IAAI,WAAW,EAAE,GAAG,CAAC,IACjE,KAAK,IAAI,aAAa,IAAI,WAAW,EAAE,GAAG,CAAC,CAAC;AAChD,oBAAM,WAAW,KAAK,QAAQ,WAAW,EAAE,EAAE,IAAI,aAAa,IAAI,KAAK;AACvE,oBAAM,WAAW,KAAK,QAAQ,WAAW,EAAE,EAAE,IAAI,aAAa,IAAI,KAAK;AACvE,cAAAL,KAAI,gBAAgB,KAAK,MAAM;AAC/B,cAAAC,KAAI,gBAAgB,KAAK,MAAM;AAC/B,mBAAK,QAAQ,WAAW,EAAE,EAAE,aAAa,IAAID,EAAC;AAC9C,mBAAK,QAAQ,WAAW,EAAE,EAAE,aAAa,IAAIC,EAAC;AAAA,YAClD;AAAA,UACJ,WACS,KAAK,sBAAsB,cAAc;AAC9C,iBAAK,QAAQ,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC;AAAA,UAC9C,WACS,KAAK,sBAAsB,aAAa;AAC7C,gBAAI,gBAAgB;AAChB,oBAAM,eAAe,kBACf;AAAA,gBACE,GAAG,KAAK,MAAM,IAAI;AAAA,gBAClB,GAAG,KAAK,OAAO,IAAI;AAAA,cACvB,IACE;AAAA,gBACE,GAAG,KAAK,QAAQ,cAAc,EAAE,EAAE;AAAA,gBAClC,GAAG,KAAK,QAAQ,cAAc,EAAE,EAAE;AAAA,cACtC;AACJ,8BAAgB,KAAK,KAAK,KAAK,IAAI,WAAW,EAAE,IAAI,aAAa,GAAG,CAAC,IACjE,KAAK,IAAI,aAAa,IAAI,WAAW,EAAE,GAAG,CAAC,CAAC;AAChD,oBAAM,WAAW,KAAK,QAAQ,YAAY,EAAE,EAAE,IAAI,aAAa,IAAI,KAAK;AACxE,oBAAM,WAAW,KAAK,QAAQ,YAAY,EAAE,EAAE,IAAI,aAAa,IAAI,KAAK;AACxE,cAAAD,KAAI,gBAAgB,KAAK,MAAM;AAC/B,cAAAC,KAAI,gBAAgB,KAAK,MAAM;AAC/B,mBAAK,QAAQ,YAAY,EAAE,EAAE,aAAa,IAAID,EAAC;AAC/C,mBAAK,QAAQ,YAAY,EAAE,EAAE,aAAa,IAAIC,EAAC;AAAA,YACnD;AACA,gBAAI,MAAM,WAAW,SAAS;AAC9B,iBAAK,QAAQ,WAAW,EAAE,EAAE,IAAI,CAAC;AACjC,iBAAK,QAAQ,eAAe,EAAE,EAAE,IAAI,CAAC;AAAA,UACzC,WACS,KAAK,sBAAsB,eAAe;AAC/C,iBAAK,QAAQ,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC;AAAA,UAC9C,WACS,KAAK,sBAAsB,gBAAgB;AAChD,iBAAK,QAAQ,eAAe,EAAE,EAAE,WAAW,EAAE,CAAC;AAAA,UAClD,WACS,KAAK,sBAAsB,eAAe;AAC/C,gBAAI,gBAAgB;AAChB,oBAAM,eAAe,kBACf;AAAA,gBACE,GAAG,KAAK,MAAM,IAAI;AAAA,gBAClB,GAAG,KAAK,OAAO,IAAI;AAAA,cACvB,IACE;AAAA,gBACE,GAAG,KAAK,QAAQ,YAAY,EAAE,EAAE;AAAA,gBAChC,GAAG,KAAK,QAAQ,YAAY,EAAE,EAAE;AAAA,cACpC;AACJ,8BAAgB,KAAK,KAAK,KAAK,IAAI,aAAa,IAAI,WAAW,EAAE,GAAG,CAAC,IACjE,KAAK,IAAI,WAAW,EAAE,IAAI,aAAa,GAAG,CAAC,CAAC;AAChD,oBAAM,WAAW,aAAa,IAAI,WAAW,EAAE,IAAI,KAAK;AACxD,oBAAM,WAAW,WAAW,EAAE,IAAI,aAAa,IAAI,KAAK;AACxD,cAAAD,KAAI,gBAAgB,KAAK,MAAM;AAC/B,cAAAC,KAAI,gBAAgB,KAAK,MAAM;AAC/B,yBAAW,EAAE,aAAa,IAAID,EAAC;AAC/B,yBAAW,EAAE,aAAa,IAAIC,EAAC;AAAA,YACnC;AACA,kBAAM,WAAW,SAAS;AAC1B,iBAAK,QAAQ,WAAW,EAAE,EAAE,IAAI,CAAC;AACjC,iBAAK,QAAQ,eAAe,EAAE,EAAE,IAAI,CAAC;AAAA,UACzC,WACS,KAAK,sBAAsB,iBAAiB;AACjD,iBAAK,QAAQ,eAAe,EAAE,EAAE,WAAW,EAAE,CAAC;AAAA,UAClD,WACS,KAAK,sBAAsB,gBAAgB;AAChD,gBAAI,gBAAgB;AAChB,oBAAM,eAAe,kBACf;AAAA,gBACE,GAAG,KAAK,MAAM,IAAI;AAAA,gBAClB,GAAG,KAAK,OAAO,IAAI;AAAA,cACvB,IACE;AAAA,gBACE,GAAG,KAAK,QAAQ,WAAW,EAAE,EAAE;AAAA,gBAC/B,GAAG,KAAK,QAAQ,WAAW,EAAE,EAAE;AAAA,cACnC;AACJ,8BAAgB,KAAK,KAAK,KAAK,IAAI,WAAW,EAAE,IAAI,aAAa,GAAG,CAAC,IACjE,KAAK,IAAI,WAAW,EAAE,IAAI,aAAa,GAAG,CAAC,CAAC;AAChD,oBAAM,WAAW,KAAK,QAAQ,eAAe,EAAE,EAAE,IAAI,aAAa,IAAI,KAAK;AAC3E,oBAAM,WAAW,KAAK,QAAQ,eAAe,EAAE,EAAE,IAAI,aAAa,IAAI,KAAK;AAC3E,cAAAD,KAAI,gBAAgB,KAAK,MAAM;AAC/B,cAAAC,KAAI,gBAAgB,KAAK,MAAM;AAC/B,mBAAK,QAAQ,eAAe,EAAE,EAAE,aAAa,IAAID,EAAC;AAClD,mBAAK,QAAQ,eAAe,EAAE,EAAE,aAAa,IAAIC,EAAC;AAAA,YACtD;AAAA,UACJ,OACK;AACD,oBAAQ,MAAM,IAAI,MAAM,mDACpB,KAAK,iBAAiB,CAAC;AAAA,UAC/B;AACA,4BAAkB,KAAK,gBAAgB,KAAKI,IAAE;AAC9C,cAAI,iBAAiB;AACjB,kBAAM,UAAU,KAAK,QAAQ,WAAW;AACxC,kBAAM,cAAc,KAAK,QAAQ,eAAe;AAChD,kBAAM,aAAa,QAAQ,EAAE;AAC7B,kBAAM,aAAa,QAAQ,EAAE;AAC7B,kBAAM,gBAAgB,KAAK,SAAS,IAAI,YAAY,EAAE;AACtD,kBAAM,gBAAgB,KAAK,UAAU,IAAI,YAAY,EAAE;AACvD,wBAAY,KAAK;AAAA,cACb,GAAG,CAAC;AAAA,cACJ,GAAG,CAAC;AAAA,YACR,CAAC;AACD,oBAAQ,KAAK;AAAA,cACT,GAAG;AAAA,cACH,GAAG;AAAA,YACP,CAAC;AAAA,UACL;AACA,gBAAM,SAAS,KAAK,QAAQ,WAAW,EAAE,oBAAoB;AAC7D,UAAAL,KAAI,OAAO;AACX,UAAAC,KAAI,OAAO;AACX,gBAAM,QAAQ,KAAK,QAAQ,eAAe,EAAE,EAAE,IAAI,KAAK,QAAQ,WAAW,EAAE,EAAE;AAC9E,gBAAM,SAAS,KAAK,QAAQ,eAAe,EAAE,EAAE,IAAI,KAAK,QAAQ,WAAW,EAAE,EAAE;AAC/E,eAAK,cAAc;AAAA,YACf,GAAGD;AAAA,YACH,GAAGC;AAAA,YACH;AAAA,YACA;AAAA,YACA,UAAU,MAAM,SAAS,KAAK,SAAS,CAAC;AAAA,UAC5C,GAAGI,GAAC;AAAA,QACR;AAAA,QACA,eAAeA,KAAG;AACd,eAAK,cAAcA,GAAC;AAAA,QACxB;AAAA,QACA,uBAAuB;AACnB,iBAAO,KAAK,aAAa;AAAA,QAC7B;AAAA,QACA,cAAcA,KAAG;AACb,cAAIO;AACJ,cAAI,KAAK,eAAe;AACpB,iBAAK,gBAAgB;AACrB,gBAAI,OAAO,WAAW,aAAa;AAC/B,qBAAO,oBAAoB,aAAa,KAAK,gBAAgB;AAC7D,qBAAO,oBAAoB,aAAa,KAAK,gBAAgB;AAC7D,qBAAO,oBAAoB,WAAW,KAAK,gBAAgB,IAAI;AAC/D,qBAAO,oBAAoB,YAAY,KAAK,gBAAgB,IAAI;AAAA,YACpE;AACA,kBAAM,OAAO,KAAK,QAAQ;AAC1B;AACA,iBAAK,MAAM,gBAAgB,EAAE,KAAKP,KAAG,QAAQ,KAAK,CAAC;AACnD,aAACO,MAAK,KAAK,SAAS,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,UAAU;AACzE,gBAAI,MAAM;AACN,mBAAK,OAAO,QAAQ,CAAC,WAAW;AAC5B,oBAAIA;AACJ,uBAAO,MAAM,gBAAgB,EAAE,KAAKP,KAAG,OAAO,CAAC;AAC/C,iBAACO,MAAK,OAAO,SAAS,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,UAAU;AAAA,cAC/E,CAAC;AAAA,YACL;AACA,iBAAK,oBAAoB;AAAA,UAC7B;AAAA,QACJ;AAAA,QACA,cAAc,UAAU,KAAK;AACzB,gBAAM,WAAW,KAAK,aAAa;AACnC,gBAAM,UAAU;AAChB,cAAI,KAAK,SAAS,SAAS,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,SAAS,OAAO,GAAG;AACvE,iBAAK,OAAO;AACZ;AAAA,UACJ;AACA,cAAI,KAAK,SAAS,SAAS,QAAQ,CAAC,KAAK,QAAQ,IAAI,IAAI,SAAS,OAAO,GAAG;AACxE,iBAAK,OAAO;AACZ;AAAA,UACJ;AACA,gBAAMD,KAAI,IAAI,UAAU;AACxB,UAAAA,GAAE,OAAO,MAAM,SAAS,KAAK,SAAS,CAAC,CAAC;AACxC,cAAI,KAAK,qBACL,SAAS,QAAQ,KACjB,KAAK,kBAAkB,QAAQ,MAAM,KAAK,GAAG;AAC7C,kBAAME,UAASF,GAAE,MAAM;AAAA,cACnB,GAAG,CAAC,KAAK,QAAQ,IAAI;AAAA,cACrB,GAAG;AAAA,YACP,CAAC;AACD,qBAAS,KAAKE,QAAO;AACrB,qBAAS,KAAKA,QAAO;AACrB,qBAAS,SAAS,KAAK,QAAQ,IAAI;AACnC,iBAAK,oBAAoB,KAAK,kBAAkB,QAAQ,QAAQ,OAAO;AACvE,iBAAK,kBAAkB,KAAKA,QAAO;AACnC,iBAAK,kBAAkB,KAAKA,QAAO;AAAA,UACvC,WACS,KAAK,qBACV,SAAS,QAAQ,KACjB,KAAK,kBAAkB,QAAQ,OAAO,KAAK,GAAG;AAC9C,kBAAMA,UAASF,GAAE,MAAM;AAAA,cACnB,GAAG,KAAK,QAAQ,IAAI;AAAA,cACpB,GAAG;AAAA,YACP,CAAC;AACD,iBAAK,oBAAoB,KAAK,kBAAkB,QAAQ,SAAS,MAAM;AACvE,iBAAK,kBAAkB,KAAKE,QAAO;AACnC,iBAAK,kBAAkB,KAAKA,QAAO;AACnC,qBAAS,SAAS,KAAK,QAAQ,IAAI;AAAA,UACvC;AACA,cAAI,KAAK,qBACL,SAAS,SAAS,KAClB,KAAK,kBAAkB,QAAQ,KAAK,KAAK,GAAG;AAC5C,kBAAMA,UAASF,GAAE,MAAM;AAAA,cACnB,GAAG;AAAA,cACH,GAAG,CAAC,KAAK,QAAQ,IAAI;AAAA,YACzB,CAAC;AACD,qBAAS,KAAKE,QAAO;AACrB,qBAAS,KAAKA,QAAO;AACrB,iBAAK,oBAAoB,KAAK,kBAAkB,QAAQ,OAAO,QAAQ;AACvE,iBAAK,kBAAkB,KAAKA,QAAO;AACnC,iBAAK,kBAAkB,KAAKA,QAAO;AACnC,qBAAS,UAAU,KAAK,QAAQ,IAAI;AAAA,UACxC,WACS,KAAK,qBACV,SAAS,SAAS,KAClB,KAAK,kBAAkB,QAAQ,QAAQ,KAAK,GAAG;AAC/C,kBAAMA,UAASF,GAAE,MAAM;AAAA,cACnB,GAAG;AAAA,cACH,GAAG,KAAK,QAAQ,IAAI;AAAA,YACxB,CAAC;AACD,iBAAK,oBAAoB,KAAK,kBAAkB,QAAQ,UAAU,KAAK;AACvE,iBAAK,kBAAkB,KAAKE,QAAO;AACnC,iBAAK,kBAAkB,KAAKA,QAAO;AACnC,qBAAS,UAAU,KAAK,QAAQ,IAAI;AAAA,UACxC;AACA,cAAI,KAAK,aAAa,GAAG;AACrB,kBAAM,UAAU,KAAK,aAAa,EAAE,UAAU,QAAQ;AACtD,gBAAI,SAAS;AACT,yBAAW;AAAA,YACf,OACK;AACD,mBAAK,KAAK,wEAAwE;AAAA,YACtF;AAAA,UACJ;AACA,gBAAM,WAAW;AACjB,gBAAM,QAAQ,IAAI,UAAU;AAC5B,gBAAM,UAAU,SAAS,GAAG,SAAS,CAAC;AACtC,gBAAM,OAAO,SAAS,QAAQ;AAC9B,gBAAM,MAAM,SAAS,QAAQ,UAAU,SAAS,SAAS,QAAQ;AACjE,gBAAM,QAAQ,IAAI,UAAU;AAC5B,gBAAM,YAAY,SAAS,QAAQ;AACnC,gBAAM,YAAY,SAAS,SAAS;AACpC,cAAI,KAAK,YAAY,MAAM,OAAO;AAC9B,kBAAM,UAAU,SAAS,GAAG,SAAS,CAAC;AACtC,kBAAM,OAAO,SAAS,QAAQ;AAC9B,kBAAM,UAAU,SAAS,QAAQ,IAAI,SAAS,QAAQ,GAAG,SAAS,SAAS,IAAI,SAAS,SAAS,CAAC;AAClG,kBAAM,MAAM,KAAK,IAAI,SAAS,GAAG,KAAK,IAAI,SAAS,CAAC;AAAA,UACxD,OACK;AACD,kBAAM,UAAU,SAAS,GAAG,SAAS,CAAC;AACtC,kBAAM,OAAO,SAAS,QAAQ;AAC9B,kBAAM,MAAM,WAAW,SAAS;AAAA,UACpC;AACA,gBAAM,QAAQ,MAAM,SAAS,MAAM,OAAO,CAAC;AAC3C,eAAK,OAAO,QAAQ,CAAC,SAAS;AAC1B,gBAAID;AACJ,gBAAI,CAAC,KAAK,SAAS,GAAG;AAClB;AAAA,YACJ;AACA,kBAAM,kBAAkB,KAAK,UAAU,EAAE,qBAAqB;AAC9D,kBAAM,iBAAiB,KAAK,aAAa,EAAE,KAAK;AAChD,2BAAe,UAAU,KAAK,QAAQ,GAAG,KAAK,QAAQ,CAAC;AACvD,kBAAM,oBAAoB,IAAI,UAAU;AACxC,8BACK,SAAS,gBAAgB,KAAK,EAAE,OAAO,CAAC,EACxC,SAAS,KAAK,EACd,SAAS,eAAe,EACxB,SAAS,cAAc;AAC5B,kBAAM,QAAQ,kBAAkB,UAAU;AAC1C,iBAAK,SAAS,KAAK;AACnB,aAACA,MAAK,KAAK,SAAS,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,UAAU;AAAA,UAC7E,CAAC;AACD,eAAK,SAAS,KAAK,aAAa,SAAS,QAAQ,CAAC;AAClD,eAAK,OAAO,QAAQ,CAAC,SAAS;AAC1B,iBAAK,MAAM,aAAa,EAAE,KAAU,QAAQ,KAAK,CAAC;AAClD,iBAAK,MAAM,aAAa,EAAE,KAAU,QAAQ,KAAK,CAAC;AAAA,UACtD,CAAC;AACD,eAAK,qBAAqB;AAC1B,eAAK,OAAO;AACZ,eAAK,SAAS,EAAE,UAAU;AAAA,QAC9B;AAAA,QACA,cAAc;AACV,eAAK,qBAAqB;AAC1B,eAAK,OAAO;AAAA,QAChB;AAAA,QACA,kBAAkB,UAAU,OAAO;AAC/B,gBAAM,SAAS,KAAK,QAAQ,QAAQ;AACpC,iBAAO,SAAS,KAAK;AAAA,QACzB;AAAA,QACA,SAAS;AACL,cAAIA;AACJ,gBAAM,QAAQ,KAAK,aAAa;AAChC,eAAK,SAAS,KAAK,aAAa,MAAM,QAAQ,CAAC;AAC/C,gBAAM,QAAQ,MAAM;AACpB,gBAAM,SAAS,MAAM;AACrB,gBAAM,iBAAiB,KAAK,eAAe;AAC3C,gBAAM,gBAAgB,KAAK,cAAc;AACzC,gBAAM,UAAU,KAAK,QAAQ;AAC7B,gBAAM,aAAa,KAAK,WAAW;AACnC,gBAAM,UAAU,KAAK,KAAK,UAAU;AACpC,kBAAQ,QAAQ,CAAC,SAAS;AACtB,iBAAK,SAAS;AAAA,cACV,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,SAAS,aAAa;AAAA,cACtB,SAAS,aAAa;AAAA,cACtB,QAAQ,KAAK,aAAa;AAAA,cAC1B,aAAa,KAAK,kBAAkB;AAAA,cACpC,MAAM,KAAK,WAAW;AAAA,cACtB,cAAc,KAAK,mBAAmB;AAAA,YAC1C,CAAC;AAAA,UACL,CAAC;AACD,eAAK,kBAAkB,aAAa;AAAA,YAChC,GAAG;AAAA,YACH,GAAG;AAAA,YACH,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,iBAAiB,eAAe,QAAQ,UAAU,KAAK;AAAA,UACpE,CAAC;AACD,eAAK,kBAAkB,eAAe;AAAA,YAClC,GAAG,QAAQ;AAAA,YACX,GAAG;AAAA,YACH,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,iBAAiB,eAAe,QAAQ,YAAY,KAAK;AAAA,UACtE,CAAC;AACD,eAAK,kBAAkB,cAAc;AAAA,YACjC,GAAG;AAAA,YACH,GAAG;AAAA,YACH,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,iBAAiB,eAAe,QAAQ,WAAW,KAAK;AAAA,UACrE,CAAC;AACD,eAAK,kBAAkB,gBAAgB;AAAA,YACnC,GAAG;AAAA,YACH,GAAG,SAAS;AAAA,YACZ,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,iBAAiB,eAAe,QAAQ,aAAa,KAAK;AAAA,UACvE,CAAC;AACD,eAAK,kBAAkB,iBAAiB;AAAA,YACpC,GAAG;AAAA,YACH,GAAG,SAAS;AAAA,YACZ,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,iBAAiB,eAAe,QAAQ,cAAc,KAAK;AAAA,UACxE,CAAC;AACD,eAAK,kBAAkB,gBAAgB;AAAA,YACnC,GAAG;AAAA,YACH,GAAG;AAAA,YACH,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,iBAAiB,eAAe,QAAQ,aAAa,KAAK;AAAA,UACvE,CAAC;AACD,eAAK,kBAAkB,kBAAkB;AAAA,YACrC,GAAG,QAAQ;AAAA,YACX,GAAG;AAAA,YACH,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,UACzE,CAAC;AACD,eAAK,kBAAkB,iBAAiB;AAAA,YACpC,GAAG;AAAA,YACH,GAAG;AAAA,YACH,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,aAAa,IAAI;AAAA,YAC1B,SAAS,iBAAiB,eAAe,QAAQ,cAAc,KAAK;AAAA,UACxE,CAAC;AACD,gBAAM,oBAAoB,KAAK,kBAAkB;AACjD,gBAAM,qBAAqB,KAAK,mBAAmB;AACnD,gBAAM,MAAM,KAAK,SAAS,iBAAiB;AAC3C,gBAAM,OAAO,KAAK,IAAI,GAAG;AACzB,gBAAM,OAAO,CAAC,KAAK,IAAI,GAAG;AAC1B,gBAAM,KAAK,QAAQ;AACnB,gBAAM,KAAK,SAAS;AACpB,cAAID,KAAI;AACR,cAAI,OAAO,GAAG;AACV,YAAAA,KAAI,KAAK,IAAIA,IAAG,CAAC,KAAK,IAAI;AAAA,UAC9B,WACS,OAAO,GAAG;AACf,YAAAA,KAAI,KAAK,IAAIA,KAAI,SAAS,MAAM,IAAI;AAAA,UACxC;AACA,cAAI,OAAO,GAAG;AACV,YAAAA,KAAI,KAAK,IAAIA,IAAG,CAAC,KAAK,IAAI;AAAA,UAC9B,WACS,OAAO,GAAG;AACf,YAAAA,KAAI,KAAK,IAAIA,KAAI,QAAQ,MAAM,IAAI;AAAA,UACvC;AACA,gBAAM,QAAQ,KAAK,OAAOA;AAC1B,gBAAM,QAAQ,KAAK,OAAOA;AAC1B,gBAAM,OAAO,KAAK,MAAM,MAAM;AAC9B,eAAK,kBAAkB,YAAY;AAAA,YAC/B,GAAG,QAAQ,OAAO,qBAAqB;AAAA,YACvC,GAAG,QAAQ,OAAO,qBAAqB,OAAO,UAAU;AAAA,YACxD,SAAS,KAAK,cAAc;AAAA,UAChC,CAAC;AACD,eAAK,kBAAkB,SAAS;AAAA,YAC5B;AAAA,YACA;AAAA,YACA,SAAS,KAAK,cAAc;AAAA,YAC5B,QAAQ,KAAK,aAAa;AAAA,YAC1B,aAAa,KAAK,kBAAkB;AAAA,YACpC,MAAM,KAAK,WAAW;AAAA,YACtB,WAAW,KAAK,MAAM,EAAE,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC;AAAA,YACvD,GAAG;AAAA,YACH,GAAG;AAAA,UACP,CAAC;AACD,gBAAM,YAAY,KAAK,gBAAgB;AACvC,cAAI,WAAW;AACX,oBAAQ,QAAQ,CAAC,SAAS;AACtB,wBAAU,IAAI;AAAA,YAClB,CAAC;AAAA,UACL;AACA,WAACC,MAAK,KAAK,SAAS,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,UAAU;AAAA,QAC7E;AAAA,QACA,iBAAiB;AACb,iBAAO,KAAK;AAAA,QAChB;AAAA,QACA,gBAAgB;AACZ,cAAI,KAAK,eAAe;AACpB,iBAAK,cAAc;AACnB,kBAAM,aAAa,KAAK,QAAQ,MAAM,KAAK,iBAAiB;AAC5D,gBAAI,YAAY;AACZ,yBAAW,SAAS;AAAA,YACxB;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,UAAU;AACN,cAAI,KAAK,SAAS,KAAK,KAAK,eAAe;AACvC,iBAAK,SAAS,EAAE,YAAY,KAAK,SAAS,EAAE,QAAQ,MAAM,SAAS;AAAA,UACvE;AACA,gBAAM,UAAU,QAAQ,KAAK,IAAI;AACjC,eAAK,OAAO;AACZ,eAAK,cAAc;AACnB,iBAAO;AAAA,QACX;AAAA,QACA,OAAO,UAAU;AACb,cAAI,KAAK,kBAAkB;AACvB,iBAAK,MAAM,iFAAiF;AAC5F,mBAAO;AAAA,UACX;AACA,iBAAO,MAAM,IAAI,GAAG,QAAQ;AAAA,QAChC;AAAA,QACA,WAAW;AACP,iBAAOE,MAAK,UAAU,SAAS,KAAK,IAAI;AAAA,QAC5C;AAAA,QACA,MAAM,KAAK;AACP,gBAAM,OAAOA,MAAK,UAAU,MAAM,KAAK,MAAM,GAAG;AAChD,iBAAO;AAAA,QACX;AAAA,QACA,gBAAgB;AACZ,cAAI,KAAK,MAAM,EAAE,SAAS,GAAG;AACzB,mBAAO,MAAM,cAAc;AAAA,UAC/B,OACK;AACD,mBAAO,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,QAAQ,EAAE;AAAA,UAC7C;AAAA,QACJ;AAAA,MACJ;AACA,kBAAY,iBAAiB,MAAM;AAC/B,eAAO,0BAA0B;AAAA,MACrC;AAiBA,kBAAY,UAAU,YAAY;AAClC,oBAAc,WAAW;AACzB,cAAQ,gBAAgB,aAAa,kBAAkB,eAAe,eAAe;AACrF,cAAQ,gBAAgB,aAAa,eAAe,MAAM,oBAAoB,CAAC;AAC/E,cAAQ,gBAAgB,aAAa,iBAAiB,IAAI;AAC1D,cAAQ,gBAAgB,aAAa,cAAc,IAAI,mBAAmB,CAAC;AAC3E,cAAQ,gBAAgB,aAAa,iBAAiB,IAAI;AAC1D,cAAQ,gBAAgB,aAAa,qBAAqB,IAAI;AAC9D,cAAQ,gBAAgB,aAAa,iBAAiB,CAAC,CAAC;AACxD,cAAQ,gBAAgB,aAAa,sBAAsB,IAAI,mBAAmB,CAAC;AACnF,cAAQ,gBAAgB,aAAa,qBAAqB,GAAG,mBAAmB,CAAC;AACjF,cAAQ,gBAAgB,aAAa,sBAAsB,WAAW;AACtE,cAAQ,gBAAgB,aAAa,yBAAyB,GAAG,mBAAmB,CAAC;AACrF,cAAQ,gBAAgB,aAAa,iBAAiB,IAAI;AAC1D,cAAQ,gBAAgB,aAAa,gBAAgB,kBAAkB;AACvE,cAAQ,gBAAgB,aAAa,qBAAqB,GAAG,mBAAmB,CAAC;AACjF,cAAQ,gBAAgB,aAAa,cAAc,OAAO;AAC1D,cAAQ,gBAAgB,aAAa,sBAAsB,GAAG,mBAAmB,CAAC;AAClF,cAAQ,gBAAgB,aAAa,gBAAgB,kBAAkB;AACvE,cAAQ,gBAAgB,aAAa,qBAAqB,GAAG,mBAAmB,CAAC;AACjF,cAAQ,gBAAgB,aAAa,YAAY;AACjD,cAAQ,gBAAgB,aAAa,aAAa,IAAI;AACtD,cAAQ,gBAAgB,aAAa,iBAAiB,SAAS;AAC/D,cAAQ,gBAAgB,aAAa,mBAAmB,KAAK;AAC7D,cAAQ,gBAAgB,aAAa,gBAAgB,KAAK;AAC1D,cAAQ,gBAAgB,aAAa,WAAW,GAAG,mBAAmB,CAAC;AACvE,cAAQ,gBAAgB,aAAa,OAAO;AAC5C,cAAQ,gBAAgB,aAAa,MAAM;AAC3C,cAAQ,gBAAgB,aAAa,cAAc;AACnD,cAAQ,gBAAgB,aAAa,qBAAqB;AAC1D,cAAQ,gBAAgB,aAAa,iBAAiB;AACtD,cAAQ,gBAAgB,aAAa,2BAA2B,KAAK;AACrE,cAAQ,gBAAgB,aAAa,yBAAyB,IAAI;AAClE,cAAQ,WAAW,aAAa;AAAA,QAC5B,aAAa;AAAA,QACb,qBAAqB;AAAA,QACrB,iBAAiB;AAAA,MACrB,CAAC;AAAA;AAAA;;;AC9iCD,MAKa;AALb;AAAA;AAAA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAN,cAAoB,MAAM;AAAA,QAC7B,WAAW,SAAS;AAChB,kBAAQ,UAAU;AAClB,kBAAQ,IAAI,GAAG,GAAG,KAAK,OAAO,GAAG,GAAG,MAAM,SAAS,KAAK,MAAM,CAAC,GAAG,KAAK,UAAU,CAAC;AAClF,kBAAQ,OAAO,GAAG,CAAC;AACnB,kBAAQ,UAAU;AAClB,kBAAQ,gBAAgB,IAAI;AAAA,QAChC;AAAA,QACA,WAAW;AACP,iBAAO,KAAK,OAAO,IAAI;AAAA,QAC3B;AAAA,QACA,YAAY;AACR,iBAAO,KAAK,OAAO,IAAI;AAAA,QAC3B;AAAA,QACA,SAAS,OAAO;AACZ,eAAK,OAAO,QAAQ,CAAC;AAAA,QACzB;AAAA,QACA,UAAU,QAAQ;AACd,eAAK,OAAO,SAAS,CAAC;AAAA,QAC1B;AAAA,MACJ;AACA,YAAM,UAAU,YAAY;AAC5B,YAAM,UAAU,YAAY;AAC5B,YAAM,UAAU,sBAAsB,CAAC,QAAQ;AAC/C,oBAAc,KAAK;AACnB,cAAQ,gBAAgB,OAAO,UAAU,GAAG,mBAAmB,CAAC;AAChE,cAAQ,gBAAgB,OAAO,SAAS,GAAG,mBAAmB,CAAC;AAC/D,cAAQ,gBAAgB,OAAO,aAAa,KAAK;AACjD,cAAQ,WAAW,OAAO;AAAA,QACtB,UAAU;AAAA,QACV,aAAa;AAAA,QACb,aAAa;AAAA,MACjB,CAAC;AAAA;AAAA;;;AClCD,WAAS,YAAY;AACjB,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,OAAO;AAAA,EAChB;AAoCA,WAAS,oBAAoB,WAAW,QAAQ;AAC5C,UAAM,SAAS,UAAU,MAAM,QAAQ,UAAU,OAAO,SAAS,UAAU;AAC3E,QAAIC,IAAGC,KAAI,IAAI,OAAO,OAAO,OAAO,OAAO,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,UAAU,UAAUC,KAAI,IAAI,IAAIC,KAAI;AAC/I,UAAMC,OAAM,SAAS,SAAS,GAAG,cAAc,QAAQ,GAAG,eAAe,SAAS,GAAG,cAAc,SAAS,GAAG,YAAa,eAAe,cAAc,KAAM,GAAG,aAAa,IAAI,UAAU,GAAG,UAAU,UAAU,MAAM,GAAG,UAAU,UAAU,MAAM;AACvP,QAAI,WAAW,MAAM,QAAQ,YAAY,UAAU,MAAM,WAAW;AACpE,aAASC,KAAI,GAAGA,KAAID,MAAKC,MAAK;AAC1B,cAAQ,MAAM,OAAO,IAAI,UAAU;AACnC,UAAIA,OAAM,aAAa;AACnB,mBAAW;AAAA,MACf;AAAA,IACJ;AACA,UAAM,OAAO;AACb,SAAKJ,MAAK;AACV,aAASK,KAAI,GAAGA,KAAI,QAAQA,MAAK;AAC7B,iBACI,WACI,WACI,WACI,QACI,QACI,QACI,QACI;AAChC,kBAAY,eAAeJ,MAAK,OAAOD,GAAE;AACzC,kBAAY,eAAe,KAAK,OAAOA,MAAK,CAAC;AAC7C,kBAAY,eAAe,KAAK,OAAOA,MAAK,CAAC;AAC7C,kBAAY,eAAeE,MAAK,OAAOF,MAAK,CAAC;AAC7C,eAAS,YAAYC;AACrB,eAAS,YAAY;AACrB,eAAS,YAAY;AACrB,eAAS,YAAYC;AACrB,cAAQ;AACR,eAASE,KAAI,GAAGA,KAAI,aAAaA,MAAK;AAClC,cAAM,IAAIH;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAIC;AACV,gBAAQ,MAAM;AAAA,MAClB;AACA,eAASE,KAAI,GAAGA,KAAI,aAAaA,MAAK;AAClC,QAAAL,KAAIC,QAAO,cAAcI,KAAI,cAAcA,OAAM;AACjD,kBAAU,MAAM,IAAIH,MAAK,OAAOF,EAAC,MAAM,MAAM,cAAcK;AAC3D,kBAAU,MAAM,IAAI,KAAK,OAAOL,KAAI,CAAC,KAAK;AAC1C,kBAAU,MAAM,IAAI,KAAK,OAAOA,KAAI,CAAC,KAAK;AAC1C,kBAAU,MAAM,IAAIG,MAAK,OAAOH,KAAI,CAAC,KAAK;AAC1C,oBAAYE;AACZ,oBAAY;AACZ,oBAAY;AACZ,oBAAYC;AACZ,gBAAQ,MAAM;AAAA,MAClB;AACA,gBAAU;AACV,iBAAW;AACX,eAASI,KAAI,GAAGA,KAAI,OAAOA,MAAK;AAC5B,eAAON,MAAK,CAAC,IAAIE,MAAM,QAAQ,WAAY;AAC3C,YAAIA,QAAO,GAAG;AACV,UAAAA,MAAK,MAAMA;AACX,iBAAOF,GAAE,KAAM,QAAQ,WAAY,WAAWE;AAC9C,iBAAOF,MAAK,CAAC,KAAM,QAAQ,WAAY,WAAWE;AAClD,iBAAOF,MAAK,CAAC,KAAM,QAAQ,WAAY,WAAWE;AAAA,QACtD,OACK;AACD,iBAAOF,GAAE,IAAI,OAAOA,MAAK,CAAC,IAAI,OAAOA,MAAK,CAAC,IAAI;AAAA,QACnD;AACA,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,QAAAD,KAAK,OAAOA,KAAIO,KAAI,SAAS,KAAK,cAAcP,KAAI,gBAAiB;AACrE,oBAAY,QAAQ,IAAI,OAAOA,EAAC;AAChC,oBAAY,QAAQ,IAAI,OAAOA,KAAI,CAAC;AACpC,oBAAY,QAAQ,IAAI,OAAOA,KAAI,CAAC;AACpC,oBAAY,QAAQ,IAAI,OAAOA,KAAI,CAAC;AACpC,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,kBAAU,QAAQ;AAClB,qBAAaE,MAAK,SAAS;AAC3B,qBAAa,KAAK,SAAS;AAC3B,qBAAa,KAAK,SAAS;AAC3B,qBAAaC,MAAK,SAAS;AAC3B,oBAAYD;AACZ,oBAAY;AACZ,oBAAY;AACZ,oBAAYC;AACZ,mBAAW,SAAS;AACpB,QAAAF,OAAM;AAAA,MACV;AACA,YAAM;AAAA,IACV;AACA,aAASM,KAAI,GAAGA,KAAI,OAAOA,MAAK;AAC5B,iBACI,WACI,WACI,WACI,QACI,QACI,QACI,QACI;AAChC,MAAAN,MAAKM,MAAK;AACV,kBAAY,eAAeL,MAAK,OAAOD,GAAE;AACzC,kBAAY,eAAe,KAAK,OAAOA,MAAK,CAAC;AAC7C,kBAAY,eAAe,KAAK,OAAOA,MAAK,CAAC;AAC7C,kBAAY,eAAeE,MAAK,OAAOF,MAAK,CAAC;AAC7C,eAAS,YAAYC;AACrB,eAAS,YAAY;AACrB,eAAS,YAAY;AACrB,eAAS,YAAYC;AACrB,cAAQ;AACR,eAASE,KAAI,GAAGA,KAAI,aAAaA,MAAK;AAClC,cAAM,IAAIH;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAIC;AACV,gBAAQ,MAAM;AAAA,MAClB;AACA,UAAI,KAAK;AACT,eAASE,KAAI,GAAGA,MAAK,QAAQA,MAAK;AAC9B,QAAAJ,MAAM,KAAKM,MAAM;AACjB,kBAAU,MAAM,IAAIL,MAAK,OAAOD,GAAE,MAAM,MAAM,cAAcI;AAC5D,kBAAU,MAAM,IAAI,KAAK,OAAOJ,MAAK,CAAC,KAAK;AAC3C,kBAAU,MAAM,IAAI,KAAK,OAAOA,MAAK,CAAC,KAAK;AAC3C,kBAAU,MAAM,IAAIE,MAAK,OAAOF,MAAK,CAAC,KAAK;AAC3C,oBAAYC;AACZ,oBAAY;AACZ,oBAAY;AACZ,oBAAYC;AACZ,gBAAQ,MAAM;AACd,YAAIE,KAAI,cAAc;AAClB,gBAAM;AAAA,QACV;AAAA,MACJ;AACA,MAAAJ,MAAKM;AACL,gBAAU;AACV,iBAAW;AACX,eAASD,KAAI,GAAGA,KAAI,QAAQA,MAAK;AAC7B,QAAAN,KAAIC,OAAM;AACV,eAAOD,KAAI,CAAC,IAAIG,MAAM,QAAQ,WAAY;AAC1C,YAAIA,MAAK,GAAG;AACR,UAAAA,MAAK,MAAMA;AACX,iBAAOH,EAAC,KAAM,QAAQ,WAAY,WAAWG;AAC7C,iBAAOH,KAAI,CAAC,KAAM,QAAQ,WAAY,WAAWG;AACjD,iBAAOH,KAAI,CAAC,KAAM,QAAQ,WAAY,WAAWG;AAAA,QACrD,OACK;AACD,iBAAOH,EAAC,IAAI,OAAOA,KAAI,CAAC,IAAI,OAAOA,KAAI,CAAC,IAAI;AAAA,QAChD;AACA,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,QAAAA,KACKO,OACKP,KAAIM,KAAI,eAAe,eAAeN,KAAI,gBAAgB,SAC5D;AACR,iBAAS,YAAY,QAAQ,IAAI,OAAOA,EAAC;AACzC,iBAAS,YAAY,QAAQ,IAAI,OAAOA,KAAI,CAAC;AAC7C,iBAAS,YAAY,QAAQ,IAAI,OAAOA,KAAI,CAAC;AAC7C,iBAAS,YAAY,QAAQ,IAAI,OAAOA,KAAI,CAAC;AAC7C,kBAAU,QAAQ;AAClB,qBAAaE,MAAK,SAAS;AAC3B,qBAAa,KAAK,SAAS;AAC3B,qBAAa,KAAK,SAAS;AAC3B,qBAAaC,MAAK,SAAS;AAC3B,oBAAYD;AACZ,oBAAY;AACZ,oBAAY;AACZ,oBAAYC;AACZ,mBAAW,SAAS;AACpB,QAAAF,OAAM;AAAA,MACV;AAAA,IACJ;AAAA,EACJ;AAnOA,MAUM,WAmBA,WAuMO;AApOb;AAAA;AAAA;AACA;AACA;AAQA,MAAM,YAAY;AAAA,QACd;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,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", "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", "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", "prefix", "i", "data", "error", "duration", "e", "data", "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", "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"]
}
