{
"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/@rails/ujs/lib/assets/compiled/rails-ujs.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/address_fields_controller.js", "../../javascript/controllers/cart_item_controller.js", "../../javascript/controllers/clickable_controller.js", "../../../node_modules/litepicker/dist/litepicker.umd.js", "../../javascript/controllers/datepicker_controller.js", "../../javascript/controllers/datepicker_multi_controller.js", "../../javascript/controllers/disable_inputs_controller.js", "../../../node_modules/@stimulus/core/src/event_listener.ts", "../../../node_modules/@stimulus/core/src/dispatcher.ts", "../../../node_modules/@stimulus/core/src/action_descriptor.ts", "../../../node_modules/@stimulus/core/src/action.ts", "../../../node_modules/@stimulus/core/src/binding.ts", "../../../node_modules/@stimulus/mutation-observers/src/element_observer.ts", "../../../node_modules/@stimulus/mutation-observers/src/attribute_observer.ts", "../../../node_modules/@stimulus/mutation-observers/src/string_map_observer.ts", "../../../node_modules/@stimulus/multimap/src/set_operations.ts", "../../../node_modules/@stimulus/multimap/src/multimap.ts", "../../../node_modules/@stimulus/multimap/src/indexed_multimap.ts", "../../../node_modules/@stimulus/multimap/src/index.ts", "../../../node_modules/@stimulus/mutation-observers/src/token_list_observer.ts", "../../../node_modules/@stimulus/mutation-observers/src/value_list_observer.ts", "../../../node_modules/@stimulus/mutation-observers/src/index.ts", "../../../node_modules/@stimulus/core/src/binding_observer.ts", "../../../node_modules/@stimulus/core/src/value_observer.ts", "../../../node_modules/@stimulus/core/src/context.ts", "../../../node_modules/@stimulus/core/src/inheritable_statics.ts", "../../../node_modules/@stimulus/core/src/blessing.ts", "../../../node_modules/@stimulus/core/src/definition.ts", "../../../node_modules/@stimulus/core/src/module.ts", "../../../node_modules/@stimulus/core/src/class_map.ts", "../../../node_modules/@stimulus/core/src/string_helpers.ts", "../../../node_modules/@stimulus/core/src/data_map.ts", "../../../node_modules/@stimulus/core/src/guide.ts", "../../../node_modules/@stimulus/core/src/selectors.ts", "../../../node_modules/@stimulus/core/src/target_set.ts", "../../../node_modules/@stimulus/core/src/scope.ts", "../../../node_modules/@stimulus/core/src/scope_observer.ts", "../../../node_modules/@stimulus/core/src/router.ts", "../../../node_modules/@stimulus/core/src/schema.ts", "../../../node_modules/@stimulus/core/src/application.ts", "../../../node_modules/@stimulus/core/src/class_properties.ts", "../../../node_modules/@stimulus/core/src/target_properties.ts", "../../../node_modules/@stimulus/core/src/value_properties.ts", "../../../node_modules/@stimulus/core/src/controller.ts", "../../../node_modules/@stimulus/core/src/index.ts", "../../../node_modules/stimulus/index.js", "../../javascript/controllers/license_status_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", "../../../node_modules/@rails/request.js/src/index.js", "../../javascript/controllers/licenses_controller.js", "../../javascript/controllers/nav_collapse_controller.js", "../../javascript/controllers/plaid_controller.js", "../../javascript/controllers/print_controller.js", "../../javascript/controllers/radio_row_controller.js", "../../javascript/controllers/refresh_controller.js", "../../javascript/controllers/refreshing_controller.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/webpack/universalModuleDefinition", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/webpack/bootstrap", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/ckeditorerror.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_root.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isBuffer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_nodeUtil.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/version.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_freeGlobal.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_cloneBuffer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/(webpack)/buildin/harmony-module.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/(webpack)/buildin/global.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-heading/theme/heading.css?823b", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/stubFalse.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/theme/placeholder.css?b74d", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/theme/placeholder.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/globals/globals.css?bbb1", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/globals/globals.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/editorui/editorui.css?6488", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/editorui/editorui.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/label/label.css?0ad1", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/label/label.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/panel/stickypanel.css?0d9e", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/panel/stickypanel.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/dropdown/dropdown.css?39b4", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/dropdown/dropdown.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/icon/icon.css?46a6", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/icon/icon.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/tooltip/tooltip.css?5f8a", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/tooltip/tooltip.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/button/button.css?ed30", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/button/button.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/list/list.css?6835", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/list/list.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/button/switchbutton.css?772e", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/button/switchbutton.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css?3b6f", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/dropdown/listdropdown.css?ccbb", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/dropdown/listdropdown.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/toolbar/toolbar.css?d187", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/toolbar/toolbar.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-editor-classic/theme/classiceditor.css?b5f3", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-editor-classic/theme/classiceditor.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-block-quote/theme/blockquote.css?0133", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-block-quote/theme/blockquote.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/panel/balloonpanel.css?7d55", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/panel/balloonpanel.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/theme/link.css?e679", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/theme/link.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/theme/widgettypearound.css?d716", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/theme/widgettypearound.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/theme/widget.css?5ba3", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/theme/widget.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css?b21a", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/inputtext/inputtext.css?bec6", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/inputtext/inputtext.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/textalternativeform.css?3cde", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/textalternativeform.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/panel/balloonrotator.css?d942", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/panel/balloonrotator.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/panel/fakepanel.css?4b0d", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/panel/fakepanel.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/image.css?39e5", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/image.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/imageuploadprogress.css?1109", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/imageuploadprogress.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/imageuploadicon.css?a4b7", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/imageuploadicon.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/imageuploadloader.css?b148", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/imageuploadloader.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-heading/theme/heading.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/imagecaption.css?24b1", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/imagecaption.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/imagestyle.css?0725", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/imagestyle.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/theme/linkform.css?5830", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/theme/linkform.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/theme/linkactions.css?2dae", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/theme/linkactions.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/theme/mediaembedediting.css?7def", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/theme/mediaembedediting.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/theme/mediaform.css?be04", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/theme/mediaform.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/theme/mediaembed.css?710f", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/theme/mediaembed.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/tableediting.css?b34f", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/tableediting.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/dropdown/splitbutton.css?310e", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/components/dropdown/splitbutton.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/inserttable.css?59a7", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/inserttable.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/tableselection.css?9cfe", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/tableselection.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/table.css?f135", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/table.css", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_Symbol.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_getRawTag.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_objectToString.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseGetTag.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_overArg.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_getPrototype.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isObjectLike.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isPlainObject.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_listCacheClear.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/eq.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_assocIndexOf.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_listCacheDelete.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_listCacheGet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_listCacheHas.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_listCacheSet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_ListCache.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_stackClear.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_stackDelete.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_stackGet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_stackHas.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isObject.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isFunction.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_isMasked.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_coreJsData.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_toSource.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseIsNative.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_getValue.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_getNative.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_Map.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_nativeCreate.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_hashClear.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_hashDelete.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_hashGet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_hashHas.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_hashSet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_Hash.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_mapCacheClear.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_isKeyable.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_getMapData.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_mapCacheDelete.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_mapCacheGet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_mapCacheHas.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_mapCacheSet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_MapCache.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_stackSet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_Stack.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_arrayEach.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_defineProperty.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseAssignValue.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_assignValue.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_copyObject.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseTimes.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseIsArguments.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isArguments.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_isIndex.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isLength.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseIsTypedArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseUnary.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isTypedArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_arrayLikeKeys.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_isPrototype.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_nativeKeys.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseKeys.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isArrayLike.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/keys.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseAssign.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_nativeKeysIn.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseKeysIn.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/keysIn.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseAssignIn.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_copyArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_arrayFilter.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/stubArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_getSymbols.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_copySymbols.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_arrayPush.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_getSymbolsIn.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_copySymbolsIn.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseGetAllKeys.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_getAllKeys.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_getAllKeysIn.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_DataView.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_Promise.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_Set.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_WeakMap.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_getTag.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_initCloneArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_Uint8Array.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_cloneArrayBuffer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_cloneDataView.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_cloneRegExp.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_cloneSymbol.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_cloneTypedArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_initCloneByTag.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseCreate.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_initCloneObject.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseIsMap.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isMap.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseIsSet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isSet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseClone.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/cloneDeepWith.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isElement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/config.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/spy.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/eventinfo.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/uid.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/priorities.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/emittermixin.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/isiterable.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/mix.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/collection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/plugincollection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/translation-service.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/locale.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/context.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/comparearrays.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/clone.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/node.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/text.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/textproxy.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/tomap.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/objecttomap.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/matcher.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isSymbol.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_isKey.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/memoize.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_memoizeCapped.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_stringToPath.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_arrayMap.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseToString.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/toString.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_castPath.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/last.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_toKey.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseGet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseSlice.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_parent.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseUnset.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/unset.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/get.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_assignMergeValue.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_createBaseFor.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseFor.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isArrayLikeObject.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_safeGet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/toPlainObject.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseMergeDeep.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseMerge.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/identity.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_apply.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_overRest.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/constant.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseSetToString.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_shortOut.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_setToString.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseRest.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_isIterateeCall.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_createAssigner.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/merge.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseSet.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/set.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/stylesmap.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/element.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/containerelement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/assignIn.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/observablemixin.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/editableelement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/rooteditableelement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/treewalker.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/position.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/range.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/count.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/selection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/documentselection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/document.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/attributeelement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/emptyelement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/env.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/keyboard.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/uielement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/rawelement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/documentfragment.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/downcastwriter.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/istext.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/filler.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/fastdiff.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/diff.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/insertat.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/remove.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/isnode.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/renderer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/global.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/indexof.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/getancestors.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/domconverter.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/getcommonancestor.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/iswindow.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/emittermixin.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/observer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_setCacheAdd.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_setCacheHas.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_SetCache.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_arraySome.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_cacheHas.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_equalArrays.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_mapToArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_setToArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_equalByTag.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_equalObjects.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseIsEqualDeep.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_baseIsEqual.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isEqualWith.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/mutationobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/domeventdata.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/domeventobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/keyobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/now.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/toNumber.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/debounce.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/fakeselectionobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/selectionobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/focusobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/compositionobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/inputobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/isrange.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/getborderwidths.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/rect.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/scroll.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/view.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/node.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/text.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/textproxy.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/nodelist.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/element.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/treewalker.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/position.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/range.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/conversion/mapper.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/conversion/modelconsumable.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/conversion/downcastdispatcher.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/selection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/liverange.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/documentselection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/conversion/conversionhelpers.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/cloneDeep.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/conversion/downcasthelpers.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/conversion/upcasthelpers.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/controller/editingcontroller.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/commandcollection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/conversion/viewconsumable.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/schema.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/conversion/upcastdispatcher.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/controller/datacontroller.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/conversion/conversion.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/batch.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/operation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/documentfragment.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isEqual.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/attributeoperation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/detachoperation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/moveoperation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/insertoperation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/markeroperation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/renameoperation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/rootattributeoperation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/mergeoperation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/splitoperation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/rootelement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/writer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/differ.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/history.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/unicode.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/document.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/markercollection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/nooperation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/operationfactory.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/liveposition.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/utils/insertcontent.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/utils/deletecontent.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/utils/modifyselection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/utils/getselectedcontent.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/utils/selection-post-fixer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/model.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/keystrokehandler.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/editingkeystrokehandler.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/editor/editor.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/editor/utils/dataapimixin.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/editor/utils/elementapimixin.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/setdatainelement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/dataprocessor/basichtmlwriter.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/componentfactory.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/focustracker.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/editor/editorui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/placeholder.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/elementreplacer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-editor-classic/src/classiceditorui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/toolbar/enabletoolbarkeyboardfocus.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/viewcollection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/template.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/view.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/isString.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/editorui/bodycollection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/createelement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/editorui/editoruiview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/label/labelview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/editorui/boxed/boxededitoruiview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/editableui/editableuiview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/editableui/inline/inlineeditableuiview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/tounit.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/panel/sticky/stickypanelview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/focuscycler.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/toolbar/toolbarseparatorview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/resizeobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/dropdown/dropdownpanelview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/position.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/getpositionedancestor.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/dropdown/dropdownview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/icon/iconview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/tooltip/tooltipview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/button/buttonview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/icons/dropdown-arrow.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/list/listview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/list/listitemview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/list/listseparatorview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/button/switchbuttonview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/bindings/clickoutsidehandler.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/dropdown/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/toolbar/toolbarview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/bindings/preventdefault.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/three-vertical-dots.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-editor-classic/src/classiceditoruiview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-editor-classic/src/classiceditor.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/editor/utils/attachtoform.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/dom/getdatafromelement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/plugin.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-clipboard/src/datatransfer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-clipboard/src/clipboardobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-clipboard/src/utils/viewtoplaintext.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-clipboard/src/clipboard.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-clipboard/src/utils/plaintexttohtml.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-clipboard/src/utils/normalizeclipboarddata.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/command.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-enter/src/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-enter/src/entercommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-enter/src/enterobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-enter/src/enter.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-enter/src/shiftentercommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-enter/src/shiftenter.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-select-all/src/selectallcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-select-all/src/selectallediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-select-all/src/selectallui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-select-all/theme/icons/select-all.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-select-all/src/selectall.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/utils/changebuffer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/inputcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/utils/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/difftochanges.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/utils/injecttypingmutationshandling.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/input.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/deletecommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/deleteobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/delete.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/typing.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/model/operation/transform.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-undo/src/basecommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-undo/src/undocommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-undo/src/redocommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-undo/src/undoediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-undo/theme/icons/undo.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-undo/theme/icons/redo.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-undo/src/undoui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-undo/src/undo.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/contextplugin.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/pendingactions.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-upload/src/filereader.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-upload/src/filerepository.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-adapter-ckfinder/src/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-adapter-ckfinder/src/uploadadapter.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-utils/src/first.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-alignment/src/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-alignment/src/alignmentcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-alignment/src/alignmentediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/align-left.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/align-right.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-alignment/src/alignmentui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/align-center.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/align-justify.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-autoformat/src/blockautoformatediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-autoformat/src/inlineautoformatediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-autoformat/src/autoformat.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/src/attributecommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/src/bold/boldediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/src/bold/boldui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/theme/icons/bold.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/src/italic/italicediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/src/italic/italicui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/theme/icons/italic.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/src/underline/underlineediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/src/underline/underlineui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/theme/icons/underline.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-block-quote/src/blockquotecommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-block-quote/src/blockquoteediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-block-quote/src/blockquoteui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/quote.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ckfinder/src/ckfinderui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ckfinder/theme/icons/browse-files.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/image/imageloadobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/src/highlightstack.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/panel/balloon/balloonpanelview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/src/widgettypearound/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/src/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/theme/icons/drag-handle.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/image/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/image/converters.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/image/imageinsertcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/image/imageediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/mouseobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/twostepcaretmovement.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/utils/findattributerange.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/src/utils/automaticdecorators.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_castSlice.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_hasUnicode.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_asciiToArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_unicodeToArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_stringToArray.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/_createCaseFirst.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/upperFirst.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/src/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/src/linkcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/src/unlinkcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/src/utils/manualdecorator.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/src/linkediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/utils/inlinehighlight.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/notification/notification.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ckfinder/src/ckfindercommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ckfinder/src/ckfinderediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor-cloud-services-core/src/uploadgateway/fileuploader.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor-cloud-services-core/src/token/token.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-cloud-services/src/cloudservices.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-easy-image/src/cloudservicesuploadadapter.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor-cloud-services-core/src/uploadgateway/uploadgateway.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/src/widgettypearound/widgettypearound.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/theme/icons/return-arrow.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/src/widget.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagetextalternative/imagetextalternativecommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagetextalternative/imagetextalternativeediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/labeledfield/labeledfieldview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/inputtext/inputtextview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/labeledfield/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/bindings/submithandler.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/check.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/cancel.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagetextalternative/ui/textalternativeformview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/panel/balloon/contextualballoon.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/icons/previous-arrow.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/theme/icons/next-arrow.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/image/ui/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagetextalternative/imagetextalternativeui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/low-vision.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagetextalternative.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/image.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-upload/src/ui/filedialogbuttonview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imageupload/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imageupload/imageuploadui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/image.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imageupload/imageuploadprogress.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/theme/icons/image_placeholder.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/upcastwriter.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imageupload/imageuploadcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imageupload/imageuploadediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imageupload.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paragraph/src/paragraphcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paragraph/src/insertparagraphcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paragraph/src/paragraph.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-heading/src/headingcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-heading/src/headingediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/model.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-heading/src/headingui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-heading/src/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagecaption/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagecaption/imagecaptionediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagestyle/imagestylecommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagestyle/converters.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/object-full-width.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/object-left.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/object-center.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/object-right.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagestyle/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagestyle/imagestyleediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagestyle/imagestyleui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-widget/src/widgettoolbarrepository.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/src/multicommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-indent/src/indentediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-indent/theme/icons/indent.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-indent/theme/icons/outdent.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-indent/src/indentui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-engine/src/view/observer/clickobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/src/ui/linkformview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/src/ui/linkactionsview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/theme/icons/unlink.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-core/theme/icons/pencil.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/src/linkui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/theme/icons/link.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-list/src/listcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-list/src/indentcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-list/src/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-list/src/converters.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-list/src/listediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-list/src/listui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-list/theme/icons/numberedlist.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-list/theme/icons/bulletedlist.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/src/converters.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/src/utils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/src/mediaembedcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/src/mediaregistry.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/theme/icons/media-placeholder.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/src/mediaembedediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/src/automediaembed.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/src/ui/mediaformview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/src/mediaembedui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/theme/icons/media.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paste-from-office/src/filters/list.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paste-from-office/src/normalizers/googledocsnormalizer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paste-from-office/src/filters/removeboldwrapper.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paste-from-office/src/filters/space.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paste-from-office/src/filters/parse.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paste-from-office/src/filters/image.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paste-from-office/src/normalizers/mswordnormalizer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/utils/common.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/converters/upcasttable.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/tablewalker.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/converters/downcast.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/inserttablecommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/utils/selection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/insertrowcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/insertcolumncommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/splitcellcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/utils/structure.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/mergecellcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/removerowcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/removecolumncommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/setheaderrowcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/setheadercolumncommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/tableutils.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/mergecellscommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/selectrowcommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/commands/selectcolumncommand.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/converters/table-layout-post-fixer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/converters/table-cell-paragraph-post-fixer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/converters/table-cell-refresh-post-fixer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/converters/table-heading-rows-refresh-post-fixer.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/tableediting.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ui/src/dropdown/button/splitbuttonview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/ui/inserttableview.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/tableui.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/icons/table.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/icons/table-column.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/icons/table-row.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/theme/icons/table-merge-cell.svg", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/tableselection.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/tableclipboard.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/tablekeyboard.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/tablemouse/mouseeventsobserver.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/tablemouse.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/utils/ui/widget.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/textwatcher.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/utils/getlasttextline.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/Users/dave/Sites/ckeditor5/node_modules/lodash-es/escapeRegExp.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-typing/src/texttransformation.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ClassicEditor/src/ckeditor.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-essentials/src/essentials.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-alignment/src/alignment.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/src/bold.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/src/italic.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-basic-styles/src/underline.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-block-quote/src/blockquote.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-ckfinder/src/ckfinder.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-easy-image/src/easyimage.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-heading/src/heading.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagecaption.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagestyle.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-image/src/imagetoolbar.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-indent/src/indent.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-link/src/link.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-list/src/list.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-media-embed/src/mediaembed.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-paste-from-office/src/pastefromoffice.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/table.js", "../../../node_modules/@citysupport/ckeditor5-build-classic/build/webpack:/ckeditor5-table/src/tabletoolbar.js", "../../javascript/controllers/rich_text_controller.js", "../../../node_modules/tom-select/src/contrib/microevent.ts", "../../../node_modules/tom-select/src/contrib/microplugin.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/diacritics.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/utils.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/sifter.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/utils.ts", "../../../node_modules/tom-select/src/getSettings.ts", "../../../node_modules/tom-select/src/tom-select.ts", "../../../node_modules/tom-select/src/plugins/change_listener/plugin.ts", "../../../node_modules/tom-select/src/plugins/checkbox_options/plugin.ts", "../../../node_modules/tom-select/src/plugins/clear_button/plugin.ts", "../../../node_modules/tom-select/src/plugins/drag_drop/plugin.ts", "../../../node_modules/tom-select/src/plugins/dropdown_header/plugin.ts", "../../../node_modules/tom-select/src/plugins/caret_position/plugin.ts", "../../../node_modules/tom-select/src/plugins/dropdown_input/plugin.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/plugins/optgroup_columns/plugin.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/plugins/virtual_scroll/plugin.ts", "../../../node_modules/tom-select/src/tom-select.complete.ts", "../../javascript/controllers/select_controller.js", "../../../node_modules/sortablejs/modular/sortable.esm.js", "../../javascript/controllers/sortable_controller.js", "../../javascript/controllers/switch_submit_controller.js", "../../../node_modules/moment/moment.js", "../../../node_modules/chart.js/dist/Chart.js", "../../javascript/controllers/sync_chart_controller.js", "../../javascript/controllers/typeahead_controller.js", "../../javascript/controllers/index.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/cable_stream_source_element.js", "../../javascript/application.js"],
"sourcesContent": ["export default {\n logger: self.console,\n WebSocket: self.WebSocket\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 recordPing() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n this.recordPing()\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 },\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 logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\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 if (this.isActive()) {\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 // 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 switch (type) {\n case message_types.welcome:\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 this.monitor.recordPing()\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n return this.subscriptions.notify(identifier, \"connected\")\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 }\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\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", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n var context = this;\n\n (function() {\n (function() {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n\n }).call(this);\n }).call(context);\n\n var Rails = context.Rails;\n\n (function() {\n (function() {\n var nonce;\n\n nonce = null;\n\n Rails.loadCSPNonce = function() {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function() {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n\n }).call(this);\n (function() {\n var expando, m;\n\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function(element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function(element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function(element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n\n Rails.$ = function(selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n\n }).call(this);\n (function() {\n var $, csrfParam, csrfToken;\n\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function(xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function() {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if ((token != null) && (param != null)) {\n return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n return input.value = token;\n });\n }\n };\n\n }).call(this);\n (function() {\n var CustomEvent, fire, matches, preventDefault;\n\n matches = Rails.matches;\n\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function() {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n }\n return result;\n };\n }\n\n fire = Rails.fire = function(obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function(e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function(element, selector, eventType, handler) {\n return element.addEventListener(eventType, function(e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n\n }).call(this);\n (function() {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function(options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function() {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n\n createXHR = function(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n\n processResponse = function(response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n\n Rails.href = function(element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function(url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (error) {\n e = error;\n return true;\n }\n };\n\n }).call(this);\n (function() {\n var matches, toArray;\n\n matches = Rails.matches;\n\n toArray = function(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function(element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function(option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function(param) {\n if (param.name != null) {\n return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function(form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function(el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n\n }).call(this);\n (function() {\n var allowAction, fire, stopEverything;\n\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function(e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function(message, element) {\n return confirm(message);\n };\n\n allowAction = function(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n\n }).call(this);\n (function() {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function(e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function(e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function(e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n\n }).call(this);\n (function() {\n var stopEverything;\n\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function(e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n\n }).call(this);\n (function() {\n var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n slice = [].slice;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function(element) {\n var value;\n value = element.getAttribute('data-remote');\n return (value != null) && value !== 'false';\n };\n\n Rails.handleRemote = function(e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: (withCredentials != null) && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function(e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function(e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n\n }).call(this);\n (function() {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function() {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function() {\n $(Rails.formEnableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n return setTimeout((function() {\n return disableElement(e);\n }), 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);\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", "import { Controller } from '@hotwired/stimulus'\n\nconst directionMappings = {\n 'EAST': 'E',\n 'WEST': 'W',\n 'NORTH': 'N',\n 'NORTHEAST': 'NE',\n 'NORTHWEST': 'NE',\n 'SOUTH': 'S',\n 'SOUTHEAST': 'SE',\n 'SOUTHWEST': 'SW'\n}\n\nexport default class extends Controller {\n static targets = [\n 'poBoxAddress',\n 'form', 'streetAddress', 'streetNumber', 'streetDirectionPrefix', 'streetName', 'streetType', 'streetDirectionSuffix', 'streetUnitNumber', 'city', 'state', 'zip',\n 'geoLookup', 'geoLookupSubmitText', 'geoLookupSubmitLoad', 'geoLookupAddress',\n 'geoLookupResultsTitle', 'geoLookupResultsItems', 'geoLookupResultsEmpty', 'geoLookupResultsError'\n ]\n\n static values = {\n geoLookupUrl: String,\n geoLookupCity: String,\n geoLookupState: String\n }\n\n initialize() {\n this.geoLookupResults = []\n }\n\n connect() {\n if (this.hasGeoLookupTarget) {\n this.formTarget.classList.add('d-none')\n }\n }\n\n po_box() {\n this.streetAddressTarget.classList.toggle('d-none')\n this.poBoxAddressTarget.classList.toggle('d-none')\n }\n\n geoLookupSubmit(event) {\n event.preventDefault()\n\n this.geoLookupSubmitTextTarget.classList.add('d-none')\n this.geoLookupSubmitLoadTarget.classList.remove('d-none')\n\n this.geoLookup()\n }\n\n geoLookupReset(event) {\n this.geoLookupAddressTarget.value = ''\n this.geoLookupAddressTarget.focus()\n\n this.geoLookupResultsItemsTarget.innerHTML = ''\n\n this.geoLookupResultsTitleTarget.classList.add('d-none')\n this.geoLookupResultsItemsTarget.classList.add('d-none')\n this.geoLookupResultsEmptyTarget.classList.add('d-none')\n this.geoLookupResultsErrorTarget.classList.add('d-none')\n }\n\n async geoLookup() {\n const url = new URL(this.geoLookupUrlValue)\n url.search = this.geoLookupUrlParams()\n\n const request = new Request(url)\n const response = await fetch(request)\n\n if (response) {\n this.geoLookupSubmitLoadTarget.classList.add('d-none')\n this.geoLookupSubmitTextTarget.classList.remove('d-none')\n }\n\n if (response.ok) {\n const data = await response.json()\n this.geoLookupResultsHandler(data.candidates)\n this.geoLookupResultsErrorTarget.classList.add('d-none')\n } else {\n this.geoLookupResultsErrorTarget.classList.remove('d-none')\n }\n }\n\n async geoLookupResultsHandler(results) {\n this.geoLookupResults = results\n this.geoLookupResultsItemsTarget.innerHTML = ''\n\n if (results.length == 0) {\n this.geoLookupResultsItemsTarget.innerHTML = ''\n this.geoLookupResultsItemsTarget.classList.add('d-none')\n this.geoLookupResultsTitleTarget.classList.add('d-none')\n this.geoLookupResultsEmptyTarget.classList.remove('d-none')\n } else {\n results.forEach( (result, idx) => {\n let span1 = document.createElement('span')\n span1.classList.add('d-block')\n span1.innerHTML = result.attributes['StAddr']\n if (result.attributes['SubAddUnit'].length > 0) {\n span1.innerHTML += ', ' + result.attributes['SubAddUnit']\n }\n\n let span2 = document.createElement('span')\n span2.classList.add('d-block')\n span2.innerHTML = result.attributes['City'] + ', '\n span2.innerHTML += result.attributes['StateAbbr'] + ' ' + result.attributes['ZIP']\n\n let button = document.createElement('button')\n button.appendChild(span1)\n button.appendChild(span2)\n button.classList.add('btn')\n button.classList.add('btn-outline-secondary')\n button.classList.add('text-start')\n button.setAttribute('data-action', 'click->address-fields#geoLookupSelect')\n button.setAttribute('data-address-fields-geo-lookup-result-param', idx)\n\n let item = document.createElement('div')\n item.appendChild(button)\n item.classList.add('d-grid')\n\n this.geoLookupResultsItemsTarget.appendChild(item)\n })\n\n this.geoLookupResultsEmptyTarget.classList.add('d-none')\n this.geoLookupResultsTitleTarget.classList.remove('d-none')\n this.geoLookupResultsItemsTarget.classList.remove('d-none')\n }\n }\n\n geoLookupUrlParams() {\n let params = new URLSearchParams()\n\n params.append('street', this.geoLookupAddressTarget.value)\n params.append('city', this.geoLookupCityValue)\n params.append('state', this.geoLookupStateValue)\n params.append('matchOutOfRange', true)\n params.append('sourceCountry', 'United States')\n params.append('outFields', '*')\n params.append('f', 'json')\n\n return params\n }\n\n geoLookupSelect(event) {\n event.preventDefault()\n\n let result = this.geoLookupResults[event.params.geoLookupResult]\n\n this.streetNumberTarget.value = result.attributes['AddNum']\n this.streetDirectionPrefixTarget.value = this.directionMapping(result.attributes['StPreDir'])\n this.streetNameTarget.value = result.attributes['StName']\n this.streetTypeTarget.value = result.attributes['StType']\n this.streetDirectionSuffixTarget.value = this.directionMapping(result.attributes['StDir'])\n this.streetUnitNumberTarget.value = result.attributes['SubAddUnit']\n this.cityTarget.value = result.attributes['City']\n this.stateTarget.value = result.attributes['StateAbbr']\n this.zipTarget.value = result.attributes['ZIP']\n\n this.geoLookupTarget.classList.add('d-none')\n this.geoLookupResultsTitleTarget.classList.add('d-none')\n this.geoLookupResultsItemsTarget.classList.add('d-none')\n this.geoLookupResultsEmptyTarget.classList.add('d-none')\n this.formTarget.classList.remove('d-none')\n }\n\n geoLookupSelectUndo(event) {\n event.preventDefault()\n\n this.streetNumberTarget.value = ''\n this.streetDirectionPrefixTarget.value = ''\n this.streetNameTarget.value = ''\n this.streetTypeTarget.value = ''\n this.streetDirectionSuffixTarget.value = ''\n this.streetUnitNumberTarget.value = ''\n this.cityTarget.value = ''\n this.stateTarget.value = ''\n this.zipTarget.value = ''\n\n this.geoLookupTarget.classList.remove('d-none')\n this.geoLookupResultsTitleTarget.classList.remove('d-none')\n this.geoLookupResultsItemsTarget.classList.remove('d-none')\n this.formTarget.classList.add('d-none')\n }\n\n directionMapping(value) {\n let formatted = value.replace(/\\s+/g, '').toUpperCase()\n let mapped = directionMappings[formatted]\n\n if (mapped) {\n return mapped\n } else {\n return value\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['input']\n\n select() {\n this.inputTarget.checked = true;\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['row']\n\n go() {\n window.location = this.rowTarget.dataset.href;\n }\n}\n", "/*!\n * \n * litepicker.umd.js\n * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker)\n * Package: litepicker (https://www.npmjs.com/package/litepicker)\n * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md)\n * Copyright 2019-2021 Rinat G.\n * \n * Hash: 504eef9c08cb42543660\n * \n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"Litepicker\",[],e):\"object\"==typeof exports?exports.Litepicker=e():t.Litepicker=e()}(window,(function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)i.d(n,o,function(e){return t[e]}.bind(null,o));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=4)}([function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e,i,n){void 0===e&&(e=null),void 0===i&&(i=null),void 0===n&&(n=\"en-US\"),this.dateInstance=\"object\"==typeof i&&null!==i?i.parse(e instanceof t?e.clone().toJSDate():e):\"string\"==typeof i?t.parseDateTime(e,i,n):e?t.parseDateTime(e):t.parseDateTime(new Date),this.lang=n}return t.parseDateTime=function(e,i,n){if(void 0===i&&(i=\"YYYY-MM-DD\"),void 0===n&&(n=\"en-US\"),!e)return new Date(NaN);if(e instanceof Date)return new Date(e);if(e instanceof t)return e.clone().toJSDate();if(/^-?\\d{10,}$/.test(e))return t.getDateZeroTime(new Date(Number(e)));if(\"string\"==typeof e){for(var o=[],s=null;null!=(s=t.regex.exec(i));)\"\\\\\"!==s[1]&&o.push(s);if(o.length){var r={year:null,month:null,shortMonth:null,longMonth:null,day:null,value:\"\"};o[0].index>0&&(r.value+=\".*?\");for(var a=0,l=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case\"[]\":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e=\"seconds\"),e){case\"second\":case\"seconds\":return t.getTime()>this.getTime();case\"day\":case\"days\":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case\"month\":case\"months\":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case\"year\":case\"years\":return t.getFullYear()>this.getFullYear()}throw new Error(\"isBefore: Invalid unit!\")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e=\"seconds\"),e){case\"second\":case\"seconds\":return t.getTime()>=this.getTime();case\"day\":case\"days\":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case\"month\":case\"months\":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error(\"isSameOrBefore: Invalid unit!\")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e=\"seconds\"),e){case\"second\":case\"seconds\":return this.getTime()>t.getTime();case\"day\":case\"days\":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case\"month\":case\"months\":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case\"year\":case\"years\":return this.getFullYear()>t.getFullYear()}throw new Error(\"isAfter: Invalid unit!\")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e=\"seconds\"),e){case\"second\":case\"seconds\":return this.getTime()>=t.getTime();case\"day\":case\"days\":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case\"month\":case\"months\":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error(\"isSameOrAfter: Invalid unit!\")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e=\"seconds\"),e){case\"second\":case\"seconds\":return this.getTime()===t.getTime();case\"day\":case\"days\":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case\"month\":case\"months\":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error(\"isSame: Invalid unit!\")},t.prototype.add=function(t,e){switch(void 0===e&&(e=\"seconds\"),e){case\"second\":case\"seconds\":this.setSeconds(this.getSeconds()+t);break;case\"day\":case\"days\":this.setDate(this.getDate()+t);break;case\"month\":case\"months\":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e=\"seconds\"),e){case\"second\":case\"seconds\":this.setSeconds(this.getSeconds()-t);break;case\"day\":case\"days\":this.setDate(this.getDate()-t);break;case\"month\":case\"months\":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e=\"seconds\");switch(e){default:case\"second\":case\"seconds\":return this.getTime()-t.getTime();case\"day\":case\"days\":return Math.round((this.timestamp()-t.getTime())/864e5);case\"month\":case\"months\":}},t.prototype.format=function(e,i){if(void 0===i&&(i=\"en-US\"),\"object\"==typeof e)return e.output(this.clone().toJSDate());for(var n=\"\",o=[],s=null;null!=(s=t.regex.exec(e));)\"\\\\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(n+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&i.isAfter(e)&&i.setMonth(i.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=i.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener(\"click\",this.onClick.bind(this),!0),this.ui=document.createElement(\"div\"),this.ui.className=l.litepicker,this.ui.style.display=\"none\",this.ui.addEventListener(\"mouseenter\",this.onMouseEnter.bind(this),!0),this.ui.addEventListener(\"mouseleave\",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener(\"keyup\",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener(\"keyup\",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener(\"change\",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener(\"change\",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),\"function\"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var i=t.format(this.options.format,this.options.lang),n=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=i,this.options.elementEnd.value=n):this.options.element.value=\"\"+i+this.options.delimiter+n}t||e||(this.options.element.value=\"\",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=\"\"))}},e.prototype.isSamePicker=function(t){return t.closest(\".\"+l.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest(\".\"+l.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit(\"before:click\",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(l.dayItem)){if(t.preventDefault(),e.classList.contains(l.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var i=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=i.clone()}if(this.shouldCheckLockDays())c.rangeIsLocked(this.datePicked,this.options)&&(this.emit(\"error:range\",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s([\"preselect\"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(l.buttonPreviousMonth)){t.preventDefault();var n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest(\".\"+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()-o),this.gotoDate(this.calendars[n],n),void this.emit(\"change:month\",this.calendars[n],n)}if(e.classList.contains(l.buttonNextMonth)){t.preventDefault();n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest(\".\"+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()+o),this.gotoDate(this.calendars[n],n),void this.emit(\"change:month\",this.calendars[n],n)}e.classList.contains(l.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit(\"button:cancel\")),e.classList.contains(l.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit(\"button:apply\",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var i=this.ui.querySelector(\".\"+l.containerTooltip);i.style.visibility=\"visible\",i.innerHTML=e;var n=this.ui.getBoundingClientRect(),o=i.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var c=this.ui.parentNode.getBoundingClientRect();r-=c.top,a-=c.left}else r-=n.top,a-=n.left;r-=o.height,a-=o.width/2,a+=s.width/2,i.style.top=r+\"px\",i.style.left=a+\"px\",this.emit(\"tooltip\",i,t)},e.prototype.hideTooltip=function(){this.ui.querySelector(\".\"+l.containerTooltip).style.visibility=\"hidden\"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(l.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(l.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,i=t.target;if(this.isDayItem(i)&&this.shouldAllowMouseEnter(i)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var n=this.ui.querySelector(\".\"+l.dayItem+'[data-time=\"'+this.datePicked[0].getTime()+'\"]'),o=this.datePicked[0].clone(),s=new a.DateTime(i.dataset.time),r=!1;if(o.getTime()>s.getTime()){var c=o.clone();o=s.clone(),s=c.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll(\".\"+l.dayItem)).forEach((function(t){var i=new a.DateTime(t.dataset.time),n=e.renderDay(i);i.isBetween(o,s)&&n.classList.add(l.isInRange),t.className=n.className})),i.classList.add(l.isEndDate),r?(n&&n.classList.add(l.isFlipped),i.classList.add(l.isFlipped)):(n&&n.classList.remove(l.isFlipped),i.classList.remove(l.isFlipped)),this.options.showTooltip){var h=s.diff(o,\"day\")+1;if(\"function\"==typeof this.options.tooltipNumber&&(h=this.options.tooltipNumber.call(this,h)),h>0){var p=this.pluralSelector(h),d=h+\" \"+(this.options.tooltipText[p]?this.options.tooltipText[p]:\"[\"+p+\"]\");this.showTooltip(i,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&i.dispatchEvent(new Event(\"click\"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),i=e[0],n=e[1],o=this.options.format;if(this.options.elementEnd?i instanceof a.DateTime&&n instanceof a.DateTime&&i.format(o)===this.options.element.value&&n.format(o)===this.options.elementEnd.value:this.options.singleMode?i instanceof a.DateTime&&i.format(o)===this.options.element.value:i instanceof a.DateTime&&n instanceof a.DateTime&&\"\"+i.format(o)+this.options.delimiter+n.format(o)===this.options.element.value){if(n&&i.getTime()>n.getTime()){var s=i.clone();i=n.clone(),n=s.clone()}this.options.startDate=new a.DateTime(i,this.options.format,this.options.lang),n&&(this.options.endDate=new a.DateTime(n,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=i.clone(),l=0;(this.options.elementEnd?i.format(o)===t.target.value:t.target.value.startsWith(i.format(o)))||(r=n.clone(),l=this.options.numberOfMonths-1),this.emit(\"selected\",this.getStartDate(),this.getEndDate()),this.gotoDate(r,l)}},e}(r.Calendar);e.Litepicker=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,i=0;iy)(u=document.createElement(\"option\")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=y;d>=v;d-=1){var u=document.createElement(\"option\"),b=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&b.isBefore(new r.DateTime(this.options.minDate),\"year\")||this.options.maxDate&&b.isAfter(new r.DateTime(this.options.maxDate),\"year\"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W\");for(var _=1;_<=7;_+=1){var T=3+this.options.firstDay+_,L=document.createElement(\"div\");L.innerHTML=this.weekdayName(T),L.title=this.weekdayName(T,\"long\"),M.appendChild(L)}var E=document.createElement(\"div\");E.className=a.containerDays;var S=this.calcSkipDays(n);this.options.showWeekNumbers&&S&&E.appendChild(this.renderWeekNumber(n));for(var I=0;I1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,\"day\"),c=this.datePicked[0].clone().add(o,\"day\");t.isBetween(s,this.datePicked[0],\"(]\")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],c,\"[)\")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var h=this.options.maxDays;s=this.datePicked[0].clone().subtract(h,\"day\"),c=this.datePicked[0].clone().add(h,\"day\");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(c)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),l.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],\"[]\"):e.isSame(t,\"day\")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains(\"is-locked\")?-1:0,this.emit(\"render:day\",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement(\"div\");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\\n \\n \\n \\n \",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector(\".\"+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector(\".\"+a.buttonApply).setAttribute(\"disabled\",\"\"),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var i=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector(\".\"+a.previewDateRange).innerHTML=\"\"+e+this.options.delimiter+i}return this.emit(\"render:footer\",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement(\"div\"),i=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===i&&0===t.getMonth()?\"53 / 1\":i,e},e.prototype.renderTooltip=function(){var t=document.createElement(\"div\");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e=\"short\"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=c},function(t,e,i){\"use strict\";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,i=1,n=arguments.length;i',nextMonth:'',reset:''},tooltipText:{one:\"day\",other:\"days\"}},i.options=s(s({},i.options),e.element.dataset),Object.keys(i.options).forEach((function(t){\"true\"!==i.options[t]&&\"false\"!==i.options[t]||(i.options[t]=\"true\"===i.options[t])}));var n=s(s({},i.options.dropdowns),e.dropdowns),o=s(s({},i.options.buttonText),e.buttonText),r=s(s({},i.options.tooltipText),e.tooltipText);i.options=s(s({},i.options),e),i.options.dropdowns=s({},n),i.options.buttonText=s({},o),i.options.tooltipText=s({},r),i.options.elementEnd||(i.options.allowRepick=!1),i.options.lockDays.length&&(i.options.lockDays=a.DateTime.convertArray(i.options.lockDays,i.options.lockDaysFormat)),i.options.highlightedDays.length&&(i.options.highlightedDays=a.DateTime.convertArray(i.options.highlightedDays,i.options.highlightedDaysFormat));var l=i.parseInput(),c=l[0],h=l[1];i.options.startDate&&(i.options.singleMode||i.options.endDate)&&(c=new a.DateTime(i.options.startDate,i.options.format,i.options.lang)),c&&i.options.endDate&&(h=new a.DateTime(i.options.endDate,i.options.format,i.options.lang)),c instanceof a.DateTime&&!isNaN(c.getTime())&&(i.options.startDate=c),i.options.startDate&&h instanceof a.DateTime&&!isNaN(h.getTime())&&(i.options.endDate=h),!i.options.singleMode||i.options.startDate instanceof a.DateTime||(i.options.startDate=null),i.options.singleMode||i.options.startDate instanceof a.DateTime&&i.options.endDate instanceof a.DateTime||(i.options.startDate=null,i.options.endDate=null);for(var p=0;pwindow.innerHeight,c=e.top+s-i.height>=i.height;l&&c&&(r=e.top+s-i.height)}if(/left|right/.test(n[0])||n[1]&&\"auto\"!==n[1]&&/left|right/.test(n[1]))a=/left|right/.test(n[0])?e[n[0]]+o:e[n[1]]+o,\"right\"!==n[0]&&\"right\"!==n[1]||(a-=i.width);else{a=e.left+o;l=e.left+i.width>window.innerWidth;var h=e.right+o-i.width>=0;l&&h&&(a=e.right+o-i.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=c},function(t,e,i){\"use strict\";var n,o=\"object\"==typeof Reflect?Reflect:null,s=o&&\"function\"==typeof o.apply?o.apply:function(t,e,i){return Function.prototype.apply.call(t,e,i)};n=o&&\"function\"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var l=10;function c(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function h(t,e,i,n){var o,s,r,a;if(\"function\"!=typeof i)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof i);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit(\"newListener\",e,i.listener?i.listener:i),s=t._events),r=s[e]),void 0===r)r=s[e]=i,++t._eventsCount;else if(\"function\"==typeof r?r=s[e]=n?[i,r]:[r,i]:n?r.unshift(i):r.push(i),(o=c(t))>0&&r.length>o&&!r.warned){r.warned=!0;var l=new Error(\"Possible EventEmitter memory leak detected. \"+r.length+\" \"+String(e)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");l.name=\"MaxListenersExceededWarning\",l.emitter=t,l.type=e,l.count=r.length,a=l,console&&console.warn&&console.warn(a)}return t}function p(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error(\"Unhandled error.\"+(r?\" (\"+r.message+\")\":\"\"));throw a.context=r,a}var l=o[t];if(void 0===l)return!1;if(\"function\"==typeof l)s(l,this,e);else{var c=l.length,h=f(l,c);for(i=0;i=0;s--)if(i[s]===e||i[s].listener===e){r=i[s].listener,o=s;break}if(o<0)return this;0===o?i.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return\"function\"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,i){(e=i(9)(!1)).push([t.i,':root{--litepicker-container-months-color-bg: #fff;--litepicker-container-months-box-shadow-color: #ddd;--litepicker-footer-color-bg: #fafafa;--litepicker-footer-box-shadow-color: #ddd;--litepicker-tooltip-color-bg: #fff;--litepicker-month-header-color: #333;--litepicker-button-prev-month-color: #9e9e9e;--litepicker-button-next-month-color: #9e9e9e;--litepicker-button-prev-month-color-hover: #2196f3;--litepicker-button-next-month-color-hover: #2196f3;--litepicker-month-width: calc(var(--litepicker-day-width) * 7);--litepicker-month-weekday-color: #9e9e9e;--litepicker-month-week-number-color: #9e9e9e;--litepicker-day-width: 38px;--litepicker-day-color: #333;--litepicker-day-color-hover: #2196f3;--litepicker-is-today-color: #f44336;--litepicker-is-in-range-color: #bbdefb;--litepicker-is-locked-color: #9e9e9e;--litepicker-is-start-color: #fff;--litepicker-is-start-color-bg: #2196f3;--litepicker-is-end-color: #fff;--litepicker-is-end-color-bg: #2196f3;--litepicker-button-cancel-color: #fff;--litepicker-button-cancel-color-bg: #9e9e9e;--litepicker-button-apply-color: #fff;--litepicker-button-apply-color-bg: #2196f3;--litepicker-button-reset-color: #909090;--litepicker-button-reset-color-hover: #2196f3;--litepicker-highlighted-day-color: #333;--litepicker-highlighted-day-color-bg: #ffeb3b}.show-week-numbers{--litepicker-month-width: calc(var(--litepicker-day-width) * 8)}.litepicker{font-family:-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;font-size:0.8em;display:none}.litepicker button{border:none;background:none}.litepicker .container__main{display:-webkit-box;display:-ms-flexbox;display:flex}.litepicker .container__months{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:var(--litepicker-container-months-color-bg);border-radius:5px;-webkit-box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);width:calc(var(--litepicker-month-width) + 10px);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months.columns-2{width:calc((var(--litepicker-month-width) * 2) + 20px)}.litepicker .container__months.columns-3{width:calc((var(--litepicker-month-width) * 3) + 30px)}.litepicker .container__months.columns-4{width:calc((var(--litepicker-month-width) * 4) + 40px)}.litepicker .container__months.split-view .month-item-header .button-previous-month,.litepicker .container__months.split-view .month-item-header .button-next-month{visibility:visible}.litepicker .container__months .month-item{padding:5px;width:var(--litepicker-month-width);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months .month-item-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:500;padding:10px 5px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--litepicker-month-header-color)}.litepicker .container__months .month-item-header div{-webkit-box-flex:1;-ms-flex:1;flex:1}.litepicker .container__months .month-item-header div>.month-item-name{margin-right:5px}.litepicker .container__months .month-item-header div>.month-item-year{padding:0}.litepicker .container__months .month-item-header .reset-button{color:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button>svg{fill:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button *{pointer-events:none}.litepicker .container__months .month-item-header .reset-button:hover{color:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .reset-button:hover>svg{fill:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .button-previous-month,.litepicker .container__months .month-item-header .button-next-month{visibility:hidden;text-decoration:none;padding:3px 5px;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__months .month-item-header .button-previous-month *,.litepicker .container__months .month-item-header .button-next-month *{pointer-events:none}.litepicker .container__months .month-item-header .button-previous-month{color:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month>svg,.litepicker .container__months .month-item-header .button-previous-month>img{fill:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month:hover{color:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-previous-month:hover>svg{fill:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month{color:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month>svg,.litepicker .container__months .month-item-header .button-next-month>img{fill:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month:hover{color:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month:hover>svg{fill:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-weekdays-row{display:-webkit-box;display:-ms-flexbox;display:flex;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:var(--litepicker-month-weekday-color)}.litepicker .container__months .month-item-weekdays-row>div{padding:5px 0;font-size:85%;-webkit-box-flex:1;-ms-flex:1;flex:1;width:var(--litepicker-day-width);text-align:center}.litepicker .container__months .month-item:first-child .button-previous-month{visibility:visible}.litepicker .container__months .month-item:last-child .button-next-month{visibility:visible}.litepicker .container__months .month-item.no-previous-month .button-previous-month{visibility:hidden}.litepicker .container__months .month-item.no-next-month .button-next-month{visibility:hidden}.litepicker .container__days{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center;-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__days>div,.litepicker .container__days>a{padding:5px 0;width:var(--litepicker-day-width)}.litepicker .container__days .day-item{color:var(--litepicker-day-color);text-align:center;text-decoration:none;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__days .day-item:hover{color:var(--litepicker-day-color-hover);-webkit-box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover);box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover)}.litepicker .container__days .day-item.is-today{color:var(--litepicker-is-today-color)}.litepicker .container__days .day-item.is-locked{color:var(--litepicker-is-locked-color)}.litepicker .container__days .day-item.is-locked:hover{color:var(--litepicker-is-locked-color);-webkit-box-shadow:none;box-shadow:none;cursor:default}.litepicker .container__days .day-item.is-in-range{background-color:var(--litepicker-is-in-range-color);border-radius:0}.litepicker .container__days .day-item.is-start-date{color:var(--litepicker-is-start-color);background-color:var(--litepicker-is-start-color-bg);border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-flipped{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date{color:var(--litepicker-is-end-color);background-color:var(--litepicker-is-end-color-bg);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date.is-flipped{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-end-date{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-highlighted{color:var(--litepicker-highlighted-day-color);background-color:var(--litepicker-highlighted-day-color-bg)}.litepicker .container__days .week-number{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--litepicker-month-week-number-color);font-size:85%}.litepicker .container__footer{text-align:right;padding:10px 5px;margin:0 5px;background-color:var(--litepicker-footer-color-bg);-webkit-box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);border-bottom-left-radius:5px;border-bottom-right-radius:5px}.litepicker .container__footer .preview-date-range{margin-right:10px;font-size:90%}.litepicker .container__footer .button-cancel{background-color:var(--litepicker-button-cancel-color-bg);color:var(--litepicker-button-cancel-color);border:0;padding:3px 7px 4px;border-radius:3px}.litepicker .container__footer .button-cancel *{pointer-events:none}.litepicker .container__footer .button-apply{background-color:var(--litepicker-button-apply-color-bg);color:var(--litepicker-button-apply-color);border:0;padding:3px 7px 4px;border-radius:3px;margin-left:10px;margin-right:10px}.litepicker .container__footer .button-apply:disabled{opacity:0.7}.litepicker .container__footer .button-apply *{pointer-events:none}.litepicker .container__tooltip{position:absolute;margin-top:-4px;padding:4px 8px;border-radius:4px;background-color:var(--litepicker-tooltip-color-bg);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25);box-shadow:0 1px 3px rgba(0,0,0,0.25);white-space:nowrap;font-size:11px;pointer-events:none;visibility:hidden}.litepicker .container__tooltip:before{position:absolute;bottom:-5px;left:calc(50% - 5px);border-top:5px solid rgba(0,0,0,0.12);border-right:5px solid transparent;border-left:5px solid transparent;content:\"\"}.litepicker .container__tooltip:after{position:absolute;bottom:-4px;left:calc(50% - 4px);border-top:4px solid var(--litepicker-tooltip-color-bg);border-right:4px solid transparent;border-left:4px solid transparent;content:\"\"}\\n',\"\"]),e.locals={showWeekNumbers:\"show-week-numbers\",litepicker:\"litepicker\",containerMain:\"container__main\",containerMonths:\"container__months\",columns2:\"columns-2\",columns3:\"columns-3\",columns4:\"columns-4\",splitView:\"split-view\",monthItemHeader:\"month-item-header\",buttonPreviousMonth:\"button-previous-month\",buttonNextMonth:\"button-next-month\",monthItem:\"month-item\",monthItemName:\"month-item-name\",monthItemYear:\"month-item-year\",resetButton:\"reset-button\",monthItemWeekdaysRow:\"month-item-weekdays-row\",noPreviousMonth:\"no-previous-month\",noNextMonth:\"no-next-month\",containerDays:\"container__days\",dayItem:\"day-item\",isToday:\"is-today\",isLocked:\"is-locked\",isInRange:\"is-in-range\",isStartDate:\"is-start-date\",isFlipped:\"is-flipped\",isEndDate:\"is-end-date\",isHighlighted:\"is-highlighted\",weekNumber:\"week-number\",containerFooter:\"container__footer\",previewDateRange:\"preview-date-range\",buttonCancel:\"button-cancel\",buttonApply:\"button-apply\",containerTooltip:\"container__tooltip\"},t.exports=e},function(t,e,i){\"use strict\";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||\"\",n=t[3];if(!n)return i;if(e&&\"function\"==typeof btoa){var o=(r=n,a=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),l=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(a),\"/*# \".concat(l,\" */\")),s=n.sources.map((function(t){return\"/*# sourceURL=\".concat(n.sourceRoot||\"\").concat(t,\" */\")}));return[i].concat(s).concat([o]).join(\"\\n\")}var r,a,l;return[i].join(\"\\n\")}(e,t);return e[2]?\"@media \".concat(e[2],\" {\").concat(i,\"}\"):i})).join(\"\")},e.i=function(t,i,n){\"string\"==typeof t&&(t=[[null,t,\"\"]]);var o={};if(n)for(var s=0;sthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,i){void 0===i&&(i=!1),this.triggerElement=void 0;var n=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([n,s],this.options):r.dateIsLocked(n,this.options,[n,s])||r.dateIsLocked(s,this.options,[n,s]))&&!i?this.emit(\"error:range\",[n,s]):(this.setStartDate(n),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit(\"selected\",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var i=new o.DateTime(t);i.setDate(1),this.calendars[e]=i.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=n(n({},this.options.dropdowns),t.dropdowns),i=n(n({},this.options.buttonText),t.buttonText),s=n(n({},this.options.tooltipText),t.tooltipText);this.options=n(n({},this.options),t),this.options.dropdowns=n({},e),this.options.buttonText=n({},i),this.options.tooltipText=n({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;r {\n picker.on('show', () => {\n let date = picker.getDate();\n if (date) {\n date.setMonth(date.getMonth() - 1);\n picker.gotoDate(date);\n }\n })\n }\n });\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['container', 'toggle']\n\n getValue(element, selector) {\n return (\n element.matches ||\n element.matchesSelector ||\n element.msMatchesSelector ||\n element.mozMatchesSelector ||\n element.webkitMatchesSelector ||\n element.oMatchesSelector\n ).call(element, selector)\n }\n\n toggleElements(elements, value) {\n var toggleTarget = this.toggleTarget\n\n elements.forEach(function(el, i) {\n if(el != toggleTarget) {\n el.disabled = value\n }\n })\n }\n\n disableInputs() {\n var inputs = this.containerTarget.querySelectorAll('input, select, checkbox')\n var toggle = this.getValue(this.toggleTarget, ':checked')\n\n this.toggleElements(inputs, toggle)\n }\n\n connect() {\n this.toggleTarget.addEventListener('change', this.disableInputs.bind(this))\n this.disableInputs()\n }\n}\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export * from \"@stimulus/core\"\n", "import { Controller } from \"stimulus\"\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n static targets = [ 'status', 'update' ]\n\n result(event) {\n let [data, status, xhr] = event.detail;\n\n this.statusTarget.innerHTML = data.status;\n this.updateTarget.outerHTML = data.content;\n\n this.statusTarget.classList.add('text-success');\n this.statusTarget.classList.remove('text-danger');\n // $('[data-toggle=\"tooltip\"]').tooltip()\n }\n\n error(event) {\n this.statusTarget.classList.add('text-danger');\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 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", "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)) {\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 response = new FetchResponse(await window.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.ok && 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 get fetchOptions () {\n return {\n method: this.method.toUpperCase(),\n headers: this.headers,\n body: this.formattedBody,\n signal: this.signal,\n credentials: 'same-origin',\n redirect: this.redirect\n }\n }\n\n get headers () {\n return compact(\n Object.assign({\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-CSRF-Token': this.csrfToken,\n 'Content-Type': this.contentType,\n Accept: this.accept\n },\n 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 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 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 { FetchRequest } from './fetch_request'\nimport { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { get, post, put, patch, destroy } from './verbs'\n\nexport { FetchRequest, FetchResponse, RequestInterceptor, get, post, put, patch, destroy }\n", "import { Controller } from '@hotwired/stimulus'\nimport { get } from '@rails/request.js'\n\nexport default class extends Controller {\n static targets = [ 'loading', 'registration', 'error' ]\n\n connect() {\n this.attempts = 0\n this.startRefreshing()\n }\n\n disconnect() {\n this.stopRefreshing()\n }\n\n startRefreshing() {\n this.refreshTimer = setInterval(() => {\n this.fetchStatus()\n }, 1000)\n }\n\n stopRefreshing() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer)\n }\n }\n\n renderStatusResponse(data) {\n if (data['registered'] === true) {\n this.loadingTarget.setAttribute('style', 'display: none;')\n this.errorTarget.setAttribute('style', 'display: none;')\n this.registrationTarget.setAttribute('style', 'display: block;')\n } else {\n this.attempts++\n if (this.attempts > 5) {\n this.errorTarget.setAttribute('style', 'display: block;')\n }\n }\n }\n\n async fetchStatus() {\n const response = await get(location.href, {\n responseKind: 'json'\n })\n\n if (response.ok) {\n const data = JSON.parse(await response.text)\n this.renderStatusResponse(data)\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"nav-collapse\"\nexport default class extends Controller {\n connect() {\n if (this.element.querySelector('.active')) {\n this.element.classList.add('show')\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'authorization', 'charge', 'publicToken', 'accountId' ]\n\n authorize() {\n const el = this;\n const env = this.data.get('env') || 'production';\n const key = this.data.get('key');\n\n const handler = Plaid.create({\n clientName: 'CitySupport',\n countryCodes: ['US'],\n env: env,\n key: key,\n product: ['auth'],\n language: 'en',\n onLoad: function() {\n },\n onSuccess: function(public_token, metadata) {\n el.authorizationTarget.classList.add('d-none');\n el.chargeTarget.classList.remove('d-none');\n el.publicTokenTarget.value = public_token;\n el.accountIdTarget.value = metadata.account_id;\n },\n onExit: function(err, metadata) {\n },\n onEvent: function(eventName, metadata) {\n },\n });\n\n handler.open();\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n action() {\n window.print()\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['input']\n\n select() {\n this.inputTarget.checked ^= true;\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { get } from '@rails/request.js'\n\nexport default class extends Controller {\n static targets = ['cta', 'disabled']\n static values = { url: String }\n\n initialize() {\n this.fetchStatus();\n }\n\n disconnect() {\n this.stopRefreshing()\n }\n\n startRefreshing() {\n if (!this.refreshTimer) {\n this.refreshTimer = setInterval(() => {\n this.fetchStatus()\n }, 1000)\n }\n }\n\n stopRefreshing() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer)\n }\n }\n\n async fetchStatus() {\n const response = await get(this.urlValue, {\n contentType: 'application/json',\n responseKind: 'json'\n })\n\n if (response.ok) {\n const data = JSON.parse(await response.text)\n this.refreshStatus(data)\n }\n }\n\n refreshStatus(data) {\n if (data.pending_changes) {\n this.startRefreshing()\n this.ctaTarget.classList.add('d-none');\n this.disabledTarget.classList.remove('d-none');\n } else {\n this.stopRefreshing();\n this.ctaTarget.classList.remove('d-none');\n this.disabledTarget.classList.add('d-none');\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { get } from '@rails/request.js'\n\nexport default class extends Controller {\n static targets = [ 'attempts', 'error', 'publicToken', 'accountId' ]\n\n connect() {\n this.attempts = 0\n this.startRefreshing()\n }\n\n disconnect() {\n this.stopRefreshing()\n }\n\n startRefreshing() {\n this.refreshTimer = setInterval(() => {\n this.fetchStatus()\n }, 1000)\n }\n\n stopRefreshing() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer)\n }\n }\n\n async fetchStatus() {\n const url = this.data.get('status') || location.href\n const response = await get(url, {\n contentType: 'application/json',\n responseKind: 'json'\n })\n\n if (response.ok) {\n const data = JSON.parse(await response.text)\n\n if (data['synced_at'] != null) {\n window.location = this.data.get('url')\n } else {\n this.attempts++\n if (this.attempts > 8) {\n this.errorTarget.setAttribute('style', 'display: block;')\n }\n }\n }\n }\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[\"ClassicEditor\"] = factory();\n\telse\n\t\troot[\"ClassicEditor\"] = factory();\n})(window, function() {\nreturn ", " \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 96);\n", "/**\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/ckeditorerror\n */\n\n/**\n * URL to the documentation with error codes.\n */\nexport const DOCUMENTATION_URL =\n\t'https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html';\n\n/**\n * The CKEditor error class.\n *\n * You should throw `CKEditorError` when:\n *\n * * An unexpected situation occurred and the editor (most probably) will not work properly. Such exception will be handled\n * by the {@link module:watchdog/watchdog~Watchdog watchdog} (if it is integrated),\n * * If the editor is incorrectly integrated or the editor API is used in the wrong way. This way you will give\n * feedback to the developer as soon as possible. Keep in mind that for common integration issues which should not\n * stop editor initialization (like missing upload adapter, wrong name of a toolbar component) we use `console.warn()` with\n * {@link module:utils/ckeditorerror~attachLinkToDocumentation `attachLinkToDocumentation()`}\n * to improve developers experience and let them see the working editor as soon as possible.\n *\n *\t\t/**\n *\t\t * Error thrown when a plugin cannot be loaded due to JavaScript errors, lack of plugins with a given name, etc.\n *\t\t *\n *\t\t * @error plugin-load\n *\t\t * @param pluginName The name of the plugin that could not be loaded.\n *\t\t * @param moduleName The name of the module which tried to load this plugin.\n *\t\t * /\n *\t\tthrow new CKEditorError( 'plugin-load: It was not possible to load the \"{$pluginName}\" plugin in module \"{$moduleName}', {\n *\t\t\tpluginName: 'foo',\n *\t\t\tmoduleName: 'bar'\n *\t\t} );\n *\n * @extends Error\n */\nexport default class CKEditorError extends Error {\n\t/**\n\t * Creates an instance of the CKEditorError class.\n\t *\n\t * @param {String} message The error message in an `error-name: Error message.` format.\n\t * During the minification process the \"Error message\" part will be removed to limit the code size\n\t * and a link to this error documentation will be added to the `message`.\n\t * @param {Object|null} context A context of the error by which the {@link module:watchdog/watchdog~Watchdog watchdog}\n\t * is able to determine which editor crashed. It should be an editor instance or a property connected to it. It can be also\n\t * a `null` value if the editor should not be restarted in case of the error (e.g. during the editor initialization).\n\t * The error context should be checked using the `areConnectedThroughProperties( editor, context )` utility\n\t * to check if the object works as the context.\n\t * @param {Object} [data] Additional data describing the error. A stringified version of this object\n\t * will be appended to the error message, so the data are quickly visible in the console. The original\n\t * data object will also be later available under the {@link #data} property.\n\t */\n\tconstructor( message, context, data ) {\n\t\tmessage = attachLinkToDocumentation( message );\n\n\t\tif ( data ) {\n\t\t\tmessage += ' ' + JSON.stringify( data );\n\t\t}\n\n\t\tsuper( message );\n\n\t\t/**\n\t\t * @type {String}\n\t\t */\n\t\tthis.name = 'CKEditorError';\n\n\t\t/**\n\t\t * A context of the error by which the Watchdog is able to determine which editor crashed.\n\t\t *\n\t\t * @type {Object|null}\n\t\t */\n\t\tthis.context = context;\n\n\t\t/**\n\t\t * The additional error data passed to the constructor. Undefined if none was passed.\n\t\t *\n\t\t * @type {Object|undefined}\n\t\t */\n\t\tthis.data = data;\n\t}\n\n\t/**\n\t * Checks if the error is of the `CKEditorError` type.\n\t */\n\tis( type ) {\n\t\treturn type === 'CKEditorError';\n\t}\n\n\t/**\n\t * A utility that ensures the the thrown error is a {@link module:utils/ckeditorerror~CKEditorError} one.\n\t * It is useful when combined with the {@link module:watchdog/watchdog~Watchdog} feature, which can restart the editor in case\n\t * of a {@link module:utils/ckeditorerror~CKEditorError} error.\n\t *\n\t * @param {Error} err An error.\n\t * @param {Object} context An object connected through properties with the editor instance. This context will be used\n\t * by the watchdog to verify which editor should be restarted.\n\t */\n\tstatic rethrowUnexpectedError( err, context ) {\n\t\tif ( err.is && err.is( 'CKEditorError' ) ) {\n\t\t\tthrow err;\n\t\t}\n\n\t\t/**\n\t\t * An unexpected error occurred inside the CKEditor 5 codebase. This error will look like the original one\n\t\t * to make the debugging easier.\n\t\t *\n\t\t * This error is only useful when the editor is initialized using the {@link module:watchdog/watchdog~Watchdog} feature.\n\t\t * In case of such error (or any {@link module:utils/ckeditorerror~CKEditorError} error) the watchdog should restart the editor.\n\t\t *\n\t\t * @error unexpected-error\n\t\t */\n\t\tconst error = new CKEditorError( err.message, context );\n\n\t\t// Restore the original stack trace to make the error look like the original one.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/5595 for more details.\n\t\terror.stack = err.stack;\n\n\t\tthrow error;\n\t}\n}\n\n/**\n * Attaches the link to the documentation at the end of the error message. Use whenever you log a warning or error on the\n * console. It is also used by {@link module:utils/ckeditorerror~CKEditorError}.\n *\n *\t\t /**\n *\t\t * There was a problem processing the configuration of the toolbar. The item with the given\n *\t\t * name does not exist so it was omitted when rendering the toolbar.\n *\t\t *\n *\t\t * @error toolbarview-item-unavailable\n *\t\t * @param {String} name The name of the component.\n *\t\t * /\n *\t\t console.warn( attachLinkToDocumentation(\n *\t\t \t'toolbarview-item-unavailable: The requested toolbar item is unavailable.' ), { name } );\n *\n * @param {String} message Message to be logged.\n * @returns {String}\n */\nexport function attachLinkToDocumentation( message ) {\n\tconst matchedErrorName = message.match( /^([^:]+):/ );\n\n\tif ( !matchedErrorName ) {\n\t\treturn message;\n\t}\n\n\treturn message + ` Read more: ${ DOCUMENTATION_URL }#error-${ matchedErrorName[ 1 ] }\\n`;\n}\n", "\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of