{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/core/analytics/analytics.js","webpack:///./node_modules/@fullcalendar/core/main.esm.js","webpack:///./app/javascript/core/helpers/format_helpers.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./app/javascript/core/ms_util.js","webpack:///./app/javascript/core/google_analytics.js","webpack:///./app/javascript/core/calendar_helper.js","webpack:///./app/javascript/core/helpers/flash_messages.js","webpack:///./app/javascript/core/makeshift.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./app/javascript/core/remote_form_errors.js","webpack:///./app/javascript/core/department_schedules.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./app/javascript/core/models/shift_type.js","webpack:///./app/javascript/core/user_calendar_modals.js","webpack:///./app/javascript/core/shift_custom_dialog.js","webpack:///./node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/core-js/internals/is-callable.js","webpack:///./app/javascript/core/fatigue_management.js","webpack:///./app/javascript/core/messaging.js","webpack:///./app/javascript/core/span_budget_batches.js","webpack:///./node_modules/core-js/internals/has-own-property.js","webpack:///./app/javascript/core/weekly_budget.js","webpack:///./app/javascript/core/vue/uploaders/csv_file_uploader.vue?94d5","webpack:///./app/javascript/core/vue/uploaders/csv_file_uploader.vue?a329","webpack:///app/javascript/core/vue/uploaders/csv_file_uploader.vue","webpack:///./app/javascript/core/vue/uploaders/csv_file_uploader.vue","webpack:///./app/javascript/core/vue/uploaders/csv_file_upload_form.vue?d30e","webpack:///./app/javascript/core/vue/uploaders/csv_file_upload_form.vue?2f2f","webpack:///app/javascript/core/vue/uploaders/csv_file_upload_form.vue","webpack:///./app/javascript/core/vue/uploaders/csv_file_upload_form.vue","webpack:///./app/javascript/core/onboarding_popovers.js","webpack:///./app/javascript/core/models/message.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./app/javascript/core/vue/common/ui/ui_datatable.vue?fef2","webpack:///app/javascript/core/vue/common/ui/ui_datatable.vue","webpack:///./app/javascript/core/vue/common/ui/ui_datatable.vue?1fe9","webpack:///./app/javascript/core/vue/common/ui/ui_datatable.vue","webpack:///./app/javascript/core/helpers/bootbox.js","webpack:///./app/javascript/core/vue/common/ui/ui_checkbox.vue?fde2","webpack:///./app/javascript/core/vue/common/ui/ui_checkbox.vue?6414","webpack:///app/javascript/core/vue/common/ui/ui_checkbox.vue","webpack:///./app/javascript/core/vue/common/ui/ui_checkbox.vue","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/codemirror/mode/css/css.js","webpack:///./node_modules/codemirror/mode/javascript/javascript.js","webpack:///./app/javascript/core/vue/common/base_modal.vue?c97c","webpack:///./app/javascript/core/vue/common/base_modal.vue?7b65","webpack:///app/javascript/core/vue/common/base_modal.vue","webpack:///./app/javascript/core/vue/common/base_modal.vue","webpack:///./app/javascript/core/vue/common/calendar_sidebar.vue?ef81","webpack:///./app/javascript/core/vue/common/calendar_sidebar.vue?2df2","webpack:///app/javascript/core/vue/common/calendar_sidebar.vue","webpack:///./app/javascript/core/vue/common/calendar_sidebar.vue","webpack:///./app/javascript/core/vue/integrations/users_table.vue?ba92","webpack:///app/javascript/core/vue/integrations/users_table.vue","webpack:///./app/javascript/core/vue/integrations/users_table.vue?38ef","webpack:///./app/javascript/core/vue/integrations/users_table.vue","webpack:///./app/javascript/core/vue/marketing/base_marketing_modal.vue?29be","webpack:///./app/javascript/core/vue/marketing/base_marketing_modal.vue?4c71","webpack:///app/javascript/core/vue/marketing/base_marketing_modal.vue","webpack:///./app/javascript/core/vue/marketing/base_marketing_modal.vue","webpack:///./app/javascript/core/schedule_labels.js","webpack:///./app/javascript/core/job_site_sort.js","webpack:///./app/javascript/core/models/conversation.js","webpack:///./app/javascript/core/models/timesheet_item.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./app/javascript/core/vue/common/ui/ui_spinner.vue?f556","webpack:///./app/javascript/core/vue/common/ui/ui_spinner.vue?9f1b","webpack:///app/javascript/core/vue/common/ui/ui_spinner.vue","webpack:///./app/javascript/core/vue/common/ui/ui_spinner.vue","webpack:///./app/javascript/core/cookies.js","webpack:///./app/javascript/core/schedule/rotations.js","webpack:///./app/javascript/core/models/user.js","webpack:///./app/javascript/core/timesheets.js","webpack:///./app/javascript/core/vue/budget_bar/budget_bar.vue?0748","webpack:///./app/javascript/core/vue/budget_bar/budget_bar.vue?d673","webpack:///app/javascript/core/vue/budget_bar/budget_bar.vue","webpack:///./app/javascript/core/vue/budget_bar/budget_bar.vue","webpack:///./app/javascript/core/vue/fatigue_management/fatigue_rule.vue?4126","webpack:///./app/javascript/core/vue/fatigue_management/fatigue_rule.vue?f00c","webpack:///app/javascript/core/vue/fatigue_management/fatigue_rule.vue","webpack:///./app/javascript/core/vue/fatigue_management/fatigue_rule.vue","webpack:///./node_modules/core-js/internals/function-call.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./app/javascript/images/ShiftPredict-illustration.png","webpack:///./app/javascript/images/SmartInsights-illustration.png","webpack:///./app/javascript/images/icons/check-gray.svg","webpack:///./app/javascript/images/icons/check-white.svg","webpack:///./app/javascript/images/icons/modal-close.svg","webpack:///./app/javascript/images/icons/plus-gray.svg","webpack:///./app/javascript/images/icons/plus-white.svg","webpack:///./app/javascript/images/icons/spinner.svg","webpack:///./app/javascript/images/icons/spinner-gray.svg","webpack:///./app/javascript/images/icons/spinner-white.svg","webpack:///./app/javascript/core/analytics/ledger_item.js","webpack:///./app/javascript/core/analytics/ledger_table_item.js","webpack:///./app/javascript/core/models/rotation.js","webpack:///./app/javascript/core/models/department_schedule_onboarding_progress.js","webpack:///./app/javascript/core/vue/users/availability/availability_calendar.vue?2c0e","webpack:///./node_modules/@fullcalendar/daygrid/main.esm.js","webpack:///./app/javascript/core/vue/users/availability/availability_calendar.vue?36e9","webpack:///app/javascript/core/vue/users/availability/availability_calendar.vue","webpack:///./app/javascript/core/vue/users/availability/availability_calendar.vue","webpack:///./app/javascript/core/vue/users/availability/availability_preferences.vue?03f4","webpack:///./app/javascript/core/vue/users/availability/availability_preferences.vue?1b1b","webpack:///app/javascript/core/vue/users/availability/availability_preferences.vue","webpack:///./app/javascript/core/vue/users/availability/availability_preferences.vue","webpack:///./app/javascript/core/vue/budget_bar/budget_bar_toggle.vue?3965","webpack:///./app/javascript/core/vue/budget_bar/budget_bar_toggle.vue?83ce","webpack:///app/javascript/core/vue/budget_bar/budget_bar_toggle.vue","webpack:///./app/javascript/core/vue/budget_bar/budget_bar_toggle.vue","webpack:///./app/javascript/core/vue/budget_bar/budget_bar_meter.vue?3dc7","webpack:///./app/javascript/core/vue/budget_bar/budget_bar_meter.vue?c129","webpack:///app/javascript/core/vue/budget_bar/budget_bar_meter.vue","webpack:///./app/javascript/core/vue/budget_bar/budget_bar_meter.vue","webpack:///app/javascript/core/vue/budget_bar/budget_bar_title.vue","webpack:///./app/javascript/core/vue/budget_bar/budget_bar_title.vue?390a","webpack:///./app/javascript/core/vue/budget_bar/budget_bar_title.vue","webpack:///./app/javascript/core/vue/budget_bar/budget_bar_title.vue?c755","webpack:///./app/javascript/core/vue/user_imports/user_import_file_uploader.vue?a129","webpack:///./app/javascript/core/vue/user_imports/user_import_file_uploader.vue?af25","webpack:///app/javascript/core/vue/user_imports/user_import_file_uploader.vue","webpack:///./app/javascript/core/vue/user_imports/user_import_file_uploader.vue","webpack:///./app/javascript/core/vue/users/mass_assignment/department_association_selection.vue?557f","webpack:///./app/javascript/core/vue/users/mass_assignment/department_association_selection.vue?d541","webpack:///app/javascript/core/vue/users/mass_assignment/department_association_selection.vue","webpack:///./app/javascript/core/vue/users/mass_assignment/department_association_selection.vue","webpack:///./node_modules/@fullcalendar/vue/node_modules/fast-deep-equal/index.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./app/javascript/images/icons/connect.svg","webpack:///./app/javascript/images/icons/makeshift-logo.svg","webpack:///./app/javascript/images/icons/onboarding.svg","webpack:///./app/javascript/images/icons/scheduling.svg","webpack:///./app/javascript/images/icons/time-attendance.svg","webpack:///./node_modules/codemirror/addon/mode/overlay.js","webpack:///./node_modules/codemirror/addon/mode/simple.js","webpack:///./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack:///./app/javascript/core/vue/common/ui/ui_button.vue?8f05","webpack:///./app/javascript/core/vue/common/ui/ui_button.vue?c40a","webpack:///app/javascript/core/vue/common/ui/ui_button.vue","webpack:///./app/javascript/core/vue/common/ui/ui_button.vue","webpack:///./app/javascript/core/vue/common/ui/ui_control.vue?7c15","webpack:///./app/javascript/core/vue/common/ui/ui_control.vue?8f6b","webpack:///app/javascript/core/vue/common/ui/ui_control.vue","webpack:///./app/javascript/core/vue/common/ui/ui_control.vue","webpack:///./app/javascript/core/vue/common/ui/ui_input.vue?dcdb","webpack:///./app/javascript/core/vue/common/ui/ui_input.vue?a8a9","webpack:///app/javascript/core/vue/common/ui/ui_input.vue","webpack:///./app/javascript/core/vue/common/ui/ui_input.vue","webpack:///./app/javascript/core/vue/common/ui/ui_library.vue?816e","webpack:///app/javascript/core/vue/common/ui/ui_library.vue","webpack:///./app/javascript/core/vue/common/ui/ui_library.vue?d55c","webpack:///./app/javascript/core/vue/common/ui/ui_library.vue","webpack:///./app/javascript/core/vue/common/ui/ui_modal.vue?535f","webpack:///./app/javascript/core/vue/common/ui/ui_modal.vue?d86b","webpack:///app/javascript/core/vue/common/ui/ui_modal.vue","webpack:///./app/javascript/core/vue/common/ui/ui_modal.vue","webpack:///./app/javascript/core/vue/common/ui/ui_radio.vue?72d1","webpack:///./app/javascript/core/vue/common/ui/ui_radio.vue?e9ac","webpack:///app/javascript/core/vue/common/ui/ui_radio.vue","webpack:///./app/javascript/core/vue/common/ui/ui_radio.vue","webpack:///app/javascript/core/vue/common/ui/ui_select.vue","webpack:///./app/javascript/core/vue/common/ui/ui_select.vue?2f0e","webpack:///./app/javascript/core/vue/common/ui/ui_select.vue","webpack:///./app/javascript/core/vue/common/ui/ui_select.vue?7aa7","webpack:///./node_modules/vuep/dist/vuep.common.js","webpack:///./node_modules/@fullcalendar/vue/main.esm.js","webpack:///./app/javascript/packs/app_webpack.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/get-method.js","webpack:///./node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/function-name.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/function-apply.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/array-slice.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./app/javascript/images sync ^\\.\\/.*$","webpack:///./app/javascript/core sync \\.jsx","webpack:///./app/javascript/core/account_activation.js","webpack:///./app/javascript/core/admin/admin_activity.js","webpack:///./app/javascript/core/admin/admin_companies.js","webpack:///./app/javascript/core/admin/admin_revenue.js","webpack:///./app/javascript/core/admin/admin_smartinsights_dashboards.js","webpack:///./app/javascript/core/admin/admin_smartinsights_users.js","webpack:///./app/javascript/core/admin/admin_support.js","webpack:///./app/javascript/core/admin/adp_integration.js","webpack:///./app/javascript/core/admin/broadcasts_page.js","webpack:///./app/javascript/core/admin/features.js","webpack:///./app/javascript/core/analytics/availability.js","webpack:///./app/javascript/core/analytics/available_shifts.js","webpack:///./app/javascript/core/analytics/labour_budget.js","webpack:///./app/javascript/core/analytics/ledger.js","webpack:///./app/javascript/core/analytics/pbj.js","webpack:///./app/javascript/core/analytics/shift_audits.js","webpack:///./app/javascript/core/analytics/shift_exchange.js","webpack:///./app/javascript/core/analytics/time_exceptions.js","webpack:///./app/javascript/core/analytics/turnover.js","webpack:///./app/javascript/core/analytics/unavailables.js","webpack:///./app/javascript/core/analytics/workforce.js","webpack:///./app/javascript/core/announcements.js","webpack:///./app/javascript/core/available_shifts.js","webpack:///./app/javascript/core/broadcasts.js","webpack:///./app/javascript/core/calendar.js","webpack:///./app/javascript/core/dashboard.js","webpack:///./app/javascript/core/department_users.js","webpack:///./app/javascript/core/edit_shift_dialog.js","webpack:///./app/javascript/core/enterprise_payroll_items.js","webpack:///./app/javascript/core/generic.js","webpack:///./app/javascript/core/helpers/array_to_sentence.js","webpack:///./app/javascript/core/helpers/handlebars_moment.js","webpack:///./app/javascript/core/ie_includes.js","webpack:///./app/javascript/core/location_profiles.js","webpack:///./app/javascript/core/maps.js","webpack:///./app/javascript/core/mods_for_dataTables.js","webpack:///./app/javascript/core/new_shift_dialog.js","webpack:///./app/javascript/core/password_reset.js","webpack:///./app/javascript/core/pay_periods.js","webpack:///./app/javascript/core/payroll_items.js","webpack:///./app/javascript/core/popovers_and_tooltips.js","webpack:///./app/javascript/core/position_expressions_table.js","webpack:///./app/javascript/core/positions_external_names.js","webpack:///./app/javascript/core/premium_rules.js","webpack:///./app/javascript/core/pusher/growl_channel.js","webpack:///./app/javascript/core/pusher/private_pusher_channel.js","webpack:///./app/javascript/core/rotation_filter.js","webpack:///./app/javascript/core/rotations.js","webpack:///./app/javascript/core/select2_util.js","webpack:///./app/javascript/core/shift_requirements.js","webpack:///./app/javascript/core/shift_requirements_imports.js","webpack:///./app/javascript/core/shift_type_filter.js","webpack:///./app/javascript/core/shift_type_form.js","webpack:///./app/javascript/core/stat_holiday_form.js","webpack:///./app/javascript/core/subscriptions.js","webpack:///./app/javascript/core/table_crud.js","webpack:///./app/javascript/core/timeclock.js","webpack:///./app/javascript/core/timepicker.js","webpack:///./app/javascript/core/user_departments_locations.js","webpack:///./app/javascript/core/user_importer.js","webpack:///./app/javascript/core/user_schedule_preview.js","webpack:///./app/javascript/core/user_time_off.js","webpack:///./app/javascript/core/vue/_config.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/codemirror/mode/vue/vue.js","webpack:///./node_modules/codemirror/mode/coffeescript/coffeescript.js","webpack:///./node_modules/codemirror/mode/sass/sass.js","webpack:///./node_modules/codemirror/mode/stylus/stylus.js","webpack:///./node_modules/codemirror/mode/pug/pug.js","webpack:///./node_modules/codemirror/mode/handlebars/handlebars.js","webpack:///./node_modules/codemirror/addon/mode/multiplex.js","webpack:///./node_modules/codemirror/mode/jsx/jsx.js","webpack:///./app/javascript/core/vue sync \\.vue$","webpack:///./app/javascript/core/vue/admin/authenticated/top_navigation.vue?e5d8","webpack:///./app/javascript/core/vue/common/ui/ui_spinner.vue?b6eb","webpack:///./app/javascript/core/vue/common/ui/ui_checkbox.vue?f007","webpack:///./app/javascript/core/vue/common/ui/ui_datatable.vue?9f9b","webpack:///./app/javascript/core/vue/common/ui/ui_button.vue?fda6","webpack:///./app/javascript/core/vue/common/ui/ui_control.vue?770d","webpack:///./app/javascript/core/vue/common/ui/ui_input.vue?f7e4","webpack:///./app/javascript/core/vue/common/ui sync \\.vue$","webpack:///./app/javascript/core/vue/common/ui/ui_modal.vue?6512","webpack:///./app/javascript/core/vue/common/ui/ui_radio.vue?b2b0","webpack:///./app/javascript/core/vue/common/ui/ui_select.vue?6458","webpack:///./app/javascript/core/vue/common/ui/ui_library.vue?f98a","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./app/javascript/core/vue/locations/statutory_holiday_calendar.vue?901c","webpack:///./app/javascript/core/vue/marketing/base_marketing_modal.vue?878a","webpack:///./app/javascript/core/vue/marketing/shift_predict_modal.vue?f404","webpack:///./app/javascript/core/vue/marketing/smart_insights_modal.vue?56d9","webpack:///./app/javascript/core/vue/uploaders/csv_file_uploader.vue?1e4b","webpack:///./app/javascript/core/vue/uploaders/csv_file_upload_form.vue?5857","webpack:///./app/javascript/core/vue/rotation_uploads/new_rotation_upload.vue?3518","webpack:///./app/javascript/core/vue/support_users/support_users.vue?4ba9","webpack:///./app/javascript/core/vue/user_imports/new_user_import.vue?3883","webpack:///./app/javascript/core/vue/users/availability/availability_calendar.vue?5149","webpack:///./app/javascript/core/vue/users/availability/availability_preferences.vue?25bc","webpack:///./app/javascript/core/vue/users/mass_assignment/user_mass_assignment_selection.vue?f427","webpack:///./app/javascript/core/vue/company_customizations/customization_modal_vue.js","webpack:///./app/javascript/core/vue/users/availability/availability_vue.js","webpack:///./app/javascript/core/vue/users/permissions/permissions_vue.js","webpack:///./app/javascript/core/vue/admin/authenticated/top_navigation.vue?a73f","webpack:///./app/javascript/core/vue/admin/authenticated/top_navigation.vue?41c5","webpack:///app/javascript/core/vue/admin/authenticated/top_navigation.vue","webpack:///./app/javascript/core/vue/admin/authenticated/top_navigation.vue","webpack:///./app/javascript/core/vue/archived_users/archived_users.vue?c052","webpack:///app/javascript/core/vue/archived_users/archived_users.vue","webpack:///./app/javascript/core/vue/archived_users/archived_users.vue?41f5","webpack:///./app/javascript/core/vue/archived_users/archived_users.vue","webpack:///./app/javascript/core/vue/integrations/adp/connection_tester.vue?bab2","webpack:///./app/javascript/core/vue/integrations/adp/connection_tester.vue?0e11","webpack:///app/javascript/core/vue/integrations/adp/connection_tester.vue","webpack:///./app/javascript/core/vue/integrations/adp/connection_tester.vue","webpack:///./app/javascript/core/vue/integrations/bamboo/bamboo_users_table.vue?232f","webpack:///./app/javascript/core/vue/integrations/bamboo/bamboo_users_table.vue?4d71","webpack:///app/javascript/core/vue/integrations/bamboo/bamboo_users_table.vue","webpack:///./app/javascript/core/vue/integrations/bamboo/bamboo_users_table.vue","webpack:///./app/javascript/core/vue/integrations/tsheets/tsheets_users_table.vue?367e","webpack:///./app/javascript/core/vue/integrations/tsheets/tsheets_users_table.vue?4bff","webpack:///app/javascript/core/vue/integrations/tsheets/tsheets_users_table.vue","webpack:///./app/javascript/core/vue/integrations/tsheets/tsheets_users_table.vue","webpack:///./app/javascript/core/vue/locations/statutory_holiday_calendar.vue?db9c","webpack:///app/javascript/core/vue/locations/statutory_holiday_calendar.vue","webpack:///./app/javascript/core/vue/locations/statutory_holiday_calendar.vue?dacd","webpack:///./app/javascript/core/vue/locations/statutory_holiday_calendar.vue","webpack:///./app/javascript/core/vue/marketing/shift_predict_modal.vue?eeb5","webpack:///./app/javascript/core/vue/marketing/shift_predict_modal.vue?8067","webpack:///app/javascript/core/vue/marketing/shift_predict_modal.vue","webpack:///./app/javascript/core/vue/marketing/shift_predict_modal.vue","webpack:///./app/javascript/core/vue/marketing/smart_insights_modal.vue?07e0","webpack:///./app/javascript/core/vue/marketing/smart_insights_modal.vue?a670","webpack:///app/javascript/core/vue/marketing/smart_insights_modal.vue","webpack:///./app/javascript/core/vue/marketing/smart_insights_modal.vue","webpack:///./app/javascript/core/vue/rotation_uploads/new_rotation_upload.vue?2576","webpack:///./app/javascript/core/vue/rotation_uploads/new_rotation_upload.vue?6a7f","webpack:///app/javascript/core/vue/rotation_uploads/new_rotation_upload.vue","webpack:///./app/javascript/core/vue/rotation_uploads/new_rotation_upload.vue","webpack:///./app/javascript/core/vue/schedule_uploads/new_schedule_upload.vue?b778","webpack:///./app/javascript/core/vue/schedule_uploads/new_schedule_upload.vue?ff59","webpack:///app/javascript/core/vue/schedule_uploads/new_schedule_upload.vue","webpack:///./app/javascript/core/vue/schedule_uploads/new_schedule_upload.vue","webpack:///./app/javascript/core/vue/support_users/support_users.vue?0d7e","webpack:///./app/javascript/core/vue/support_users/support_users.vue?d7b5","webpack:///app/javascript/core/vue/support_users/support_users.vue","webpack:///./app/javascript/core/vue/support_users/support_users.vue","webpack:///./app/javascript/core/vue/user_imports/new_user_import.vue?2f15","webpack:///./app/javascript/core/vue/user_imports/new_user_import.vue?a47e","webpack:///app/javascript/core/vue/user_imports/new_user_import.vue","webpack:///./app/javascript/core/vue/user_imports/new_user_import.vue","webpack:///./app/javascript/core/vue/users/mass_assignment/user_mass_assignment_selection.vue?b2a8","webpack:///./app/javascript/core/vue/users/mass_assignment/user_mass_assignment_selection.vue?ab17","webpack:///app/javascript/core/vue/users/mass_assignment/user_mass_assignment_selection.vue","webpack:///./app/javascript/core/vue/users/mass_assignment/user_mass_assignment_selection.vue"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","analytics","$","makeChartRequest","url","dataHash","ajax","data","dataType","buildDataForChartRequest","filterDataHash","startDate","datepicker","endDate","Date","addSevenDays","locations","filterLocations","departments","filterDepartments","range","extend","hideLoadingModal","spinner","loadingElementId","hide","removeClass","date","setFullYear","getFullYear","getMonth","getDate","prepareDatePicker","on","e","this","val","init","settings","select2","format","language","I18n","locale","canMakeChartRequest","chartName","isInactive","locationIds","departmentIds","length","chartClassName","clearCustomDateRange","show","fadeTo","displayDateRangeError","message","text","hideDateRangeError","filterDateRange","dateRange","attr","selected","each","index","selectedValue","id","search","push","replace","filterEndDate","prevNext","subtractSevenDays","subtractOneMonth","addOneDay","addOneMonth","filterExchangeType","is","initializePage","selector","chartBox","removeLocations","locationGroup","find","remove","makeAsyncChartDataRequest","filterName","encodeURI","removeOptionGroup","locationDepartmentFilter","locationsOptGroup","departmentsOptGroup","prepend","append","restoreLocationDepartmentFilter","requestCustomDateRange","selectCustomDateRange","addClass","showLoadingModal","loadingModal","HandlebarsTemplates","loadingHeader","loadingMessage","loadingWarning","loadingWarningMessage","loadingDiv","html","subscribeToAnalyticsReportChannel","privatePusherChannel","reportName","successCallback","errorCallback","pusherData","xlsxUri","window","location","href","report_uri","then","analyticsReport","exportURL","options","parse","params","_","toISOString","reportType","report_type","join","pathname","jQuery","elementPropHash","className","colSpan","rowSpan","containerTagHash","createElement","tagName","attrs","content","el","document","attrName","applyStyle","setAttribute","innerHTML","appendToElement","htmlToElement","trim","container","computeContainerTag","firstChild","htmlToElements","Array","slice","childNodes","htmlToNodeList","substr","normalizeContent","appendChild","prependToElement","parent","newEls","afterEl","insertBefore","insertAfterElement","refEl","nextSibling","parentNode","Node","removeElement","removeChild","matchesMethod","Element","matches","matchesSelector","msMatchesSelector","closestMethod","closest","documentElement","contains","elementMatches","parentElement","nodeType","elementClosest","findElements","containers","HTMLElement","allMatches","querySelectorAll","j","findChildren","parents","children","childNode","PIXEL_PROP_RE","props","propName","applyStyleProp","style","test","isRtlScrollbarOnLeft","getIsRtlScrollbarOnLeft","outerEl","position","top","left","border","padding","overflow","direction","body","res","getBoundingClientRect","computeIsRtlScrollbarOnLeft","sanitizeScrollbarWidth","width","Math","max","round","computeEdges","getPadding","computedStyle","getComputedStyle","borderLeft","parseInt","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","scrollbarLeftRight","offsetWidth","clientWidth","scrollbarBottom","offsetHeight","clientHeight","scrollbarLeft","scrollbarRight","paddingLeft","paddingRight","paddingTop","paddingBottom","computeRect","rect","pageXOffset","pageYOffset","right","bottom","computeHeightAndMargins","height","computeVMargins","computed","marginTop","marginBottom","computeClippingRect","overflowY","overflowX","getClippingParents","map","goWithinPadding","outerRect","edges","computeInnerRect","concat","reduce","rect0","rect1","rect2","min","intersectRects","listenBySelector","eventType","handler","realHandler","ev","matchedChild","target","addEventListener","removeEventListener","DAY_IDS","addWeeks","a","dateToUtcArray","arrayToUtcDate","addDays","addMs","diffWeeks","m0","m1","diffDays","valueOf","diffWholeDays","timeAsMs","startOfDay","getUTCFullYear","getUTCMonth","getUTCDate","weekOfGivenYear","marker","year","dow","doy","firstWeekStart","firstWeekOffset","dayStart","days","floor","fwd","getUTCDay","dateToLocalArray","getHours","getMinutes","getSeconds","getMilliseconds","arrayToLocalDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","UTC","apply","isValidDate","isNaN","PARSE_RE","createDuration","input","unit","_a","exec","sign","years","months","milliseconds","parseString","normalizeObject","obj","month","day","getWeeksFromInput","hours","hour","minutes","minute","seconds","second","millisecond","ms","weeks","week","durationsEqual","d0","d1","asRoughDays","dur","asRoughMs","greatestDurationDenominator","dontReturnWeeks","compensateScroll","rowEl","scrollbarWidths","marginLeft","marginRight","uncompensateScroll","distributeHeight","els","availableHeight","shouldRedistribute","minOffset1","minOffset2","flexEls","flexOffsets","flexHeights","usedHeight","undistributeHeight","forEach","minOffset","naturalHeight","naturalOffset","newHeight","matchCellWidths","maxInnerWidth","innerEl","innerWidth_1","subtractInnerElHeight","reflowStyleProps","diff","resetStyleProps","compareByFieldSpec","obj0","obj1","fieldSpec","func","b","String","localeCompare","flexibleCompare","field","order","capitaliseFirstLetter","str","charAt","toUpperCase","padStart","len","isInt","applyAll","functions","thisObj","args","ret","firstDefined","_i","arguments","undefined","debounce","wait","timeout","context","timestamp","result","later","last","setTimeout","refineProps","rawProps","processors","defaults","leftoverProps","refined","processor","Function","Number","Boolean","computeAlignedDayRange","timedRange","dayCnt","start","end","computeVisibleDayRange","nextDayThreshold","startDay","endDay","endTimeMS","diffDates","date0","date1","dateEnv","largeUnit","diffWholeYears","diffWholeMonths","m0day","m1day","extendStatics","setPrototypeOf","__proto__","__extends","__","constructor","__assign","assign","expandRecurringRanges","eventDef","duration","framingRange","recurringTypes","markers","recurringDef","typeId","expand","typeData","subtract","allDay","mergeProps","propObjs","complexProps","complexObjs","dest","unshift","filterHash","hash","filtered","mapHash","newHash","arrayToHash","a_1","hashValuesToArray","isPropsEqual","parseEvents","rawEvents","sourceId","calendar","allowOpenRange","eventStore","defs","instances","rawEvents_1","tuple","parseEvent","eventTupleToStore","def","defId","instance","instanceId","expandRecurring","defaultAllDayEventDuration","defaultTimedEventDuration","starts_1","pluginSystem","hooks","createEventInstance","add","getRelevantEvents","def_1","newStore","filterEventStoreDefs","lookDef","def0","def1","groupId","transformEachRawEvent","refinedEvents","rawEvents_2","rawEvent","refinedEvent","mergeEventStores","store0","store1","filterFunc","parseRange","createMarker","invertRanges","ranges","constraintRange","invertedRanges","sort","compareRanges","range0","range1","intersectRanges","newRange","rangesEqual","rangesIntersect","rangeContainsRange","outerRange","innerRange","rangeContainsMarker","isArraysEqual","a0","a1","memoize","workerFunc","EXTENDED_SETTINGS_AND_SEVERITIES","separator","omitZeroMinute","meridiem","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","era","weekday","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","severity","name_1","buildFormattingFunc","formatRange","diffSeverity","ca","getMarkerYear","getMarkerMonth","getMarkerDay","computeMarkerDiffSeverity","calendarSystem","biggestUnitForPartial","full0","full1","partialFormattingFunc","biggestUnit","partialOptions","name_2","computePartialFormattingOptions","partial0","partial1","insertion","i0","found0","indexOf","before0","after0","i1","found1","before1","after1","before","after","findCommonInsertion","getLargestUnit","standardDatePropCnt","keys","formatTimeZoneOffset","timeZoneOffset","num","weekLabel","display","parts","simpleNumberFormat","isRtl","reverse","formatWeekNumber","computeWeekNumber","sanitizeSettings","timeZone","zeroFormat","normalFormat","Intl","DateTimeFormat","codes","zeroProps","tzoStr","replaced","injectTzoStr","toLocaleLowerCase","postProcess","buildNativeFormattingFunc","CmdFormatter","cmdStr","cmdFormatter","createVerboseFormattingArg","FuncFormatter","createFormatter","defaultSeparator","doIso","abs","mins","startInfo","expandZonedMarker","localeCodes","dateInfo","markerToArray","array","EventSourceApi","internalEventSource","dispatch","type","refetch","sourceIds","publicId","configurable","meta","EventApi","_calendar","_def","_instance","setProp","_b","DATE_PROPS","NON_DATE_PROPS","mutate","standardProps","UNSCOPED_EVENT_UI_PROPS","ui","backgroundColor","borderColor","startEditable","durationEditable","setExtendedProp","extendedProps","setStart","startInput","startDelta","granularity","maintainDuration","datesDelta","setEnd","endInput","endDelta","hasEnd","setDates","instanceRange","moveStart","deltaInput","delta","moveEnd","moveDates","setAllDay","opt","formatInput","formatter","forcedStartTzo","forcedEndTzo","forcedTzo","mutation","fromApi","state","eventSources","toDate","title","rendering","constraints","overlap","allows","textColor","classNames","sliceEventStore","eventUiBases","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","compileEventUis","origRange","normalRange","slicedRange","isStart","isEnd","invertedRanges_1","invertedRange","invertedRanges_2","bg","fg","filterSegsViaEls","segs","isMirror","view","hasPublicHandlers","filter","seg","custom","publiclyTrigger","event","eventRange","segs_1","setElSeg","fcSeg","getElSeg","eventDefs","compileEventUi","uis","combineEventUis","triggerRenderedSegs","isMirrors","segs_2","publiclyTriggerAfterSizing","eventSourceLoadingLevel","afterSizingTriggers","_eventsPositioned","triggerWillRemoveSegs","segs_3","trigger","segs_4","computeEventDraggable","eventUi","transformers","isDraggableTransformers","transformers_1","transformer","computeEventStartResizable","eventResizableFromStart","computeEventEndResizable","applyMutationToEventDef","eventConfig","appliers","copy","appliers_1","applier","applyMutationToEventInstance","eventInstance","forceAllDay","clearEnd","getDefaultEventEnd","reduceEventStore","action","dateProfile","eventSource","fetchId","fetchRange","latestFetchId","subset","calEachTransform","sourceEachTransform","eventDataTransform","transformRawEvents","excludeEventsBySourceId","receiveRawEvents","expandRange","addEvent","activeRange","oldDateEnv","newDateEnv","canComputeOffset","rezoneDates","relevant","eventConfigBase","eventConfigs","eventDefMutationAppliers","applyMutationToEventStore","applyMutationToRelated","excludeInstances","removals","isNewPropsValid","newProps","businessHours","dateSelection","eventSelection","eventDrag","eventResize","isPropsValid","dateSpanMeta","filterConfig","interaction","subjectEventStore","mutatedEvents","subjectDefs","subjectInstances","subjectConfigs","isEvent","selectionConfig","otherEventStore","affectedEvents","otherDefs","otherInstances","otherConfigs","subjectInstanceId","subjectInstance","subjectRange","subjectConfig","subjectDef","allConstraintsPass","overlapFunc","otherInstanceId","otherInstance","calendarEventStore","subjectAllow","subjectDateSpan","origDef","origInstance","eventApi","buildDateSpanApi","isInteractionPropsValid","relevantEventStore","relevantDefs","relevantInstances","selection","selectionRange","relevantInstanceId","relevantInstance","selectionAllow","fullDateSpan","isDateSelectionPropsValid","businessHoursUnexpanded","constraints_1","anyRangesContainRange","constraintToRanges","constraint","eventStoreToRanges","outerRanges","outerRanges_1","htmlEscape","cssToStr","cssProps","statements","parseClassName","raw","isArray","split","editable","allow","color","processUnscopedUiProps","leftovers","normalizeConstraint","processScopedUiProps","prefix","rawScoped","rawUnscoped","wasFound","scopedKey","EMPTY_EVENT_UI","combineTwoEventUis","item0","item1","uid","allDayDefault","computeIsAllDayDefault","leftovers0","recurringRes","eventInput","localLeftovers","parsed","allDayGuess","parseRecurring","parseEventDef","leftovers1","singleRes","startMeta","endMeta","pluckDateProps","startMarker","endMarker","createMarkerMeta","isTimeUnspecified","parseSingle","preLeftovers","pluckNonDateProps","eventDefParsers","newLeftovers","eventDefParser","freeze","DEF_DEFAULTS","startTime","endTime","daysOfWeek","parseBusinessHours","rawDefs","rawDef","refineInputs","memoizeRendering","renderFunc","unrenderFunc","dependencies","thisContext","prevArgs","dependents","unrender","dependents_1","dependencies_1","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","_this","keyInfos","getKeyInfo","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventResizes","info","buildEventUiForKey","keyInfo","buildEventUi","dateSpan","dateSpans","keys_1","getKeysForDateSpan","getKeysForEventDef","splitStores","_c","splitHashes","splitStates","affectedStores_1","mutatedKeysByDefId","mutatedStores_1","populate","origSeg","allUi","eventUiForKey","baseParts","stuff","buildGotoAnchorHtml","allOptions","gotoOptions","innerHtml","forceOff","finalOptions","formatIso","omitTime","attrsToStr","navLinks","JSON","stringify","getDayClasses","noThemeHighlight","todayStart","todayEnd","theme","classes","monthMode","currentRange","getNow","getClass","EmitterMixin","_super","addToHash","_handlers","one","_oneHandlers","off","removeFromHash","triggerWith","hasHandlers","Mixin","mixInto","destClass","mixIntoObj","destObj","getOwnPropertyNames","mixOver","PositionCache","originEl","isHorizontal","isVertical","build","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","originClientTop","tops","bottoms","leftToIndex","leftPosition","topToIndex","topPosition","getWidth","leftIndex","getHeight","topIndex","ScrollController","getMaxScrollTop","getScrollHeight","getClientHeight","getMaxScrollLeft","getScrollWidth","getClientWidth","canScrollVertically","canScrollHorizontally","canScrollUp","getScrollTop","canScrollDown","canScrollLeft","getScrollLeft","canScrollRight","ElementScrollController","scrollTop","scrollLeft","setScrollTop","setScrollLeft","scrollWidth","scrollHeight","ScrollComponent","WindowScrollController","scroll","applyOverflow","clear","setHeight","destroy","lockOverflow","getScrollbarWidths","Theme","calendarOptions","processIconOverride","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","iconOverridePrefix","getIconClass","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","guid","ComponentContext","dir","eventOrderSpecs","token","specs","tokens","substring","parseFieldSpecs","eventOrder","Component","everRendered","addEqualityFuncs","newFuncs","equalityFuncs","receiveProps","receiveContext","oldProps","comboProps","anyChanges","recycleProps","beforeUpdate","render","afterUpdate","oldContext","firstContext","DateComponent","buildPositionCaches","queryHit","positionLeft","positionTop","elWidth","elHeight","isInteractionValid","validRange","isDateSelectionValid","isValidSegDownEl","isPopover","isInPopover","isValidDateDownEl","segEl","fgSegSelector","classList","bgSegSelector","uid$1","createPlugin","deps","reducers","eventDragMutationMassagers","dateSelectionTransformers","datePointTransforms","dateSpanTransforms","views","viewPropsTransformers","externalDefTransforms","eventResizeJoinTransforms","viewContainerModifiers","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","eventSourceDefs","namedTimeZonedImpl","defaultView","elementDraggingImpl","optionChangeHandlers","PluginSystem","addedHash","plugin","dep","hooks0","hooks1","ArrayEventSourcePlugin","ignoreRange","parseMeta","events","fetch","arg","success","FuncEventSourcePlugin","failure","isResolved","wrappedSuccess","wrappedFailure","unpromisify","startStr","endStr","requestJson","method","failureCallback","encodeParams","injectQueryStringParams","xhr","XMLHttpRequest","open","setRequestHeader","onload","status","responseText","err","onerror","send","encodeURIComponent","JsonFeedEventSourcePlugin","extraParams","startParam","endParam","timeZoneParam","requestParams","customRequestParams","buildRequestParams","errorMessage","SimpleRecurrencePlugin","startRecur","endRecur","anyValid","clippedFramingRange","dowHash","dayMarker","instanceStarts","instanceStart","expandRanges","DefaultOptionChangeHandlers","deepEqual","handleEventSources","plugins","inputs","addPluginInputs","unfoundSources","newInputs","inputs_1","inputFound","_raw","splice","unfoundSources_1","unfoundSource","newInputs_1","newInput","addEventSource","globalDefaults","defaultRangeSeparator","titleRangeSeparator","forceEventDuration","columnHeader","aspectRatio","header","center","weekends","weekNumbers","weekNumberCalculation","scrollTime","minTime","maxTime","showNonCurrentDates","lazyFetching","locales","timeGridEventMinHeight","themeSystem","dragRevertDuration","dragScroll","allDayMaintainDuration","unselectAuto","dropAccept","eventLimit","eventLimitClick","dayPopoverFormat","handleWindowResize","windowResizeDelay","longPressDelay","eventDragMinDistance","rtlDefaults","buttonIcons","prev","next","prevYear","nextYear","complexOptions","INTERNAL_PLUGINS","RAW_EN_LOCALE","code","buttonText","today","list","allDayText","eventLimitText","noEventsMessage","parseRawLocales","explicitRawLocales","defaultCode","globalArray","globalObject","allRawLocales","rawLocaleMap","en","allRawLocales_1","rawLocale","buildLocale","inputSingular","available","codeArg","simpleId","queryRawLocale","parseLocale","queryLocale","merged","NumberFormat","OptionsManager","overrides","dynamicOverrides","compute","updates","isDynamic","overrideHash","removals_1","localeDefaults","dirDefaults","calendarSystemClassMap","theClass","GregorianCalendarSystem","arrayToMarker","arr","ISO_RE","DateEnv","isNamedTimeZone","namedTimeZoneImpl","createCalendarSystem","weekDow","weekDoy","firstDay","weekNumberFunc","createNowMarker","timestampToMarker","getYear","addYears","addMonths","greatestWholeUnit","diffWholeWeeks","diffHours","diffMinutes","diffSeconds","countDurationsBetween","asRoughMonths","startOf","startOfYear","startOfMonth","startOfWeek","startOfHour","startOfMinute","startOfSecond","y","w","nextW","weekOfYear","dateOptions","offsetForMarker","isEndExclusive","extraOptions","omitTimeZoneOffset","stripZeroTime","buildIsoString","timestampToArray","getTimezoneOffset","offsetForArray","SIMPLE_SOURCE_PROPS","uid$2","doesSourceNeedRange","sourceDefId","parseEventSource","parseEventSourceProps","isFetching","reduceEventSources","eventSourceHash","sources","sources_1","source","fetchDirtySources","addSources","fetchSourcesByIds","excludeStaticSources","sourceHash","receiveResponse","uid$3","isSourceDirty","prevSources","sourceIdHash","nextSources","fetchSource","sourceDef","calSuccessRes","sourceSuccessRes","calSuccess","error","callFailure","console","warn","DateProfileGenerator","viewSpec","initHiddenDays","buildPrev","currentDateProfile","currentDate","prevDate","currentRangeUnit","dateIncrement","buildNext","nextDate","forceToValid","currentInfo","isRangeAllDay","renderRange","isValid","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","buildDateIncrement","getRangeOption","dayCount","durationUnit","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","class","usesMinMaxTime","dateIncrementInput","dateIncrementDuration","alignment","dateAlignment","computeRes","isHiddenDay","skipHiddenDays","customAlignment","runningCount","visibleRange","fallback","otherArgs","hiddenDays","isHiddenDayHash","Error","inc","isExclusive","viewType","currentViewType","reduceViewType","newDateProfile","dateProfileGenerators","dateMarker","generator","p0","p1","reduceDateProfile","nextState","reduceCurrentDate","reduceDateSelection","reduceSelectedEvent","reduceEventDrag","reduceEventResize","computeLoadingLevel","loadingLevel","reducerFunc","newDate","currentSelection","currentInstanceId","eventInstanceId","currentDrag","newDrag","currentResize","newResize","cnt","STANDARD_PROPS","parseDateSpan","defaultDuration","span","parseOpenDateSpan","fabricateEventRange","ensureViewDef","defaultConfigs","overrideConfigs","viewDef","defaultConfig","overrideConfig","queryProp","superType","findViewNameBySubclass","superDef","buildViewDef","viewSubclass","configs","superProto","getPrototypeOf","parseViewConfigs","parseViewConfig","VIEW_DEF_PROPS","buildViewSpecs","defaultInputs","optionsManager","compileViewDefs","durationInput","singleUnit","singleUnitOverrides","denom","queryButtonText","buttonTextMap","buttonTextKey","buttonTextOverride","buttonTextDefault","buildViewSpec","Toolbar","extraClassName","_renderLayout","renderLayout","unrenderLayout","_updateTitle","updateTitle","_updateActiveButton","updateActiveButton","_updateToday","updateToday","_updatePrev","updatePrev","_updateNext","updateNext","layout","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","viewsWithButtons","renderSection","buttonStr","viewSpecs","sectionEl","calendarCustomButtons","customButtons","calendarButtonTextOverrides","calendarButtonText","buttonGroupStr","groupEl","groupChildren","isOnlyButtons","buttonClick","buttonIcon","buttonInnerHtml","buttonClasses","buttonEl","buttonAriaAttr","click","changeView","buttonGroupClassName","toggleButtonEnabled","titleEl","innerText","bool","disabled","CalendarComponent","elClassNames","renderSkeleton","_renderSkeleton","_unrenderSkeleton","renderToolbars","_renderToolbars","_unrenderToolbars","buildComponentContext","buildViewPropTransformers","computeTitle","freezeHeight","renderView","updateSize","thawHeight","footer","updateElClassNames","contentEl","modifyViewContainer","savedScroll","queryScroll","removeElClassNames","headerLayout","footerLayout","dateProfileGenerator","now","todayInfo","prevInfo","nextInfo","toolbarProps","addScroll","viewProps","transform","isResize","isHeightAuto","computeHeightVars","viewHeight","updateNowIndicator","popScroll","heightInput","contentHeightInput","queryToolbarsHeight","parentEl","viewOptions","titleFormat","computeTitleFormat","theClasses","Interaction","component","interactionSettingsStore","EventClicking","handleSegClick","hasUrlContainer","querySelector","jsEvent","defaultPrevented","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","onMouseEnter","onMouseLeave","currentMatchedChild","removeHoverListeners","realOnMouseLeave_1","publicEvName","StandardTheme","widget","widgetHeader","widgetContent","buttonGroup","button","buttonActive","popoverHeader","popoverContent","headerRow","dayRow","listView","close","Calendar","equalityFunc","cachedRes","buildComponentContext$1","buildDateEnv","buildTheme","buildEventUiSingleBase","_buildEventUiSingleBase","buildSelectionConfig","_buildSelectionConfig","buildEventUiBySource","newRes","buildEventUiBases","interactionsStore","actionQueue","isReducing","needsRerender","isRendering","renderingPauseDepth","buildDelayedRerender","isViewUpdated","isDatesUpdated","isEventsUpdated","handleOptions","hydrate","calendarInteractionClass","pluginInputs","pluginDefs","pluginInputs_1","pluginInput","globalName","default","refinePluginDefs","pluginDefs_1","pluginDef","requestRerender","renderableEventStore","bindHandlers","executeRender","unbindHandlers","removeNavLinkListener","anchorEl","getAttribute","customAction","viewOpt","zoomTo","windowResizeProxy","windowResize","buildInitialState","rawSources","singleRawSource","rawSources_1","batchRendering","getInitialDate","oldState","shift","newState","delayedRerender","tryRerender","renderComponent","eventUiSingleBase","eventUiBySource","releaseAfterSizingTriggers","setOption","mutateOptions","getOption","viewOpts","changeHandlers","normalUpdates","specialUpdates","isTimeZoneDirty","isSizeDirty","anyDifficultOptions","name_3","pluginHooks","rerenderDelay","availableRawLocales","dateProfileGeneratorClass","getAvailableLocaleCodes","rawOpts","eventEditable","optHandler","name_4","isValidViewType","dateOrRange","unselect","spec","getUnitViewSpec","viewTypes","defaultDateInput","gotoDate","zonedDateInput","incrementDate","formatDate","isHandlingWindowResize","registerInteractiveComponent","settingsInput","useEventCenter","parseInteractionSettings","interactions","interactionClass","unregisterInteractiveComponent","select","dateOrObj","triggerDateSelect","pev","triggerDateUnselect","origEvent","triggerDateClick","dayEl","buildDatePointApi","dateStr","sourceInput","sourceApi","getEventSourceById","getEventById","getEvents","eventApis","removeAllEvents","rerenderEvents","getEventSources","sourceApis","internalId","removeAllEventSources","refetchEvents","scrollToTime","timeInput","scrollToDuration","View","renderDatesMem","renderDatesWrap","unrenderDatesWrap","renderBusinessHoursMem","renderBusinessHours","unrenderBusinessHours","renderDateSelectionMem","renderDateSelectionWrap","unrenderDateSelectionWrap","renderEventsMem","renderEvents","unrenderEvents","renderEventSelectionMem","renderEventSelectionWrap","unrenderEventSelectionWrap","renderEventDragMem","renderEventDragWrap","unrenderEventDragWrap","renderEventResizeMem","renderEventResizeWrap","unrenderEventResizeWrap","initialize","isAuto","updateBaseSize","renderDates","stopNowIndicator","unrenderDates","renderDateSelection","unrenderDateSelection","sliceEvents","renderEventSelection","unrenderEventSelection","renderEventDrag","unrenderEventDrag","renderEventResize","unrenderEventResize","startNowIndicator","update","delay","nowIndicator","initialNowDate","getNowIndicatorUnit","initialNowQueriedMs","nowIndicatorTimeoutID","nowIndicatorIntervalID","setInterval","unrenderNowIndicator","renderNowIndicator","isNowIndicatorRendered","clearTimeout","clearInterval","isForced","queuedScroll","applyQueuedScroll","applyScroll","queryDateScroll","computeDateScroll","applyDateScroll","FgEventRenderer","renderSegs","mirrorInfo","rangeUpdated","renderSegEls","attachSegs","_segs","detachSegs","displayEventTime","displayEventEnd","eventTimeFormat","computeEventTimeFormat","computeDisplayEventTime","computeDisplayEventEnd","renderSegHtml","getSegClasses","isDraggable","isResizable","isDragging","isResizing","getTimeText","displayEnd","_getTimeText","getSkinCss","sortEventSegs","objs","buildSegCompareObj","fieldSpecs","cmp","compareByFieldSpecs","_seg","computeSizes","force","computeSegSizes","assignSizes","assignSegSizes","hideByHash","visibility","showByHash","selectByInstanceId","unselectByInstanceId","FillRenderer","fillSegTag","dirtySizeFlags","containerElsByType","segsByType","getSegsByType","renderedSegs","containerEls","css","toLowerCase","ElementDragging","emitter","setMirrorIsVisible","setMirrorNeedsRevert","setAutoScrollEnabled","renderDateCell","datesRepDistinctDays","colCnt","colHeadFormat","colspan","otherAttrs","isDateValid","columnHeaderHtml","columnHeaderText","DayHeader","dates","renderIntroHtml","columnHeaderFormat","computeFallbackHeaderFormat","dates_1","thead","DaySeries","indices","dayIndex","sliceRange","firstIndex","getDateDayIndex","lastIndex","clippedFirstIndex","clippedLastIndex","ceil","dayOffset","DayTable","daySeries","breakOnWeeks","daysPerRow","rowCnt","cells","buildCells","headerDates","buildHeaderDates","rows","row","col","buildCell","seriesSeg","nextIndex","firstCol","lastCol","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","sliceProps","extraArgs","eventSegs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","computeActiveRange","rangeRes","sliceEventRanges","affectedInstances","sourceSeg","eventRanges","eventRanges_1","sliceEventRange","isComponentAllDay","user_prefers_12hr","user_prefers_24hr","am_pm_to_hours","time","moment","shorten_ampm","tConvert","formatted","format24hr","has_brackets","basic_format","decimals","parseFloat","toFixed","commatise","basic_currency_format","toCurrency","precision","basic_unformat","basic_round","formatPartialUnavailableTimes","start_time","end_time","toNum","normalizeComponent","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","msUtil","durationToHours","suffix","toNumber","strip_insignificant_zeros","num_hours","durationToMinutes","other_suffix","formattedDateRange","isSame","relativeTime","currentTime","momentTimestamp","unix","formattedTimestamp","elementId","getElementById","Spinner","lines","radius","corners","rotate","config","msUtilColor","speed","trail","spin","consoleDebug","line","log","naturalSort","re","sre","dre","hre","ore","oFxNcL","oFyNcL","insensitive","x","xN","yN","xD","match","yD","mult","desc","cLoc","numS","formatResult","item","query","typeOfSelection","formattedResult","term","ready","trackableItem","category","label","ga","makeshiftGoogleAnalytics","categories","actions","drag","displayed","hidden","accountActivation","availableShift","breadCrumbNavigation","departmentCalendar","passwordReset","sideNavigation","topNavigation","userCalendar","analyticsAvailability","analyticsAvailableShifts","analyticsLabourBudget","analyticsLedger","analyticsShiftExchange","analyticsTurnover","analyticsWorkforce","byAvailability","byRequest","dashboard","departmentAvailable","departmentEmployee","departmentExchange","departmentProfile","departmentRotation","messages","buttons","publish_and_notify","published_shift","rotation","showHidePassword","shiftOnAvailability","timeOff","uniqueDepartment","uniqueLocation","uniqueUser","unpublished_shift","userProfile","users","weeklyBudgetBar","calendarHelper","original_id","shiftTypeId","department_id","MKS","current_department","getTime","setHours","tomorrow","eventsToSort","rotation_pattern","sortedEvents","event_starts_at","current_time_in_timezone","flashMessages","empty","addFlash","flash","dismiss","setFlash","tablesorter","addParser","table","widthFixed","headerTemplate","sortList","tablesorterSortOrder","headers","tableDisableSort","textExtraction","tablesorterExtraction","wrapInner","selectpicker","size","node","textContent","queryConvert","queryArr","queryParams","q","qArrLength","qArr","tableHeaders","sortOrder","tempOrder","$header","sortedHeaders","$element","disabledHeaders","customHeadersSort","headersSettings","sorter","$th","sortName","clearModalAlerts","renderModalAlert","alertInfo","error_style","error_message","rails","allowAction","element","cancelButtonText","confirmButtonText","fire","callback","bootbox","confirm","confirmed","myCustomConfirmBox","oldAllowAction","it","check","globalThis","self","global","remoteFormErrors","containerID","$form","errorFields","klass","errors","messageTxt","fieldID","$field","toString","departmentSchedule","lastPublishButtonClicked","lastPublishButtonText","onboarding","progress","showLabourBudget","dateFmt","highlightColor","highlightInterval","transitionInterval","store","shiftTypes","rotations","lastShiftedShift","weekData","initWeekData","shifts","other_department_shifts","availabilities","unavailables","shift_requirements","available_shifts","copyPaste","copiedSourceWeekStartDate","repeatSourceWeekStartDate","targetWeekStartDate","initMoment","updateLocale","initPremiumRule","qtip","prerender","my","at","initViewToggle","preventDefault","buildShiftTypes","shiftType","ShiftType","buildRotations","blueprint","Rotation","initRotationEvents","scheduleRotations","createDepartmentRotationPath","routes","rotationList","drag_and_drop","if_saved","selectors","rotationsBox","draggable","revert","containment","helper","clone","cursor","opacity","searching","empty_search","secondsSinceMidnight","initShiftTypeEvents","shiftTypesBox","clearShiftTypeFilter","shiftTypeList","initShiftTypeFilter","shiftTypeFilter","keyup","filterWords","initRotationFilter","clearRotationFilter","rotationFilter","filterRotationList","initDateNavigation","hasClass","newPreviousWeekStart","rowPosition","$url","departmentSchedulePath","setBeginningOfWeek","employeesDepartmentSchedulePath","positionsDepartmentSchedulePath","jobSitesDepartmentSchedulePath","printableDepartmentSchedulePath","toggleCopyFunctionality","scheduleProviderFilter","archived","providerName","exportForProviderButton","exportSchedulePath","initExportScheduleFields","History","pushState","pageTitle","initDatepicker","datepickerId","$datepicker","weekStart","orientation","autoclose","setActiveWeekSelection","mouseOverHighlightWeek","initDraggables","buildSelectionsForscheduleProviders","scheduleProviders","allowClear","placeholder","added","scheduleCheckbox","checked","provider","initExportButton","exportButton","modal","getFilters","$el","valid_items","raw_vals","includes","userHas","userRow","rawFilter","filterData","flatten","userData","some","f","all","initFilter","load","departmentId","$rows","$keywords","idx","initJobSiteFilter","rowKeywords","jobSiteSort","initModals","editShiftPath","shiftPath","cb","alert","destroyEvent","$qtip","$qtipForm","serializeArray","submit","availableShiftPath","$self","unavailablePath","editUnavailablePath","editUnavailableRequestPath","shiftRequirementPath","newDepartmentShiftRequirementPath","shift_requirement","source_shift_id","required_employees","openModalWithSpinner","displayModalLoadError","adpUser","departmentUserPath","newUserPath","updateBudgets","weeklyBudget","budgetEvents","initModalForms","newAndEditShiftHandles","reverse_shifts_time","createShiftRequirement","afterAvailableShift","available_shift","createCustomShift","shift_type","updateShift","updateHours","user_id","updateUnavailable","unavailable","reload","approveUnavailableRequest","unavailable_type_name","responseJSON","error_type","fatigueManagement","fatiguePrompt","$td","eq","$div","createGlobalShift","formattedTitle","createUnavailableElement","initModalActions","audit_action","audit_action_source","unavailable_request_admin_note","assignShift","adjustCounter","DataTable","assignAvailableShift","prop","initPublish","isReadOnlySchedule","publishedAt","lastIndexOf","stopPropagation","done","fail","initPopState","Adapter","getState","canDateNavigate","loadSchedule","initFloatThead","floatThead","scrollContainer","$table","getSizingRow","initCopyPaste","source_week_start_date","target_week_start_date","record_type","newDepartmentCopyPastePath","toggleBlockDisplay","createDepartmentCopyPastePath","stop","initOnboardingPopups","nextItem","onboardingPopovers","checklistItem","scheduleWrapper","getAJAXCallSplit","employeeCount","buildURLWithRequestParams","currentRequest","totalRequests","loadDepartmentShifts","callSplit","loaderFunctions","cache","response","current_date","concatShifts","loadAvailableShifts","loadOtherDepartmentShifts","loadAvailabilities","when","resetTable","updateTableDates","beginningOfWeek","renderAvailableShifts","renderEmployeeSchedule","renderPositionOrJobSiteSchedule","sumRowRequiredEmployees","togglePublishButton","unpublished_shifts_exist","$end_of_week","departmentScheduleUpdatePath","fadeOut","scheduleIntegrated","shiftExportAttemptsPath","aaData","shiftSyncAuditButtonWarn","shiftSyncAuditButtonClear","loadErrorShiftExportAttemptsCount","updateShiftSyncAuditDates","flashShiftExportError","existingShifts","newShifts","filteredShifts","isShiftInDateRange","shiftDate","numberOfDays","droppable","$tableHeadFloat","thIndex","nthIndex","$availableShiftRow","day_of_week","divWriter","checkAvailShiftsOverflow","not","accept","hoverClass","drop","handleDrop","siblings","$row","userId","$rowTds","where","css_class","renderAvailabilities","isDroppable","allow_partial_time_off","has","adp_time_off_request_sync","availableShiftCells","userCells","over","fixedAvailableShiftRow","fixedAvailableShiftRowHeight","offset","out","updateScheduleLabels","userAvailabilities","groupBy","userAvailabilityByDay","firstAvailability","dayOfWeekTd","availabilitiesCount","divId","replaceWith","createAvailabilitiesTip","positionId","jobSiteId","position_id","job_site_id","shiftRequirement","replies","cssClass","published_at","shiftRequirementFillCssClass","published","unavailable_request_id","paid_duration","applyHeightClassToShift","composite_key","shifts_count","shift_type_name","position_name","job_site_name","labelCount","labelsArray","scheduleLabels","getScheduleLabelCheckboxes","checkedLabel","heightClass","timeStamp","lastDrop","$droppableContainer","cTop","cLeft","cBottom","cRight","pageY","pageX","isDraggableHelperInsideDroppableContainer","shiftId","rotationId","moveShift","createRotation","createShift","openModal","shiftTypeLabel","$tr","findWhere","$request","attachRequestFailureHandler","shiftTypeData","fatigue_validate","doShiftTypeRequest","bootboxMsg","shift_type_id","createDepartmentShiftsPath","showPositionTip","position_required","job_site_required","createShiftElement","newDepartmentShiftPath","newUnavailablePath","newDepartmentAvailableShiftPath","moveShiftSave","fatigueValidate","td","json_shift","starts_at","ends_at","days_diff","breaks","hide_ends_at","total_breaks","notes","time_reporting_code","shift_date_new","original_tr","animate","moveShiftCancel","moveShiftFailHandler","async","json","available_shift_id","original_shift_id","wage","shift_date_previous","pay_code_id","$innerRequest","reassignShiftsPath","possible_positions","position_assignments","possible_job_sites","job_site_assignments","scheduleItemLabel","isNew","switchClass","availShiftsOverfilled","overfill_limit","columns","items_per_col","v","Cookies","sortJobSitesBySelectedAttribute","$matchingNonPersistsedShiftRequirement","effect","selectorId","unavailabelDOM","$availableShiftTd","$shiftTd","$shiftDiv","unavailableId","unavailableTypeName","$unavailable","isUnpublished","createPositionTip","api","editShiftPositionPath","set","viewport","adjust","move","adjusted","departmentAvailabilitiesPath","solo","fixed","isPublished","gaEventLabel","ids","$tds","weekDays","colorActiveWeek","$hoursContainer","totalPaidDuration","overtimeThreshold","hasUnpublishedShifts","unpublishedDepartmentShiftsPath","exists","$span","originalPosition","inPast","isSameWeek","primary_selector","secondary_selectors","blockSettings","baseZ","overlayCSS","block","unblock","initPusherDepartmentNotifs","companyId","pusher","getPusherInstance","pusherKey","channelName","pusherChannel","subscribe","blockScheduleForProcessing","unblockScheduleForProcessing","onShiftUpdateSuccess","onShiftUpdateError","initSidebar","hiddenLink","toggleTarget","toggleTitle","jobSiteRow","$labels","labels","jobSitesEnabled","initWebSocketListeners","growl","unpublishedShiftsExist","department_published_at","weekStartsOn","_d","weekEndsOn","publishStartsOn","publishEndsOn","getCurrentRowPosition","dropdown","lastPublishedAt","pusherUserId","waitingOnScheduleUnblocked","call_when_unblocked","lock_identifier","shift_id","locks","warning_identifier","failed","num_errors","numFailedShifts","clearFlashShiftExportError","showFlashShiftExportError","msg","link","div","modalElement","toggleClass","otherDepartmentSchedulePath","createDepartmentAvailableShiftPath","editAvailableShiftPath","createUnavailablesPath","start_date","path","newWeeklyBudgetPath","createWeeklyBudgetPath","editWeeklyBudgetPath","unavailablesEditTypePath","budgetBar","DepartmentScheduleOnboardingProgress","onboardingProgress","updateShiftRequirement","hideModal","getBudgetMode","localStorage","getItem","setBudgetMode","setItem","userAgent","navigator","platform","gecko","ie_upto10","ie_11up","edge","ie","ie_version","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","rmClass","current","removeChildren","count","removeChildrenAndAdd","elt","tag","cssText","createTextNode","eltP","child","host","activeElt","activeElement","joinClasses","as","createRange","endNode","createTextRange","moveToElementText","collapse","selectInput","copyObj","overwrite","countColumn","string","tabSize","startIndex","startValue","nextTab","selectionStart","selectionEnd","_e","Delayed","onTimeout","scrollerGap","Pass","sel_dontScroll","sel_mouse","origin","sel_move","findColumn","goal","pos","skipped","spaceStrs","spaceStr","lst","insertSorted","score","priority","nothing","createObj","base","inst","nonASCIISingleCaseWordChar","isWordCharBasic","ch","isWordChar","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","findFirst","pred","from","to","midF","mid","iterateBidiSections","found","part","level","bidiOther","getBidiPartAt","sticky","cur","bidiOrdering","lowTypes","arabicTypes","charType","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","outerType","types","i$1","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","j$1","i$7","isRTL","j$2","nstart","getOrder","noHandlers","attachEvent","getHandlers","detachEvent","signal","handlers","signalDOMEvent","cm","override","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","zeroWidthElement","measure","hasBadBidiRects","txt","r0","r1","splitLinesAuto","nl","rt","hasSelection","getSelection","te","ownerDocument","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","hasBadZoomedRects","normal","fromRange","modes","mimeModes","defineMode","defineMIME","mime","resolveMode","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","nstate","innerMode","startState","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","first","chunk","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","lineNo","no","lineAtHeight","outer","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","Pos","equalCursorPos","copyPos","maxPos","minPos","clipLine","clipPos","clipToLen","linelen","clipPosArray","eol","sol","peek","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlay","overlays","i_end","opaque","styles","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","Token","takeToken","asArray","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","retreatFrontier","sawReadOnlySpans","sawCollapsedSpans","seeReadOnlySpans","seeCollapsedSpans","MarkedSpan","getMarkedSpanFor","spans","removeMarkedSpan","addMarkedSpan","op","inThisOp","WeakSet","markedSpans","attachLine","markedSpansBefore","old","startCh","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","startsBefore","stretchSpansOverChange","change","full","oldFirst","oldLast","sameLine","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","removeReadOnlyRanges","mark","readOnly","mk","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","found$1","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","updateLine","estHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","defaultSpecialCharPlaceholder","startStyle","endStyle","attributes","displayText","special","specialChars","mustWrap","createDocumentFragment","txt$1","tabWidth","specialCharPlaceholder","fullStyle","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","buildViewArray","nextPos","operationGroup","pushOperation","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","group","callbacks","cursorActivityCalled","finishOperation","endCb","orphanDelayedCallbacks","signalLater","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","updateLineBackground","background","wrap","getLineContent","ext","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","lineNumInnerWidth","k","gutterSpecs","gutterWidth","alignable","isWidget","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","widgetHeight","parentStyle","gutters","wrapper","eventInWidget","sizer","mover","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","currentStyle","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","barHeight","ensureLineHeights","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","mapFromLineView","updateExternalMeasurement","lineMeasure","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","measureText","nullRect","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","place","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageScrollY","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","posFromMouse","liberal","forRect","space","clientX","clientY","e$1","colDiff","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","customCursor","$customCursor","sel","primIndex","head","drawSelectionCursor","showCursorWhenSelecting","drawSelectionRange","cursorHeight","getWrapperElement","charPos","defaultCharWidth","otherCursor","cmpCoords","fragment","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","blinker","cursorDiv","cursorBlinkRate","hasFocus","onBlur","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","reset","receivedFocus","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","visibleLines","ensure","ensureFrom","ensureTo","maybeScrollWindow","doScroll","innerHeight","scrollNode","scrollIntoView","scrollPosIntoView","margin","limit","changed","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","updateScrollTop","snapMargin","screentop","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToRange","scrollToCoordsRange","sPos","updateDisplaySimple","startWorker","forceScroll","scrollbars","isScroller","alignHorizontally","measureForScrollbars","gutterW","docH","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","heightForcer","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","markArrays","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","scrollbarsClipped","selectionSnapshot","active","anchorNode","anchorOffset","focusNode","focusOffset","restoreSelection","snapshot","nodeName","removeAllRanges","addRange","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","toUpdate","selSnapshot","patchDisplay","selectionDiv","reportedViewFrom","reportedViewTo","updateNumbersFrom","rm","currentWheelTarget","updateNumber","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumWidth","getGutters","sawLineNumbers","renderGutters","gElt","updateGutters","Display","wheelDX","wheelDY","activeTouch","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","onScrollWheel","pixelsPerUnit","deltaMode","deltaX","deltaY","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","hint","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","linesFor","firstLine","lastText","lastSpans","nlines","insert","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","directionChanged","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","pop","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","history","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","addSelectionToHistory","clearRedo","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","filterSelectionChange","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","shiftDoc","distance","removed","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","adjustScrollWhenAboveVisible","addLineWidget","insertAt","aboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","markTextShared","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","withOp","visual","dHeight","SharedTextMarker","cloneNode","isParent","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","lineSeparator","setValue","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","readTextFromFile","file","allowDropFileTypes","reader","readAsText","text$1","getData","onDragStart","setData","effectAllowed","setDragImage","img","src","_top","onDragOver","frag","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","registerGlobalHandlers","resizeTimer","onResize","setSize","keyNames","3","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","93","106","107","109","110","111","145","173","186","187","188","189","190","191","192","219","220","221","222","224","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","kill","toKill","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","moveVisually","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","nextCh","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","lookupKeyForEditor","keyMaps","extraKeys","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","handleKeyBinding","motion","handleCharBinding","lastStoppedKey","onKeyDown","getField","handled","showCrossHair","up","onKeyUp","onKeyPress","charCode","lastClick","lastDoubleClick","DOUBLECLICK_DELAY","PastClick","clickRepeat","compare","onMouseDown","supportsTouch","clickInGutter","repeat","selectingText","handleMappedButton","leftButtonDown","onContextMenu","configureMouse","option","addNew","moveOnDrag","contained","behavior","dragDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","rangeForUnit","findWordAt","ourRange","ourIndex","startSel","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","bidiSimplify","editorSize","counter","curCount","anchorLine","boundary","headIndex","usePart","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","Init","optionHandlers","defineOptions","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","spellcheck","autocorrect","autocapitalize","detach","attach","wrappingChanged","integer","blur","readOnlyChanged","screenReaderLabelChanged","dragDropChanged","resetPosition","funcs","dragFunctions","toggle","enter","leave","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","registerEventHandlers","finishInit","initHooks","textRendering","word","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","inp","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","hiddenTextarea","addEditorMethods","helpers","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelper","getHelpers","help","_global","getStateAfter","defaultTextHeight","getViewport","addWidget","vspace","hspace","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","hitSide","rtlMoveVisually","findPosV","goalColumn","goals","headPos","startChar","scrollTo","getScrollInfo","interpret","swapDoc","phrase","phraseText","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","origDir","lineDir","findNextLine","moveOnce","boundToLine","astral","sawType","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","isInGutter","scan","badPos","bad","domTextBetween","closing","extraLinebreak","recognizeMarker","addText","walk","cmText","markerID","isBlock","nodeValue","domToPos","lineNode","locateNodeInLineView","textNode","topNode","curNode","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","removeAttribute","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","TextareaInput","prevInput","pollingFast","fromTextArea","textarea","tabindex","realSubmit","form","leaveSubmitMethodAlone","wrappedSubmit","getTextArea","toTextArea","addLegacyProps","cmpPos","createField","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","dontDelegate","defineExtension","defineDocExtension","version","factory","hideEndsAt","seconds_since_midnight","totalBreaks","convert_pair","eventTime","userCalendarModals","getTranslatedEmployeeType","employmentType","calendar_user_employment_type","employmentTypeTranslated","Casual","getEventTime","format_as_date","moEnd","real_end","isUnavailable","formatBreaks","formatted_breaks","breaks_in_minutes","chain","breakString","formatUnformattedBreaks","showShiftFooter","persistedEvent","earlierDayThanToday","shiftNotes","disableNotes","eventDescription","isInCurrentDepartment","locked","scheduleSyncError","shiftNotesArea","shiftPosition","shiftJobSite","job_site","shiftTRC","trc","filterXSS","shiftPayCode","payCode","alertError","adpEtiError","lockedShift","shiftNotesButton","submitNotes","shiftContent","dialogMessage","schedule_integration","shift_export_attempt","status_reason","location_name","department_name","trc_enabled","pay_code","pay_code_enabled","calendar_user","job_sites_enabled","unavailableContent","import_source","admin_notes","unavailableRequestContent","annual_total","total","created_at","show_time_off","addModalButtons","shiftLocked","subject","deleteEvents","shift_export_attempt_error","conflictsWithAnotherDepartmentDialog","conflictsWithEventDialog","conflictsWithUnavailableDialog","conflictsWhenCreatingRotationsWarning","promptForDeleteRotationDialog","existingRotation","deleteRotation","saveCalendarChanges","headerText","dialog","duplicateShiftDialog","eventClickDialog","localeColon","notesNotice","currentLength","rotationClickDialog","addedRotation","fullCalendar","employee_name","waitMessageDialog","datePicker","rotationDays","nextDay","endDateStr","setupRotation","departmentStartOfWeek","showDatePicker","clearDatesDialog","by_performing","existing_shifts","existing_days_off","exchanges","greatly_alter","clear_from","startDateStr","deleteEventsBetween","possibleEndDate","sortBy","tabName","sortOptionIdx","defaultDir","$sortBy","$sortOption","targetSortDir","targetClass","dataTable","fnSort","labelId","$label","shiftCustomDialog","initSelect2","breakTimeRegex","breaksSelect2","createSearchChoice","uniqueId","formatSelection","select2Formatting","formatNoMatches","selectOnBlur","tags","initToolTips","tooltips","tooltip","elements","initTab","tabId","$tab","initTabWithTable","initialSort","showSort","$sortingOptions","bProcessing","bServerSide","sAjaxSource","sPaginationType","iDisplayLength","sDom","aaSorting","bAutoWidth","bDeferRender","oLanguage","dataTables_i18n","aoColumnDefs","aTargets","bSortable","fnDrawCallback","oSettings","removeAttr","FunctionPrototype","callBind","fn","argument","formattedTime","initRuleEditor","$fatigueFields","vueContainer","Vue","employmentTypeList","positionList","timeAndAttendance","components","FatigueRule","template","initialRuleType","initialTimeUnit","initialTimePeriod","initialTimeValue","selectedEmploymentTypeIds","selectedPositionIds","time_period","continueCallback","cancelCallback","promptContent","messaging","currentUserId","conversations","nextPage","currentConversation","$activeConversationHeader","findConversation","findAllConversations","conditions","findMessages","findUser","findUsers","user","createConversation","userIds","$newConversationUsersInput","createConversationsPath","conversation","user_ids","pushMessages","pushConversation","renderConversationHeader","resetNewMessage","renderConversation","$conversationHeadersContainer","loadConversation","getJSON","conversationPath","Conversation","messageData","Message","User","createMessage","createConversationMessagesPath","renderMessage","associateMessage","$conversationHeader","newMessages","messageIds","newMessage","debug","conversationHeaders","conversationHeadersContainer","newConversationButton","newMessageInput","paginator","namespace","conversationsPath","existingConversationsPath","readConversationPath","newConversationPath","conversationId","$conversationHeaders","$message","$newConversationHeader","$paginator","initControls","minimumInputLength","multiple","quietMillis","page","results","$conversationContentContainer","renderedMessages","renderNewConversation","keypress","initEvents","renderHeader","oldestConversation","updatedAt","loadAndRenderData","serializeObjects","renderConversationHeaders","$firstConversationHeader","setPagination","initPusher","conversation_id","conversationData","next_page","renderedConversationHeaders","rendered","prependTo","resetNewConversation","$conversationUsers","pluck","recipients","$newMessageInput","$conversationUsersContainer","newConversation","$newConversationUsersContainer","onScreen","doIn","tolerance","throttle","spanBudgetBatches","saveSpanBudgets","budgets","budgetRow","budget","contentType","onBudgetUpdatedCallback","editBudgets","cancelBudgets","saveBudgets","$existing","$edit","subform","all_valid","checkValidity","tmp","onBudgetUpdated","updateValues","spanBudgetData","found_editable","vals","$actual_amount","over_budget","sched_cost","sched_hours","$divider","$budgeted_amount","uncurryThis","toObject","hasOwn","budgetData","scheduledCosts","scheduledHours","estimatedCosts","spanBudgets","budgetEventsTitles","cookieName","initBudgetBar","fadeIn","initBudgetEvents","initBudgetBarSelectors","budgetEstimate","progressContainer","progressBar","weeklyBudgetValue","beginning_of_week","calculateCostsAndUpdateUI","requestInFlight","updateRequired","budgetBarMount","budgetBarLoading","isLoading","BudgetBar","calculateLabourCosts","span_budget","weekly_budget","weekly_budget_calculations","estimated_costs","scheduled_costs","scheduled_hours","$destroy","budgetDollars","budgetHours","estimatedHours","estimated_hours","updateSpanBudgets","spanBudgetsEnabled","initSpanBudgets","checkbox","secure","budgetMode","initDropDown","fetchInverseDisplayValue","getCookie","inverseBudgetState","newBudgetBarState","setWeeklyBudgetCookie","toggleHiddenBudgetBarClass","destroyBudgetBarBindings","updateWeeklyBudget","calculateWeeklyBudget","eventTitle","unbind","cookieSetting","findOrCreateCoookie","cookie","cookieParams","weeklyBudgetData","budgetBarPresent","shiftTemplatesBox","calendarBox","departmentScheduleContainer","add_tooltip","row_name","$tna_tooltip","checkOvertimeAndNullify","source_row","compare_row","is_time_and_attendance","$col","isNumeric","_vm","_h","$createElement","_self","draggedOver","_t","_v","staticClass","_s","domProps","template_link","templateLink","handleSelectCSV","handleClick","allSteps","onboardPopup","step","isFunction","stepNumber","updateProgress","greyButtonText","stepsCount","offsetY","eventHide","currentPopup","prerenderEvent","originalZIndex","zPosition","skipButton","finishButton","ajaxUpdateProgress","total_steps","department_schedule_checklist_item","initOnboarding","bindAjaxUpdateProgress","qTipClose","createdAt","bootstrap","loading","inputClass","$event","$emit","checkboxClass","emptyObject","isUndef","isDef","isTrue","isPrimitive","isObject","_toString","isPlainObject","isRegExp","isValidArrayIndex","isFinite","isPromise","catch","makeMap","expectsLowerCase","isBuiltInTag","isReservedAttribute","cached","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","ctx","boundFn","_length","toArray","_from","noop","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","keysA","keysB","looseIndexOf","once","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","writable","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","weexPlatform","UA","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","opts","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","Dep","subs","addSub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","VNode","elm","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","defineProperties","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","original","ob","__ob__","observeArray","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","setter","childOb","dependArray","newVal","del","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","mergeAssets","key$1","methods","inject","provide","defaultStrat","mergeOptions","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","stringIndex","_props","getType","getPropDefaultValue","prevShouldObserve","functionTypeCheckRE","isSameType","expectedTypes","handleError","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","pending","flushCallbacks","copies","Promise","resolve","MutationObserver","setImmediate","observer","characterData","nextTick","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","mergeVNodeHook","hookKey","oldHook","wrappedHook","checkProp","preserve","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","iterator","renderSlot","fallbackRender","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","camelizedKey","hyphenatedKey","renderStatic","isInFor","_staticTrees","tree","markStatic","_renderProxy","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","values","prependModifier","symbol","installRenderHelpers","_o","_n","_l","_q","_m","_f","_k","_u","_g","_p","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","cloneAndMarkFunctionalResult","renderContext","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","deactivateChildComponent","hooksToMerge","createComponent","baseCtor","cid","errorComp","resolved","owner","currentRenderingInstance","owners","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","ensureCtor","reject","reason","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","extractPropsFromVNodeData","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","normalizationType","alwaysNormalize","simpleNormalizeChildren","applyNS","registerDeepBindings","_createElement","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","isInInactiveTree","direct","_directInactive","$children","_hasHookEvent","queue","waiting","flushing","currentFlushTimestamp","createEvent","flushSchedulerQueue","watcher","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","Watcher","expOrFn","isRenderWatcher","_watchers","deep","lazy","newDeps","depIds","newDepIds","expression","segments","parsePath","cleanupDeps","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","_data","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","pruneCache","keepAliveInstance","entry","pruneCacheEntry","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","$refs","initLifecycle","_events","parentData","initRender","initInjections","initProvide","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","cbs","eventsMixin","_update","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","cacheVNode","vnodeToCache","keyToCache","created","destroyed","mounted","updated","configDef","util","defineReactive","delete","observable","installedPlugins","_installedPlugins","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","acceptValue","isEnumeratedAttr","isValidContentEditableValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","mergeClassData","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","createElementNS","createComment","newNode","referenceNode","setTextContent","setStyleScope","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","isInPre","baseSetAttr","convertEnumeratedValue","setAttributeNS","__ieph","blocker","stopImmediatePropagation","updateClass","oldData","transitionClass","_transitionClasses","_prevClass","chr","index$1","expressionPos","expressionEndPos","validDivisionCharRE","parseFilters","exp","filters","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","pluckModuleFunction","addProp","dynamic","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","middle","native","nativeEvents","newHandler","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","genComponentModel","number","baseValueExpression","valueExpression","assignment","genAssignmentCode","eof","isStringStart","parseBracket","parseModel","inBracket","stringQuote","target$1","RANGE_TOKEN","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","updateDOMListeners","normalizeEvents","svgContainer","updateDOMProps","_value","strCur","shouldUpdateValue","checkVal","notInFocus","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","createPatchFunction","vmodel","directive","binding","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions","curOptions","hasNoMatchingOption","actuallySetSelected","isMultiple","selectedIndex","initEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","applyTranslation","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","c$1","hasMove","_reflow","propertyName","_hasMove","HTMLUnknownElement","updateComponent","mountComponent","defaultTagRE","regexEscapeRE","buildRegex","delimiters","klass$1","staticKeys","transformNode","classBinding","genData","decoder","style$1","styleBinding","he","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","attribute","dynamicArgAttribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","doctype","comment","conditionalComment","isPlainTextElement","reCache","decodingMap","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","warn$2","transforms","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","dynamicArgRE","argRE","bindRE","modifierRE","slotRE","lineBreakRE","whitespaceRE$1","decodeHTMLCached","emptySlotScopeToken","createASTElement","makeAttrsMap","rawAttrsMap","isPreTag","root","currentParent","stack","preserveWhitespace","whitespaceOption","whitespace","inPre","closeElement","trimEndingWhitespace","processed","processElement","if","elseif","else","addIfCondition","forbidden","findPrevElement","slotScope","slotTarget","lastNode","lastTag","expectHTML","isUnaryTag$$1","canBeLeftOpenTag$$1","endTagLength","stackedTag","reStackedTag","rest$1","chars","parseEndTag","textEnd","commentEnd","shouldKeepComment","advance","conditionalEnd","doctypeMatch","endTagMatch","curIndex","startTagMatch","parseStartTag","handleStartTag","unarySlash","unary","shouldDecodeNewlinesForHref","lowerCasedTag","lowerCasedTagName","parseHTML","comments","outputSourceRange","start$1","ieNSBug","ieNSPrefix","guardIESVGBug","processPre","processRawAttrs","processFor","processIf","processOnce","tagRE","tokenValue","rawTokens","parseText","processKey","for","checkInFor","processRef","slotTargetDynamic","getRawBindingAttr","slotBinding","getSlotName","slotBinding$1","ref$1","dynamic$1","slotContainer","processSlotContent","slotName","processComponent","syncGen","hasBindings","parseModifiers","camel","argMatch","processAttrs","inMatch","alias","iteratorMatch","iterator1","iterator2","parseFor","condition","ifConditions","cloneASTElement","modules$1","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","branch1","branch2","isStaticKey","isPlatformReservedTag","baseOptions","_warn","genSelect","valueBinding","trueValueBinding","falseValueBinding","genCheckboxModel","genRadioModel","needCompositionGuard","genDefaultModel","genStaticKeys","genStaticKeysCached","optimize","markStatic$1","markStaticRoots","static","isDirectChildOfTemplateFor","l$1","staticInFor","staticRoot","fnExpRE","fnInvokeRE","simplePathRE","esc","tab","down","genGuard","modifierCode","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","isFunctionExpression","isFunctionInvocation","genModifierCode","keyModifier","genFilterCode","genKeyFilter","keyVal","baseDirectives","wrapListeners","wrapData","cloak","CodegenState","dataGenFns","maybeComponent","onceId","generate","ast","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genChildren","genProps","bind$$1","genSlot","componentName","genData$2","genComponent","originalPreState","altGen","altEmpty","genIfConditions","genTernaryExp","altHelper","needRuntime","hasRuntime","genDirectives","containsSlotChild","needsKey","generatedSlots","genScopedSlot","genScopedSlots","inlineRenderFns","genInlineTemplate","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","el$1","normalizationType$1","needsNormalization","getNormalizationType","genNode","genComment","transformSpecialNewlines","genText","staticProps","dynamicProps","createFunction","createCompileToFunctionFn","compile","compiled","fnGenErrors","baseCompile","tips","tip","compileToFunctions","getShouldDecode","idToTemplate","mount","outerHTML","getOuterHTML","fails","isCallable","keySet","parserConfig","inline","propertyKeywords","tokenHooks","documentTypes","mediaTypes","mediaFeatures","mediaValueKeywords","nonStandardPropertyKeywords","fontProperties","counterDescriptors","colorKeywords","valueKeywords","allowNested","lineComment","supportsAtComponent","highlightNonStandardPropertyKeywords","tp","tokenBase","tokenize","tokenString","tokenParenthesized","quote","escaped","pushContext","popContext","pass","states","popAndPass","wordAsValue","stateArg","_stream","atBlock","textAfter","cx","blockCommentStart","blockCommentEnd","blockCommentContinue","fold","documentTypes_","mediaTypes_","mediaFeatures_","mediaValueKeywords_","propertyKeywords_","nonStandardPropertyKeywords_","colorKeywords_","valueKeywords_","allWords","tokenCComment","maybeEnd","statementIndent","jsonldMode","jsonld","jsonMode","trackScope","isTS","typescript","wordRE","wordCharacters","keywords","kw","A","B","C","D","operator","atom","isOperatorChar","isJsonldKeyword","readRegexp","inSet","cont","tokenComment","expressionAllowed","tokenQuasi","lexical","lastType","propertyIsEnumerable","brackets","findFatArrow","fatArrowAt","arrow","depth","sawSomething","bracket","atomicTypes","JSLexical","inScope","varname","localVars","vars","parseJS","cc","marked","statement","lex","inList","register","newContext","registerVarScoped","Var","globalVars","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","poplex","wanted","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","enumdef","typename","typeexpr","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","maybeTarget","expr","continueQuasi","targetNoComma","maybeTypeArgs","getterSetter","afterprop","maybetype","what","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","quasiType","typeprop","functiondecl","continueQuasiType","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","_type","forspec1","forspec2","classNameAfter","classBody","classfield","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","isContinuedStatement","basecolumn","firstChar","doubleIndentSwitch","closeBrackets","skipExpression","selectedIntegrationIds","handleImportOrRefresh","fields","handleImportOrArchive","handleSelection","makeshift_id","handleClose","handleSubmit","email","consent","$$a","$$el","$$c","$$i","scheduleLabelCheckboxes","shiftTypeLabels","positionLabels","jobSiteLabels","scheduleDepartmentLabels","getCookieLabels","scheduleLabel","formattedLabels","labelType","endsWith","initLabelSelection","scheduleDepartmentLabel","selectedLabels","updateHeightBasedOnLabels","setCookieLabels","$shifts","cookieDepartmentLabels","cookieLabels","initJobSiteSortBySelection","cookieJobSiteSortAttribute","jobSiteSortSelector","selectedAttribute","jobSiteI","jobSiteJ","jobSiteIVal","jobSiteJVal","message_ids","updated_at","unread","_setCamelizedProperties","lastMessage","alphabeticalUsers","new_message","TimesheetItem","punch","exceptionRules","isEditable","showBreakPunches","paidBreaks","photoPunchesEnabled","trcEnabled","managerApproval","shiftBasedPunches","payCodeEnabled","isReadOnlyTimesheets","isEnterpriseCompany","position_transfer_enabled","hasEnterpriseRules","hasEnterpriseBreakRules","hasEnterpriseOvertimeRules","enterpriseData","exceptions","punched_in_date","paidDuration","TimesheetItemBuilder","validate","startsAt","punched_in_at","isLocked","locked_at","timesheets","timesheetEvents","entryIdCheck","punchIn","punchOut","overtimeSeconds","hasOvertime","earlyPunchInAllowance","addException","latePunchInAllowance","punched_out_at","latePunchOutAllowance","union","timesheetItem","tr","manager_approved","dateCell","transfer_punch_from","jobSiteName","positionName","timeReportingCode","pay_code_formatted_name","punchAndShiftTimeCell","punchType","shiftTime","punched_out_time","startEndDayDiff","end_date","punch_photos","pic","photo_types","partition","punch_type","isUndefined","punch_photo","punched_in_time","actual_in_date","punched_out_date","absDiff","breaksDurationTotalCell","breaksListCell","break_seconds","punch_id","scheduled_break","breakClockingCell","breakType","break_punches","break_punch","starts_at_time","ends_at_time","starts_at_date","ends_at_date","approvedCell","approved","overtimeHoursCell","overtime_seconds","paidHoursCell","total_seconds","dateOfPayCell","date_of_pay","managerApprovedCell","actionsCell","renderCommonColumns","EnterpriseTimesheetItemBuilder","CoreTimesheetItemBuilder","aFunction","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","setStyle","htmlMode","inText","parser","inBlock","inTag","baseState","tagStart","inAttribute","stringStartCol","closure","isInAttribute","terminator","lower","startOfLine","noIndent","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","attrEqState","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","xmlCurrentTag","xmlCurrentContext","absolute","cname","rotationBlueprint","rotationLoadingPrompt","Handlebars","SafeString","arg1","arg2","inverse","totalErrors","displayedErrors","remainingErrors","registerPusherEvents","openConflictDialogue","payload","hideLoader","openDatePrompt","buildDialogMessage","postData","forceSave","adding_rotation","warning","warning_detail","rotation_id","force_save","responseData","other_department_conflicts","openShowStopperDialogue","openForceSavePrompt","applying","conflicts","time_off_block","rotation_warning","applying_rotation","note","note_detail","short_errors","total_errors","setupPusherAnalytics","populateOvertimeHours","displayPusherError","department","payPeriodStartDate","payPeriodEndDate","selectedTimesheetItemId","selectedUserId","selectedUserTimesheetItems","timesheetId","timesheetItems","timesheetItemsIdSequence","allowImport","addButton","approveToggleButton","approveEntryButton","unapproveEntryButton","shiftBasedPunchesAction","createTransferButton","closeTimesheetButton","departmentTimesheetButton","userTimesheetButton","userTimesheetButtonName","dataRows","editTimesheetButton","historyTimesheetButton","reopenTimesheetButton","syncTimesheetButton","unlockPunchButton","userRows","exceptionTypes","overtimeHoursOnly","permissions","canReopenTimesheet","role","departmentTimesheetsPath","payPeriodId","departmentTimesheetsXlsxPath","newDepartmentPunchesPath","editPunchPath","unlockPunchPath","shiftBasedPunchesPath","punchTransfersPath","approvePunchPath","unapprovePunchPath","newDepartmentTimesheetPath","destroyTimesheetPath","auditsPunchPath","shiftBasedPunchesModalPath","activeUserRow","visibleUserRows","loadTimesheet","initEmployeeFilter","employeeFilter","startSpinner","isRunning","stopSpinner","payPeriod","pay_period","timesheet_id","toggleEditableControls","buildTimesheetItems","disableReopenButton","updateFilterCount","$countSpan","updateCountText","$exceptionsText","updateExceptionsText","initOvertimeHoursOnlyCheckbox","overtimeHoursOnlyCheckbox","updateOvertimeHours","triggerOvertimeCalculation","renderUserRows","initTimesheetItemFilter","$exceptionCheckboxes","$allExceptionsCheckbox","exceptionCheckboxChangeHandler","updateFilterAndRender","allChecked","selectedExceptions","initTimesheetRulesButton","timesheetRulesButton","updateTimesheetPunchAndAssociatedShift","findTimesheetItem","updatedShift","initActions","renderUser","initPunchModalDatePickers","renderModal","from_punch_id","to_punch_id","transfer_punch","pay_period_range","rowIds","shiftsIds","punchesIds","entryId","entryType","shifts_ids","punches_ids","messageHtml","punchModal","punchId","setErrorFlash","renderHistoryModal","isCloseable","pay_period_id","dataset","confirmationMessage","complete","userRole","dateBetween","createTimesheetItem","dropdownContent","dropdowns","initTimesheetEvents","renderUserTotals","flagUserException","initPayPeriodNavigation","initTimesheetPusher","timesheetChannelName","timesheetPusherChannel","otHoursData","updateTimesheetItemRow","filterAndSortTimesheetItems","placeholderRow","updatedRow","otDetail","overtime_details","departmentTimesheetTable","closedIcon","closeControls","reopenControls","timesheetItemFilter","payPeriodData","timsheetIsEditable","punchedShiftIds","exceptionOptions","hasOpenPunches","hasExceptions","enterprisePunchLookup","enterprise_punches","acc","isAfter","formattedDate","punches","newTimesheetItemId","punchlessShifts","punchIds","reportOptions","renderedUserName","totalUserHours","memo","totalSeconds","$userRow","userTitle","userName","showLoading","punchHistoryModal","timeFormat","timepicker","departmentTimesheetBox","newTimesheetItem","isEntepriseCompany","_start","_end","timesheet_processing","dataTableBody","importPunchesButton","importPunchesFile","importPunchesForm","budgeted","scheduled","estimated","ruleType","handleRuleSelection","timeValue","$$selectedVal","timeUnit","isVisible","isTimePeriodHidden","timePeriod","IndexedObject","requireObjectCoercible","setGlobal","SHARED","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","ledgerItem","ledger","positionTable","employeeTable","toggleButtons","buildLedgerTable","tableEl","deptTotals","ledgerTableItem","clickedBtn","otherBtn","dept","actual_hours","actual_cost","cost","departmentTotals","employee_data","position_data","tableElement","tableData","createTable","decimalTargets","currencyTargets","cols","sTitle","mData","sDefaultContent","createTableColumns","bPaginate","bFilter","bLengthChange","bInfo","aoColumns","fnPreDrawCallback","fnHeaderCallback","nHead","aData","iStart","iEnd","aiDisplay","fnCreatedRow","nRow","iDisplayIndex","subData","subRows","nextUntil","oddOrEven","createSubRow","rowData","createFooter","firstItemProp","description","time_unit","currentProgress","fullDocument","addEmployeeLink","newShiftTemplate","publishButton","availability","availableShiftsRow","gearDropdown","navDashboard","navAnalytics","navLocations","navDepartments","navTimeOff","navAnnouncements","navUsers","navProfile","completedItem","nextItems","difference","allItems","incomplete","itemNumber","steps","defaultValues","1","2","4","5","show_support_links","urls","creating_available_shifts_url","6","7","product_name","DayGridDateProfileGenerator","endOfWeek","fixedWeekCount","Popover","isHidden","documentMousedown","autoHide","elDims","clippingRect","SimpleDayGridEventRenderer","timeText","titleHtml","isResizableFromStart","isResizableFromEnd","skinCss","timeHtml","DayGridEventRenderer","dayGrid","rowStructs","renderSegRows","rowEls","rowNode","tbodyEl","removeSegPopover","rowStruct","segRows","groupSegRows","renderSegRow","rowSegs","levelSegs","segLevels","buildSegLevels","levelCnt","tbody","segMatrix","cellMatrix","loneCellMatrix","emptyCellsUntil","endCol","leftCol","rightCol","introHtml","renderProps","levels","isDaySegCollision","compareDaySegCols","otherSegs","otherSeg","DayGridMirrorRenderer","skeletonTopEl","skeletonTop","skeletonEl","EMPTY_CELL_HTML","DayGridFillRenderer","renderFillRow","trEl","getElementsByTagName","DayTile","eventRenderer","renderFrame","_renderFrame","renderFgEvents","fgSegs","eventDragInstances","eventResizeInstances","segContainerEl","layer","DayTileEventRenderer","dayTile","DayBgRow","renderHtml","cell","renderCellHtml","htmlAttrs","DAY_NUM_FORMAT","WEEK_NUM_FORMAT","DayGrid","bottomCoordPadding","isCellSizesDirty","fillRenderer","mirrorRenderer","renderCells","_renderCells","_unrenderCells","renderBgEvents","_renderEventDrag","_unrenderEventDrag","_renderEventResize","_unrenderEventResize","isRigid","segPopoverTile","updateSegPopoverTile","getCellRange","ownProps","renderDayRowHtml","cellEls","rowPositions","colPositions","getCellEl","bgRow","renderBgIntroHtml","getIsNumbersVisible","renderNumberTrHtml","getIsDayNumbersVisible","cellWeekNumbersVisible","colWeekNumbersVisible","intro","renderNumberIntroHtml","renderNumberCellsHtml","htmls","renderNumberCellHtml","weekCalcFirstDow","isDayNumberVisible","buildColPositions","buildRowPositions","positionToHit","relativeRect","segPopover","limitRows","levelLimit","rowLevelLimit","unlimitRow","computeRowLevelLimit","limitRow","rowBottom","trEls","limitedNodes","segsBelow","totalSegsBelow","colSegsBelow","segMoreNodes","moreTd","moreWrap","moreLink","moreNodes","getCellSegs","renderMoreLink","moreEls","limitedEls","limitedEl","hiddenSegs","getMoreLinkText","clickOption","_col","moreEl","allSegs","reslicedAllSegs","resliceDaySegs","reslicedHiddenSegs","showSegPopover","topEl","dayDate","dayRange","newSegs","startLevel","WEEK_NUM_FORMAT$1","AbstractDayGridView","processOptions","_processOptions","renderHeadIntroHtml","weekNumberStyleAttr","renderDayGridNumberIntroHtml","renderDayGridBgIntroHtml","renderDayGridIntroHtml","weekNumbersWithinDays","renderSkeletonHtml","dayGridContainerEl","dayGridEl","weekNumberWidth","hasRigidRows","scrollerHeight","headRowEl","computeScrollerHeight","setGridHeight","SimpleDayGrid","slicer","DayGridSlicer","dayTable","rawHit","DayGridView","buildDayTable","simpleDayGrid","dayGridDay","dayGridWeek","dayGridMonth","fullCalendarApi","eventRender","dayRender","preferences","pref","recurrence_start","recurrence_end","emptyMessage","onClick","meterClasses","barClass","textValue","containerClasses","customId","processing","handleSelect","formatText","time_zone","jobSite","keyList","hasProp","equal","arrA","arrB","dateA","dateB","regexpA","regexpB","propertyIsEnumerableModule","toIndexedObject","toPropertyKey","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","O","P","bitmap","stringSlice","TypeError","toPrimitive","isSymbol","getBuiltIn","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","NATIVE_SYMBOL","sham","V8_VERSION","getOwnPropertySymbols","tryToString","IS_PURE","copyright","postfix","random","EXISTS","anObject","$defineProperty","Attributes","functionToString","inspectSource","overlayMode","combine","basePos","baseCur","overlayPos","overlayCur","streamSeen","combineTokens","overlayToken","ensureState","toRegex","caret","flags","ignoreCase","unicode","asToken","Rule","regex","tokenFunction","pend","local","tok","endToken","localState","endScan","curState","rule","enterLocalMode","dedent","pers","persistent","persistentStates","lState","forceEnd","indentFunction","dontIndentStates","rules","dedentIfLineStart","defineSimpleMode","simpleMode","states_","hasIndentation","orig","defaultTags","script","maybeBackup","pat","attrRegexpCache","getAttrRegexp","regexp","getAttrValue","getTagRegexp","anchored","addTags","findMatchingMode","tagInfo","tagText","configTags","configScript","scriptTypes","htmlState","endTagA","localMode","buttonClass","plus","req","listItemClass","handleActiveComponent","scope","handleWrapperClose","defaultChecked","_interopDefault","ex","Vue$1","DEFAULT_OPTIONS","Editor","currentOptions","editor","handleChange","Preview","iframe","scopedStyle","g1","g2","renderCode","links","lastData","keepData","codeVM","$data","contentDocument","codeEl","styleEl","styleNodes","documentStyles","JSMODULE_REG","evalJS","Babel","availablePlugins","registerPlugin","presets","scopeDecl","variable","require","getAndCache","Vuep$2","preview","win","executeCode","$isServer","compiledCode","compiler","_typeof","_arrayLikeToArray","arr2","_createForOfIteratorHelper","allowArrayLike","minLen","_unsupportedIterableToArray","F","normalCompletion","didErr","return","PROP_DEFS","bootstrapFontAwesome","contentHeight","allDaySlot","slotDuration","slotLabelFormat","slotLabelInterval","snapDuration","slotEventOverlap","listDayFormat","listDayAltFormat","defaultDate","navLinkDayClick","navLinkWeekClick","selectable","selectMirror","unselectCancel","selectConstraint","selectOverlap","selectAllow","eventStartEditable","eventDurationEditable","eventConstraint","eventOverlap","eventAllow","eventClassName","eventClassNames","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","eventLongPressDelay","allDayHtml","eventResourceEditable","eventSourceFailure","eventSourceSuccess","progressiveEventRendering","selectLongPressDelay","selectMinDistance","schedulerLicenseKey","resources","resourceLabelText","resourceOrder","filterResourcesWithEvents","resourceText","resourceGroupField","resourceGroupText","resourceAreaWidth","resourceColumns","resourcesInitiallyExpanded","slotWidth","datesAboveResources","googleCalendarApiKey","refetchResourcesOnNavigate","datesRender","datesDestroy","eventDestroy","viewSkeletonRender","viewSkeletonDestroy","resourceRender","PROP_IS_DEEP","EMISSION_NAMES","EMISSION_USE_PROP","FullCalendarComponent","renderId","deepCopies","listenerHash","emissionName","warnDeprecatedListeners","buildCalendarOptions","renderDirty","beforeDestroy","propDef","oldVal","recordDirtyOption","_step","_iterator","_loop","_len","_key","propVal","optionName","dirtyOptions","getApi","GlobalVue","installed","task","forced","clearImmediate","createNonEnumerableProperty","redefine","copyConstructorProperties","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","$propertyIsEnumerable","NASHORN_BUG","V","classof","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","process","Deno","versions","v8","aCallable","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","InternalStateModule","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","getInternalState","enforceInternalState","enforce","TEMPLATE","unsafe","simple","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","getterFor","TYPE","getDescriptor","PROPER","getOwnPropertyDescriptorModule","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","internalObjectKeys","names","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","toIntegerOrInfinity","toLength","replacement","feature","detection","POLYFILL","NATIVE","defer","channel","port","arraySlice","IS_IOS","IS_NODE","Dispatch","MessageChannel","ONREADYSTATECHANGE","runner","listener","post","postMessage","protocol","port2","port1","onmessage","importScripts","that","webpackContext","webpackContextResolve","resetType","termsRequired","debounceSpeed","notificationChoiceRequired","termsOfServiceCheckbox","disableSubmitButton","formValid","notificationDropdown","showPasswordCheckbox","$input","passwordInput","liveValidatePassword","controlGroup","passwordValid","minPasswordLength","submitButton","displayFlashError","PAGE_LENGTH","clearError","bindPusher","msPusherChannel","export_url","export_uri","adminCompanies","trialEndsAt","reactivateButton","companyTrialGroup","todayHighlight","adminRevenue","revenuePageState","revenueDataStartDate","revenueDataEndDate","revenueDatatable","getValidDates","revenue_data_start_date","revenue_data_end_date","autoWidth","serverSide","pagingType","pageLength","dom","searchDelay","uniform","sorting","fnSettings","sort_column","sort_order","AdminSmartInsightsDashboards","dashboardId","enableDashboard","AdminSmartinsightsUsers","setButtonLoading","setButtonActivate","editButton","hideEditButton","cleanQuickSightRole","resetSmartInsightsQSelection","setButtonDeactivate","showEditButton","basePath","deactivateUser","activateUser","adminSupport","adpIntegration","initBillingWarningPrompt","showCompaniesFilter","hideCompaniesFilter","formID","adminFeatures","initToggleActions","deauthorizingFeature","htmlWarning","newValue","originalValue","companyName","clearCustomDateRangeForAvailability","getAvailability","availability_url","initAvailability","makeRequestForAvailability","selectCustomDateRangeForAvailability","departmentGroup","clearCustomDateRangeForAvailableShifts","getAvailableShifts","dataSetFilter","dataFilter","available_shifts_url","getFilterDataHashForAvailableShifts","initAvailableShift","removeAvailableShiftsOptionGroup","makeRequestForAvailableShifts","selectCustomDateRangeForAvailableShifts","errorDiv","clearCustomDateRangeForLabourBudget","getLabourBudget","initLabourBudget","removeLabourBudgetOptionGroup","makeRequestForLabourBudget","selectCustomDateRangeForLabourBudget","constructLabourBudgetsReport","labourBudgetTotalHtml","budgetNumber","total_budget","buildLabourBudgetChart","labour_budgets","labourBudgetBreakdown","parameters","dateRangeHtml","labourBudgetData","formattedData","series","formattedLocation","sum_total","dataIndex","point","newData","Highcharts","chart","renderTo","credits","enabled","xAxis","minTickInterval","yAxis","allowDecimals","initLedger","removeLedgerOptionGroup","makeRequestForLedger","cleanLedgerSlate","beginRequestForNewChart","makeRequestForLedgerXlsx","removeExportButton","constructLedgers","ledgerData","exportable","isExportable","ledgers","buildLocationHeader","locationHeaderHTML","pBJTable","quarterlyButtonClick","submitButtonClick","yearDropdownChange","getSelectedQuarter","getSelectedYear","updateDataTable","getPBJTableData","mainContainerID","updateLocationTitle","updateExportButton","updateDate","showPayPeriodModal","resultEmptyWarning","showResults","hideLoading","pBJController","fnClearTable","fnAddData","newDataTable","getSelectedLocation","quarter","location_id","facilityId","warnings","facilityID","locationID","list_items","monthSelector","analyticsShiftAudits","initReportForm","mindate","toggleSubmitButtonState","initActionFilters","initShiftAuditsReport","employeeSelectBox","employeeArchivedSelectBox","includeArchived","employeeArchivedDiv","includePublished","verifyOnePublishedCheckboxSelected","includeUnpublished","getSelectedEmployeeIds","employeeIds","archivedEmployeeIds","getShiftAudits","actionFilters","hidePusherError","action_filters_list","makeAsyncShiftAuditRequest","buildDataForShiftAuditsRequest","employees","constructShiftAuditsReport","employeesData","exportableRowCount","shiftAudits","employeeDataGroup","employee_shift_audits","shiftAuditsTable","addExportButton","makeRequestForShiftAuditsXlsx","exportOptions","employeeData","bVisible","rowCallback","handleCreateRowClosure","colorHexs","previousRowState","rowShiftId","clearCustomDateRangeForShiftExchange","getShiftExchange","getFilterDataHashForShiftExchange","exchangeType","shift_exchange_url","initShiftExchange","makeRequestForShiftExchange","removeShiftExchangeOptionGroup","selectCustomDateRangeForShiftExchange","analyticsTimeExceptions","toggleHourOveragePresence","initTimeExceptionsReport","hourOverageThreshold","threshold","invalidThreshold","locationsDepartments","getTimeExceptions","hourOverage","reportTypes","locationDepartmentValues","constructTimeExceptionsReport","timeExceptions","departmentTable","timeExceptionsTable","makeRequestForTimeExceptionsXlsx","departmentData","iDataSort","clockInTime","clockOutTime","shiftStartTime","shiftEndTime","clearCustomDateRangeForTurnover","getTurnover","getFilterDataHashForTurnover","turnover_url","initTurnover","makeRequestForTurnover","removeTurnoverOptionGroup","selectCustomDateRangeForTurnover","analyticsUnavailables","clearCustomDateRangeForUnavailables","getUnavailables","unavailables_url","initUnavailables","makeRequestForUnavailables","removeUnavailablesOptionGroup","selectCustomDateRangeForUnavailables","getWorkforce","workforce_url","initWorkforce","removeWorkforceOptionGroup","deptId","announcements","modifiedData","departmentSectionIndex","recipientId","departmentSectionChildren","$positionsContainer","$positionsSelect","positions","recipientsQuery","updatedMatcher","words","matcher","dataText","dataItem","datum","collection","each2","childDatum","availableShifts","CURRENT_USER_ID","setHidden","broadcast","broadcastId","addedEvents","unavailableEvents","deletedEvents","addedRotations","rejectDupes","calendar_reloaded","priorEventColor","draggableBlockConfig","revertDuration","loadEvents","department_user_schedule_url","unavailables_department_user_schedule_url","availabilities_department_user_schedule_url","isDeletableEvent","allowUnavailableDelete","conflictsWithRotation","eventDate","grep","duplicateShift","eventStart","eventEnd","removeFullCalendarEvent","_id","createSelectElement","$select","alertUnavailableModal","createUnavailableEvent","draggedEvent","unavailable_type_id","newEvent","title_text","getConflictingEvents","partial","dateString","displayedConflictingEvents","conflictingEvents","createEventsFromPattern","rotationEndDate","getRotationPattern","rotationItems","rotationItem","current_department_name","current_location_name","unavailable_types","start_from_midnight","timeStringToSeconds","dropTitle","requirementLabels","job_sites","formatEvent","rotation_name","calendarHasChanged","confirmReload","getURLParameter","matched","decodeURIComponent","updateButtonStates","discard_button","publish_button","customShift","bootbox_result","calendarDate","rememberedCalendarMonth","param","discardCalendarChanges","initRejectDuplicateShifts","custom_shift","shift_types","lastSetYear","lastSetMonth","initializeLastCalendarLocation","monthNames","monthNamesShort","dayNames","dayNamesShort","columnFormat","eventClick","conflictingRotation","slotMinutes","dragOpacity","disableDragging","disableResizing","toDateString","fcEvent","inDeletedEvents","earlierTimeThanToday","isUnpublishedShift","colorCode","department_ids","shadeOfColor","setCurrentAndFutureEventColor","positionSelectShown","appendTo","$jobSiteSelect","$positionSelect","reposition","$calendar","updatedEvent","updateFullCalendarEvent","event_id","$position","$jobSite","$selectedPosition","$selectedJobSite","updateEventWithPositionAndJobSiteSelection","showPositionsAndJobSitesQtip","renderEvent","eventDrop","dayDelta","minuteDelta","draggedEventStart","draggedEventEnd","duplicateDragEventShift","isCustomShift","new_shift_url","referrer","calendar_user_id","breakObject","setDate","end_time_label","createCustomShiftEvent","setupCustomShiftEvent","isRotation","setupRotationEvent","new_unavailable_url","numDays","unavailable_type_title","startShowTime","endShowTime","realEndDate","realStartDate","createPartialTimeOffEvent","foundConflicts","setupUnavailableEvent","department_positions","department_job_sites","createShiftEvent","fullCalendarEventsToDelete","unpersistedRotationEvent","foundOverlap","setupCalendar","auditAction","rotationTitle","localStart","localEnd","setToEndOfDay","utc","update_shift_url","merge","nonRotationEvents","sortEvents","calendar_events","update_department_user_schedule_url","alert_message","modify_schedule","patterns","earliestEventDate","getEarliestDate","latestEventDate","getLatestDate","conflict","deleteRotationEvents","hasConflicts","shift_position","duplicateRotationShift","pattern_id","audit_action_type","formatRotation","markEventForDeletion","timeString","hoursAndMinutes","scheduleDate","fixStyles","maxHeight","setDepartmentId","updateDashboard","initiateSpinner","initial_load","always","show_time_off_requests_panel","updateTimeOffRequests","updateAvailableShifts","updatePendingExchanges","updateScheduleContent","skipChecklistItem","checklistItemId","checklist_item_id","default_department_id","updateSchedule","subtractOneDay","departmentUsers","tables","initPusherChannel","inDepartmentDataTable","draw","notInDepartmentDataTable","enableTableButton","initDataTable","dataTableExt","oStdClasses","setupDataTable","sortable","forcePlaceholderSize","updateUserOrder","disableSelection","isEllipsisActive","inDepartmentDrawCallback","resetSortOrder","initPopoverHandlers","notInDepartmentDrawCallback","hover","nextAll","resetSortPath","$trs","editPositionPath","$dataTable","dataTableOptions","ordering","drawCallback","totalUsers","initButtonToggles","$url_method","request","disableTableButton","removeButton","submitAction","enableElement","disableElement","$button","editShiftDialog","initSetValues","fillFields","shiftName","initOverride","shiftTypeField","selectedShiftType","startTimeField","endTimeField","initClearBreaks","breaksField","initTabs","initValidator","modalBody","hideEndsAtField","trcField","notesField","valueInMinutes","enterprisePayrollItems","cssClasses","closedTimesheet","openTimesheet","currentLocationId","currentPayPeriodId","payPeriodStatus","locationHasExceptions","exportButtonClicked","decimalPlaces","currency","loadPayPeriod","date_range","beforeSend","setUiBasedOnPayPeriodStatus","closePayPeriodPath","alertMessage","initPayPeriodFilter","payPeriodFilter","locationPayrollsPath","updateSftpButtonState","initPaymentProviderFilter","paymentProviders","exportPayrollPath","paymentProviderFilter","textA","textB","firstLoad","locationTimesheetTable","usersWithoutWages","flaggedUsers","payPeriodCloseBtn","userLinkBuilder","toSentence","syncLink","newLink","payRollTableRowWriter","enterprisePayrollItem","employeeId","employeeIdHtml","tableRow","unique_position_code","time_code","processingBtn","payrollTable","failureMessage","timesheetRows","timesheetsTableRowWriter","enterprise_payroll_items","tableExceptionRowWriter","tableProcessingRowWriter","confirmation_button","timesheet","approver_name","departmentTimesheetPath","departmentLinkBuilder","processing_text","userPath","showLoadingModalSftp","hideLoadingModalWithDelay","selectedProvider","isPayPeriodClosed","locationId","departmentButton","exportAlertsDiv","exportContainer","colors","darkGreen","red","green","blue","orange","gray","lightBlue","initClass","oApi","fnSetFilteringDelay","iDelay","_that","iApiIndex","oTimerId","sPreviousSearch","anControl","aanFeatures","fnFilter","setDefaultHeader","tableHeader","fnRowCallback","iDisplayIndexFull","bStateSave","elem","fnInitComplete","sentence","searchElement","currentElement","locationProfiles","showDownloadModal","downloadModal","hideDownloadModalLink","initAsyncWebSocketListeners","download_url","exportButtonPath","ignoreLocationWeekStartsOn","start_day","rest_of_week","colorDays","next_week_days","setupExportButtonForAJAX","initMap","defaultMap","initCurrentLocation","geolocation","getCurrentPosition","showCurrentLocation","handleGeolocationError","coordinates","latitude","longitude","google","LatLng","showMap","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","updateLatLngText","showSearchBarLocation","geometry","zoom","showMarker","setOptions","createMap","markerListener","lat","lng","showGeofence","geofenceOptions","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","geofence_radius","Circle","navigationControlOptions","NavigationControlStyle","SMALL","mapTypeId","MapTypeId","ROADMAP","panControl","zoomControl","mapTypeControl","scaleControl","streetViewControl","overviewMapControl","mapId","Map","Marker","addListener","latLng","latitudeField","longitudeField","autocomplete","addressField","places","Autocomplete","getPlace","reverseGeocode","Geocoder","geocode","GeocoderStatus","OK","formatted_address","newShiftDialog","toggleSubmitButton","removeProp","payPeriods","includesPunches","allowArbitraryMonthlyDate","allowArbitrarySemiMonthlyDate","lastSentDate","initDatePicker","payPeriodType","clearDatePicker","initDatePickerForMonthly","initDatePickerForBiWeekly","initDatePickerForSemiMonthly","nextPayPeriodStart","datepickerInput","todayBtn","beforeShowDay","currentPayPeriodStartDate","payPeriodInput","initPayPeriodActions","togglePayPeriodContent","updateHelpBlock","payPeriodWeeklyInput","selectedStartDate","hideAllPayPeriodContent","payPeriodWeeklyDaySelector","payPeriodDateSelector","payPeriodStartDay","payPeriodStartsAt","locationPayPeriods","payPeriodTypeContainer","payrollItems","isEnterprise","calculateSum","attributeName","payrollItem","employee_id","regular_hours","overtime_hours","stat_holiday_hours","total_hours","labour_cost","payRollTableTotalRowWriter","calculateSumAsCurrency","payroll_items","popover","positionExpressionsTable","pos_id","positionExternalNamesCsvs","initPositionsExternalNamesCsvUploader","selectButton","selectCsvButton","uploadButton","uploadCsvButton","csvFile","filename","csvFilename","displaySuccess","displayErrors","statusBar","FormData","processData","ajaxSettings","premiumRules","saveRule","whitelistedRule","premium_rule","pick","days_of_week","httpVerb","deleteRule","growlChannel","csrfToken","authEndpoint","auth","timeoutId","growlMessage","startInactivityCheck","disconnect","userActivityDetected","connect","$rotations","buildDraggableBlocks","setupDraggableItems","loadRotation","rotationLength","num_rotations","get_rotation_in_days","buildRotationDays","rotationPattern","buildPattern","num_rotation_days","rotation_days","num_week","rotation_week","day_num","$rotation_day","day_index","rotations_pattern","writeShiftTypeToDiv","$tempDiv","writeUnavailableTypeToDiv","$addedDiv","assignUnavailableData","shift_type_html","shift_type_div","writePositionToDiv","initializeRotation","validateRotationLength","isPositiveInteger","setDraggablesWidth","createUnavailableTypeModal","validateShiftTypeHours","new_div","rotation_day_div","shift_html","new_shift_type_id","addedDiv","replaceShiftTypeInDiv","addShiftTypeToDiv","addShiftTypeData","addHover","goesAfter","existing_ids","id_string","previous_shift","$shift","new_shift_hours","parseShiftTypeHours","existing_shift","insertAfter","rotation_shift_div","hours_str","timeToSeconds","handlerIn","handlerOut","removeShiftType","$time_off_div","unavailable_data","$name_div","$name","$hours_span","unwrapRotationShifty","shifty","shift_hours_str","new_shift_type_hours","existing_shift_type_hours","$rotation_days","shiftHoursInSurroundingDays","existing_hours","shiftyA","shiftyB","bs","validateRotation","rotationName","pattern_keys","pattern_values","unique_pattern_values","unique","inArray","minutes_string","$new_div","departmentPositionsPath","positionValue","jobSiteValue","departmentUnavailableTypesPath","backdrop","day_block","updatePattern","rotation_day","shift_index","rotation_shift","cancelChanges","rotations_url","rotationDraggables","fixDraggables","rotationDroppable","rotation_data","rotationDescription","create_rotation_url","updateRotation","update_rotation_url","resize","select2Util","createSearchTag","searchChoiceType","newItemText","formatSearchTag","searchType","formatNoMatchesDisabled","checkForIllegalChars","found_illegal","illegal","shiftRequirements","updateShiftRequirementShifts","$requiredEmployeeCount","updateCounter","unscheduled_users_count","shiftRequirementsImport","placement","importID","isProcessing","updateMessage","updateCount","$count_el","newval","import_id","$shift_types","shiftTypeForm","initForms","$template","statHolidayForm","holidays","dateField","endOf","initHolidays","nameField","escape","initSelection","holidayDateAndName","subscription","cardInfo","cardNumber","oldCardType","cards","cardType","Stripe","cardCvc","paymentForm","cardInfoSelectors","cardDetails","cardExpMonth","cardInfoSelectorscardExpMonth","cardExpYear","paymentFormButtons","createToken","cvc","exp_month","exp_year","stripeResponseHandler","initCountryForm","updateAddressFields","companyCountry","select_wrapper","initStripeKey","stripeMeta","setPublishableKey","country","displayCanadianFields","displayAmericanFields","displayInternationalFields","companyStateLabel","companyPostalCodeLabel","companyNorthAmericanFields","companyInternationalField","original_val","companyState","provinces","province_name","province_code","option_part","state_name","state_code","initThrottleFlashMsg","companyPostalCode","creditCardBilling","tableCrud","maxRecords","reloadOnEmpty","initAddButton","toggleAddButton","toggleEditButtons","deleteButtonText","rowCount","jqXHR","errorResponse","$buttons","truncateString","timeClock","nextShift","currentPunch","currentUser","breakPunch","timeoutInterval","flashInterval","clearIDInterval","clearPasswordInterval","employeeIDInterval","countdownInterval","timeoutLength","initialized","countdownTimerLength","updateClock","initializeButtons","resetClockInFlow","initAjaxSetup","ajaxSetup","textStatus","errorThrown","setClockInButtonLabel","punchInButton","isElement","skipResetFlash","clearEmployeeID","clearEmployeeIDInterval","clearTimeOut","clearEmployeeInterval","clearFlashInterval","ctoday","utcSeconds","setUTCSeconds","currentHours","currentMinutes","currentSeconds","timeOfDay","currentTimeString","timeOfDayElement","timeAttribute","createAttribute","setAttributeNode","nextButton","validateEmployeeIdEntry","onEmployeeFormSubmit","idField","onEmployeeIdInput","deptField","onEmployeeDeptSelection","startBreakButton","startBreakPunch","endBreakButton","endBreakPunch","punchOutButton","punchOutEmployee","cancelPunchInButton","cancelPunchIn","cancelSubmitPunchInButton","onPunchInClicked","employeeForm","departmentDrop","setUpDepartmentTimeout","signOutButton","signOutOfTimeClock","signOutPasswordField","onEnterTapped","clearPasswordTimeout","passwordScreen","setUpClearPasswordInterval","validateDepartmentSelection","clearEmployeeIdInterval","retrieveEmployeePunches","showShift","getBaseDomain","hostname","setEndpointHeaders","sendData","kiosk_punch","onStartBreakPunchSuccess","onStartBreakPunchFail","displayFlashSuccess","user_name","tz","getDepartmentTimeZone","onEndBreakPunchSuccess","onEndBreakPunchFail","onEmployeePunchedOutSuccess","onEmployeePunchedOutFail","clearFlashMessage","deptID","punchEmployee","setUpTimeoutInterval","ctoken","server_config","admin_mobile_app","onEmployeePunchSuccess","onEmployeePunchFail","user_lookup_key","onEmployeePunchRetrieveSuccess","onEmployeePunchRetrieveFail","getDepartmentById","getLocationById","rtnLoc","rtnDept","getDepartmentName","showPunch","job_sites_length","positions_length","enableAndPopulateJobSiteSelect","enableAndPopulatePositionSelect","job_sites_html","positions_html","resetDepartmentSelection","initCountdownTimer","getBreaksList","requires_break_punches","flashHTML","resetEmployeeID","passwordEntryTimedOut","countdownTimer","items_per_row","onhashchange","onkeydown","$timePicker","timePickerOptions","scrollDefaultTime","break_punch_id","userDepartmentsLocations","tableName","defaultSortColumn","noSortColumns","userAssociationType","userImporter","initialSorting","errorCount","impersonating","iDataIndex","importSelectedBtnHtml","handleImportSelected","resetAndInitCheckboxes","initDismissButtons","dismissButton","userError","aoid","initTooltips","initImportButtons","brand","setButtonImport","unlinkName","removeCheckmark","enableCheckbox","deactivateEmployee","deactivateEmployeeModal","importEmployee","multipleSingleImports","triggeredSincePageLoad","processingCount","setButtonError","initListeners","newCount","initResyncPrompt","initImportPrompt","user_import_id","progress_message","subscribeImportAllUpdates","associate_oid","import_attempt","anyImportsFailed","addCheckmark","employee","handleEmployeeCheckboxClick","uncheckByAoid","disableCheckbox","handleUserImportFailureChecks","subscribeImportSingleUpdates","subscribeListingUpdates","subscribeResyncingUpdates","subscribeResyncSingleUpdates","currentlyWorking","statusPath","msi","getBtnStateFromByCheckbox","checkboxElement","handleSelectAllCheckboxClick","checkedBoxes","hideImportSelectedBtn","showImportSelectedBtn","not_checked","currentCompanyId","userSchedulePreview","buildCalendar","$originatingLink","$newShiftName","$newShiftDate","greyHex","loaded","exchangedShift","initPreview","$calendarType","createLegend","userTimeOff","initUnavailablesSummaryDataTable","summaryAjax","formatApprovedTimeOff","pageTotal","formatTotalApprovedTimeOff","summaryTable","initUnavailablesDataTable","formatHours","formatted_hours","workdayHours","select2Id","initSelect2Listener","updateAjax","enforceValidDates","datePickerStart","datePickerEnd","addDayToDate","checkValidDate","summaryUrl","select2Values","dateParams","hoursStr","daysStr","formatRound","select2Data","Vuep","Components","example","Timeout","clearFn","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","onreadystatechange","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","browser","argv","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","tagLanguages","mustacheOverlay","conf","parserConf","ERRORCLASS","wordRegexp","operators","identifiers","atProp","wordOperators","indentKeywords","commonKeywords","stringPrefixes","regexPrefixes","constants","scopeOffset","lineOffset","longComment","floatLiteral","intLiteral","tokenFactory","delimiter","singleline","outclass","singleLineStringErrors","alignOffset","_indent","tokenLexer","delimiter_index","fillAlign","closer","closes","cssMode","tokenRegexp","keywordsRegexp","opRegexp","pseudoElementsRegexp","isEndLine","urlTokens","tokenizer","buildStringTokenizer","multiLine","greedy","stringTokenizer","nextChar","peekChar","previousChar","cursorHalf","buildInterpolationTokenizer","currentTokenizer","indentCount","currentOffset","scopes","prevProp","withCurrentIndent","newScopes","definedVars","definedMixins","lastToken","indentUnitString","tagKeywords","tagKeywords_","tagVariablesRegexp","documentTypesRegexp","fontProperties_","operatorsRegexp","wordOperatorKeywordsRegexp","wordOperatorKeywords_","blockKeywords","blockKeywords_","vendorPrefixesRegexp","commonAtoms","commonAtoms_","firstWordMatch","firstWord","wordIsTag","currentIndent","contextIndent","wordIsProperty","wordIsBlock","wordIsVendorPrefix","wordLC","typeIsBlock","typeIsInterpolation","typeIsPseudo","escapeRegExp","firstWordOfLine","parens","vendorPrefixes","pseudo","atBlock_parens","keyframes","interpolation","variableName","lineFirstWord","lineIndent","prevLineFirstWord","prevLineIndent","commonDef_","hintWords","KEYWORD","DOCTYPE","ID","CLASS","ATTRS_NEST","jsMode","State","javaScriptLine","javaScriptLineExcludesColon","javaScriptArguments","javaScriptArgumentsDepth","isInterpolating","interpolationNesting","jsState","restOfLine","isIncludeFiltered","isEach","scriptType","isAttrs","attrsNest","inAttributeName","attributeIsType","attrValue","indentOf","indentToken","innerState","innerModeForLine","javaScript","yieldStatement","interpolationContinued","caseStatement","defaultStatement","extendsStatement","includeFiltered","includeFilteredContinued","mixinCallAfter","callArguments","conditional","eachContinued","whileStatement","captures","innerModes","setInnerMode","attrsContinued","attributesBlock","colon","dot","nextToken","handlebars_raw","handlebars","dash_comment","multiplexingMode","parseDelimiters","others","returnEnd","innerActive","startingInner","curInner","oldContent","delimStyle","innerToken","innerStyle","cutOff","outerIndent","possibleOuterIndent","outerToken","copyContext","modeConfig","xmlMode","flatXMLIndent","xmlToken","jsToken","xmlContext","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","awrap","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","CustomizationModalVue","modalKey","customization","initModalStates","initAjaxHandlers","setButtonDisabled","showErrors","getCustomization","company_name_override","company_industry_override","company_size","logo_url","submitForm","setNoLogoParam","setImage","readAsDataURL","removeImage","BaseModal","AvailabilityVue","repeatsVisible","currentModal","eventInfo","date_string","starts_on","ends_on","repeats_on","repeats","initDatepickers","getPreferences","refetchPage","startsOnVal","defaultViewDate","deleteAvailability","modalEl","deleteSingleAvailability","availabilityCalendar","toggleRepeats","AvailabilityPreferences","AvailabilityCalendar","CalendarSidebar","PermissionsVue","selectedPermissionData","manageable","schedulable","handleScheduleCheckbox","handleSchedule","managedDatatable","otherDatatable","handleManage","currentBrand","appLogoText","currentUserName","disableSupportLink","handleConfirmation","restoreUser","handleEdit","updateUser","handleCancel","buttonLabel","importBambooUsers","archiveMakeshiftUser","importTsheetsUsers","cacheTsheetsUsers","errorMessages","addHoliday","holiday","holidayIndex","buildInputPropertyForAttribute","isRemoved","holiday_name","multiplier","toggleIsEditing","isEditing","removeHoliday","initialEmail","use12hr","true_value","false_value","new_link","limited_super_admin","last_sign_in_at","welcome_link","initialProcessing","modalHeaderText","selectedUsers","newRowTrigger","handleAttributeChange","handleAssign","assignmentButtonText"],"mappings":"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ACA,kCACA,mDACA,qBANA,sEAQA,cAhIA,WAiIA,YACA,uBAEA,iBAEA,SAIA,sBAJA,WAIA,uBACA,KACA,gCACA,aACA,cACA,0BACA,8BACA,mCACA,0BACA,WACA,SACA,4CACA,WAEA,IACA,IAmBA,QAjBA,oBACA,wBAGA,cACA,yBACA,iBAGA,4BACA,oBAGA,kBACA,wBAGA,aACA,0BACA,qBACA,iBAEA,YACA,gBACA,eAGA,OACA,sBACA,YACA,cACA,YACA,sBACA,oBAEA,4BACA,iBAEA,qCACA,mCAEA,+BACA,uBAEA,8BACA,qBAEA,iCACA,4BAEA,yCACA,4DAEA,WACA,+BACA,eACA,qEAFA,GAIA,mBAGA,kBAEA,gBACA,iCAGA,IAIA,kEAGA,6BAEA,OACA,QACA,aACA,cACA,YACA,eACA,UACA,aACA,wBACA,8BACA,oDACA,4HACA,qBACA,wDACA,iIAEA,qBACA,UACA,cACA,qCAEA,IAaA,OAVA,MACA,iBACA,6BACA,WAGA,qBAIA,GAMA,eAzIA,WA0IA,8GAEA,uBA5IA,WA6IA,SAIA,OAHA,6BACA,+BACA,iCACA,2CACA,IAEA,uBApJA,WAqJA,SAGA,OAFA,iCACA,kCACA,2CACA,IAMA,aA/JA,WA+JA,WACA,2BAEA,uEACA,oDACA,4BACA,qBACA,0BAEA,qBACA,8BAIA,WACA,wCACA,wDACA,6DACA,qBAEA,wBAGA,oGACA,yGAIA,wDACA,mBACA,oBAGA,IAFA,kBACA,yBACA,IAEA,kEAEA,OAGA,GADA,cACA,oBAGA,MAEA,sBACA,MACA,yBACA,YAEA,qBACA,WACA,wBAIA,iCAaA,gBApOA,SAoOA,gBACA,uDACA,oBACA,OACA,OACA,OACA,MACA,OACA,UACA,MACA,gBAGA,WACA,IACA,uCAGA,eACA,OACA,SACA,oCACA,SAEA,wBAIA,OADA,eACA,GAWA,aA3QA,SA2QA,GAOA,OANA,wBACA,+BACA,mBACA,oBACA,6BAEA,MASA,OA3RA,WA2RA,qEAKA,OAJA,wBACA,sCACA,GAEA,MASA,OAzSA,SAySA,GAEA,OADA,4BACA,MAMA,eAjTA,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BA,uEACA,kCACA,QACA,iCACA,cACA,MACA,iCAEA,oBACA,sCACA,8CACA,+CACA,QACA,iCACA,aACA,gBACA,oBACA,mCACA,kBACA,yBACA,KAEA,kBACA,eACA,WAKA,kBACA,eACA,WAMA,qBAjEA,SAiEA,cACA,kCACA,QACA,4CACA,gBACA,oBACA,mBACA,yBACA,KAEA,kBACA,eACA,YAMA,YACA,uB,OChHIA,EAAY,YACd,GHRW,WAAa,IAAIupG,EAAI/qJ,KAASgrJ,EAAGD,EAAIE,eAAmBzwH,EAAGuwH,EAAIG,MAAM1wH,IAAIwwH,EAAG,OAAOxwH,EAAG,cAAc,CAACl0B,MAAM,CAAC,wBAAwBykJ,EAAIxqJ,KAAKvD,EAAE,4CAA4C,oBAAoB+tJ,EAAIy9H,kBAAkB,qBAAqBz9H,EAAI09H,qBAAqB,aAAa19H,EAAI01D,YAAY,CAACjmL,EAAG,WAAW,CAACkjI,KAAK,UAAU,CAAC3S,EAAIK,GAAG,WAAW,IAAI,KAC7V,IGUpB,EACA,KACA,KACA,MAIa,UAAA5pG,E,6CClBf,I,QCAqO,ECkBrO,CACA,yBACA,OACA,0BACA,4BACA,oBACA,iBACA,sBAEA,KATA,WAUA,OACA,sCACA,0CACA,0BACA,aACA,cAGA,QAlBA,WAmBA,4BACA,0BAEA,SACA,qBADA,WACA,WACA,qCACA,oEACA,wEACA,kDACA,wCACA,yHAEA,OACA,mBACA,aACA,EACA,QACA,aACA,iBACA,EACA,EACA,CACA,kBACA,kCAKA,kBAGA,kBA5BA,WA6BA,qDACA,0EAGA,kBAjCA,WAiCA,WACA,kCACA,QACA,iDACA,cACA,mBAGA,iEACA,8BACA,4DAGA,kBACA,eACA,WAMA,mBAtDA,WAsDA,uEACA,kCACA,QACA,kCACA,cACA,MACA,kCAEA,oBACA,wDACA,gDACA,kCAGA,kBACA,eACA,WAMA,qBA5EA,SA4EA,cACA,kCACA,QACA,6CACA,gBACA,oBACA,mCACA,+BACA,kBACA,yBACA,KAEA,kBACA,eACA,WAMA,SAhGA,WAgGA,WACA,kCACA,QACA,kCACA,aACA,gBACA,oBACA,mCACA,+BACA,kBACA,yBACA,KAEA,kBACA,eACA,YAMA,YACA,uB,OCvJIA,EAAY,YACd,GHRW,WAAa,IAAIupG,EAAI/qJ,KAASgrJ,EAAGD,EAAIE,eAAmBzwH,EAAGuwH,EAAIG,MAAM1wH,IAAIwwH,EAAG,OAAOxwH,EAAG,cAAc,CAACl0B,MAAM,CAAC,wBAAwBykJ,EAAIxqJ,KAAKvD,EAAE,iDAAiD,oBAAoB+tJ,EAAI29H,mBAAmB,qBAAqB39H,EAAI09H,qBAAqB,qBAAqB19H,EAAI49H,kBAAkB,aAAa59H,EAAI01D,UAAU,sBAAsB,KAAK,CAACjmL,EAAG,WAAW,CAACkjI,KAAK,UAAU,CAAC3S,EAAIK,GAAG,WAAW,IAAI,KACva,IGUpB,EACA,KACA,KACA,MAIa,UAAA5pG,E,6CClBf,I,oiECCA,ICDsO,EDCtO,CACA,gCACA,OACA,UACA,YACA,aAEA,iBACA,WACA,aAEA,mBACA,WACA,aAEA,gBACA,WACA,aAEA,eACA,WADA,mBAGA,WAGA,WACA,UADA,mBAGA,wCAIA,KAhCA,WAiCA,OACA,wGACA,cADA,QACA,IAEA,eACA,aACA,OACA,aACA,aACA,gBAKA,QA/CA,WAgDA,+BAEA,SACA,uBADA,WAEA,IADA,sBACA,GACA,oBACA,8CAEA,8DACA,mBACA,sBAEA,2BACA,uBACA,yBACA,oBAGA,sDACA,mBACA,cAEA,2BACA,gCAGA,6BACA,YACA,YACA,0BACA,yBA1BA,qCA8BA,gBAhCA,WAgCA,2EACA,mCACA,gDAEA,iEAEA,WAtCA,WAsCA,WACA,sBACA,cACA,kBACA,UACA,iBACA,aACA,aACA,WAEA,yEAEA,cAlDA,SAkDA,GACA,mCACA,cACA,gBAEA,mBAGA,+BA1DA,SA0DA,aACA,UACA,WACA,oGACA,SACA,uBACA,8DACA,8FACA,QACA,YAIA,UACA,6BADA,WAEA,mEACA,MADA,KAEA,MAFA,KAEA,kB,gBEtHIA,EAAY,YACd,GHTW,WAAa,IAAIupG,EAAI/qJ,KAASgrJ,EAAGD,EAAIE,eAAmBzwH,EAAGuwH,EAAIG,MAAM1wH,IAAIwwH,EAAG,OAAOxwH,EAAG,MAAM,CAAEuwH,EAAI69H,cAAc9nR,OAAS,EAAG05B,EAAG,MAAM,CAAC8wH,YAAY,qBAAqB,CAAC9wH,EAAG,SAAS,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gEAAgE+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAKuwH,EAAIwW,GAAIxW,EAAiB,eAAE,SAAS52G,GAAO,OAAO3Z,EAAG,KAAK,CAACn9B,IAAI82C,GAAO,CAAC42G,EAAIM,GAAGN,EAAIQ,GAAGp3G,SAAY,KAAK42G,EAAIngE,KAAKmgE,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,kCAAkC,CAAC9wH,EAAG,MAAM,CAAC8wH,YAAY,cAAc,CAAC9wH,EAAG,QAAQ,CAACl0B,MAAM,CAAC,IAAM,oCAAoC,CAACk0B,EAAG,OAAO,CAACl0B,MAAM,CAAC,MAAQ,aAAa,CAACykJ,EAAIM,GAAG,OAAON,EAAIM,GAAG,IAAIN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,0CAA0C,cAAc+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,iEAAiE,CAAC9wH,EAAG,MAAM,CAAC8wH,YAAY,YAAY,CAAC9wH,EAAG,QAAQ,CAAC+9H,WAAW,CAAC,CAACl8J,KAAK,QAAQ+3K,QAAQ,UAAUr3K,MAAOguJ,EAAItuI,SAAa,KAAEgtJ,WAAW,kBAAkBne,YAAY,+BAA+BhlJ,MAAM,CAAC,KAAO,OAAO,KAAO,mCAAmC,GAAK,kCAAkC,YAAcykJ,EAAIxqJ,KAAKvD,EAAE,sDAAsDwuJ,SAAS,CAAC,MAAST,EAAItuI,SAAa,MAAG3c,GAAG,CAAC,MAAQ,SAASytJ,GAAWA,EAAOp+I,OAAOg9H,WAAqB4e,EAAIgjB,KAAKhjB,EAAItuI,SAAU,OAAQ8wI,EAAOp+I,OAAOpS,iBAAiBguJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,QAAQ,CAAC9wH,EAAG,SAAS,CAAC8wH,YAAY,aAAahlJ,MAAM,CAAC,KAAO,UAAUxG,GAAG,CAAC,MAAQirJ,EAAI89H,aAAa,CAAC99H,EAAIM,GAAG,aAAaN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2DAA2D,kBAAkB+tJ,EAAIM,GAAG,KAAKN,EAAIwW,GAAIxW,EAAY,UAAE,SAAS+9H,EAAQC,GAAc,OAAOvuP,EAAG,OAAO,CAACn9B,IAAIyrR,EAAQhnR,IAAI,CAAGgnR,EAAQ5pM,MAA4a6rE,EAAIngE,KAAza,CAACpwD,EAAG,QAAQ,CAACl0B,MAAM,CAAC,aAAe,MAAM,KAAO,SAAS,KAAOykJ,EAAIi+H,+BAA+B,OAAQD,EAAc,OAAOv9H,SAAS,CAAC,MAAQs9H,EAAQhnR,MAAMipJ,EAAIM,GAAG,KAAMy9H,EAAiB,UAAEtuP,EAAG,QAAQ,CAACl0B,MAAM,CAAC,MAAQ,IAAI,aAAe,MAAM,KAAO,SAAS,KAAOykJ,EAAIi+H,+BAA+B,OAAQD,EAAc,YAAY,GAAKh+H,EAAIi+H,+BAA+B,KAAMD,EAAc,eAAeh+H,EAAIngE,OAAgB,MAAKmgE,EAAIM,GAAG,KAAK7wH,EAAG,QAAQ,CAAC8wH,YAAY,0EAA0E,CAAC9wH,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gDAAgD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gDAAgD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sDAAsD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,uDAAuD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,QAAQ,CAACl0B,MAAM,CAAC,GAAK,iBAAiB,CAACykJ,EAAIwW,GAAIxW,EAAY,UAAE,SAAS+9H,EAAQC,GAAc,OAAOvuP,EAAG,KAAK,CAACn9B,IAAIyrR,EAAQhnR,IAAI,CAAGgnR,EAAQG,UAG30Cl+H,EAAIngE,KAHk1C,CAAEk+L,EAAiB,UAAE,CAACtuP,EAAG,KAAK,CAACA,EAAG,MAAM,CAAC8wH,YAAY,gDAAgDmvB,YAAY,CAAC,gBAAgB,QAAQ,CAACjgJ,EAAG,QAAQ,CAAC8wH,YAAY,gCAAgChlJ,MAAM,CAAC,YAAcykJ,EAAIxqJ,KAAKvD,EAAE,yCAAyC,KAAO,SAAS,aAAe,MAAM,SAAW,KAAK,KAAO+tJ,EAAIi+H,+BAA+B,OAAQD,EAAc,gBAAgB,GAAKh+H,EAAIi+H,+BAA+B,KAAMD,EAAc,uBAAuBh+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,MAAM,CAAC8wH,YAAY,gCAAgCmvB,YAAY,CAAC,gBAAgB,QAAQ,CAACjgJ,EAAG,MAAM,CAAC8wH,YAAY,YAAY,CAAC9wH,EAAG,QAAQ,CAAC8wH,YAAY,2CAA2CmvB,YAAY,CAAC,OAAS,QAAQn0K,MAAM,CAAC,YAAcykJ,EAAIxqJ,KAAKvD,EAAE,yCAAyC,SAAW,WAAW,KAAO,OAAO,GAAK+tJ,EAAIi+H,+BAA+B,KAAMD,EAAc,QAAQ,KAAOh+H,EAAIi+H,+BAA+B,OAAQD,EAAc,iBAAiBh+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,MAAM,CAAC8wH,YAAY,gCAAgCmvB,YAAY,CAAC,gBAAgB,QAAQ,CAACjgJ,EAAG,MAAM,CAAC8wH,YAAY,YAAY,CAAC9wH,EAAG,SAAS,CAAC+9H,WAAW,CAAC,CAACl8J,KAAK,QAAQ+3K,QAAQ,UAAUr3K,MAAO+rR,EAAkB,WAAEr/G,WAAW,uBAAuBne,YAAY,gCAAgChlJ,MAAM,CAAC,GAAKykJ,EAAIi+H,+BAA+B,KAAMD,EAAc,cAAc,KAAOh+H,EAAIi+H,+BAA+B,OAAQD,EAAc,eAAejpR,GAAG,CAAC,OAAS,SAASytJ,GAAQ,IAAImxD,EAAgBr3M,MAAM3J,UAAUmuB,OAAO5vB,KAAKsxJ,EAAOp+I,OAAO9J,SAAQ,SAAS9I,GAAG,OAAOA,EAAEmF,YAAWuM,KAAI,SAAS1R,GAAgD,MAAnC,WAAYA,EAAIA,EAAEs9K,OAASt9K,EAAEQ,SAAoBguJ,EAAIgjB,KAAK+6G,EAAS,aAAcv7H,EAAOp+I,OAAOmzI,SAAWo8D,EAAgBA,EAAc,OAAO3zD,EAAIwW,GAAIxW,EAAgC,8BAAE,SAASl8C,GACjiJ,IAAIhxC,EAAQgxC,EAAIhxC,MACZ9gE,EAAQ8xG,EAAI9xG,MAChB,OAAOy9B,EAAG,SAAS,CAACn9B,IAAIN,EAAMyuJ,SAAS,CAAC,MAAQzuJ,IAAQ,CAACguJ,EAAIM,GAAG,yBAAyBN,EAAIQ,GAAG1tF,GAAO,6BAA4B,UAAU,CAACrjC,EAAG,KAAK,CAACA,EAAG,OAAO,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGu9H,EAAQI,iBAAiBn+H,EAAIM,GAAG,KAAK7wH,EAAG,QAAQ,CAACl0B,MAAM,CAAC,KAAO,SAAS,KAAOykJ,EAAIi+H,+BAA+B,OAAQD,EAAc,iBAAiBv9H,SAAS,CAAC,MAAQs9H,EAAQI,kBAAkBn+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,OAAO,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGu9H,EAAQtpR,SAASurJ,EAAIM,GAAG,KAAK7wH,EAAG,QAAQ,CAACl0B,MAAM,CAAC,KAAO,SAAS,KAAOykJ,EAAIi+H,+BAA+B,OAAQD,EAAc,SAASv9H,SAAS,CAAC,MAAQs9H,EAAQtpR,UAAUurJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,OAAO,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGu9H,EAAQK,eAAep+H,EAAIM,GAAG,KAAK7wH,EAAG,QAAQ,CAACl0B,MAAM,CAAC,KAAO,SAAS,KAAOykJ,EAAIi+H,+BAA+B,OAAQD,EAAc,eAAev9H,SAAS,CAAC,MAAQs9H,EAAQK,iBAAiBp+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,MAAM,CAAC8wH,YAAY,iBAAiB,CAAC9wH,EAAG,SAAS,CAAC8wH,YAAY,gBAAgBhlJ,MAAM,CAAC,GAAM,0BAA6BwiR,EAAU,GAAG,KAAO,UAAUhpR,GAAG,CAAC,MAAQ,SAASytJ,GAAQ,OAAOxC,EAAIq+H,gBAAgBN,MAAY,CAAC/9H,EAAIM,GAAG,mBAAmBN,EAAIQ,GAAGu9H,EAAQO,UAAYt+H,EAAIxqJ,KAAKvD,EAAE,kBAAoB+tJ,EAAIxqJ,KAAKvD,EAAE,iBAAiB,oBAAoB+tJ,EAAIM,GAAG,KAAK7wH,EAAG,SAAS,CAAC8wH,YAAY,wBAAwBhlJ,MAAM,CAAC,GAAM,kBAAqBwiR,EAAU,GAAG,KAAO,UAAUhpR,GAAG,CAAC,MAAQ,SAASytJ,GAAQ,OAAOxC,EAAIu+H,cAAcR,MAAY,CAAC/9H,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mBAAmB,0BAAmC,MAAK+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAAC8wH,YAAY,aAAa,CAAC9wH,EAAG,KAAK,CAACl0B,MAAM,CAAC,QAAU,MAAM,CAACykJ,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kEAAkE,MAAM,KACpmD,IGQpB,EACA,KACA,KACA,MAIa,UAAAwkD,E,6CCnBf,I,QCA+N,ECwB/N,CACA,yBACA,OACA,aACA,qBAEA,YACA,+B,gBCvBIA,EAAY,YACd,GHTW,WAAa,IAAIupG,EAAI/qJ,KAASgrJ,EAAGD,EAAIE,eAAmBzwH,EAAGuwH,EAAIG,MAAM1wH,IAAIwwH,EAAG,OAAOxwH,EAAG,uBAAuBuwH,EAAI8W,GAAG,CAACv7J,MAAM,CAAC,KAAOykJ,EAAI9pJ,KAAK,gBAAgB8pJ,EAAIw+H,aAAa,QAAU,iBAAiBjnH,YAAYvX,EAAI6W,GAAG,CAAC,CAACvkK,IAAI,UAAUggJ,GAAG,SAASxuC,GACpQ,IAAI42F,EAAc52F,EAAI42F,YACtB,MAAO,CAACjrK,EAAG,MAAM,CAAC8wH,YAAY,QAAQ,CAAC9wH,EAAG,MAAM,CAAC8wH,YAAY,qCAAqC,CAAC9wH,EAAG,IAAI,CAAC8wH,YAAY,oCAAoCmvB,YAAY,CAAC,OAAS,OAAO,MAAQ,UAAU1vB,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAAC8wH,YAAY,cAAcE,SAAS,CAAC,UAAYT,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qCAAqC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,SAAS,CAAC8wH,YAAY,yBAAyBhlJ,MAAM,CAAC,KAAO,SAAS,aAAa,SAASxG,GAAG,CAAC,MAAQ2lM,IAAc,CAACjrK,EAAG,IAAI,CAAC8wH,YAAY,uDAAuDmvB,YAAY,CAAC,OAAS,OAAO,MAAQ,gBAAgB1vB,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,QAAQ,CAAC9wH,EAAG,IAAI,CAAC8wH,YAAY,8DAA8D,CAACP,EAAIM,GAAG,WAAWN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,wCAAwC,cAAc+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,QAAQ,CAAC9wH,EAAG,MAAM,CAAC8wH,YAAY,eAAehlJ,MAAM,CAAC,IAAM,EAAQ,IAAwC,IAAM,2BAA2BykJ,EAAIgZ,eACh8B,IGSpB,EACA,KACA,KACA,MAIa,UAAAviH,E,6CCnBf,I,QCAgO,ECwBhO,CACA,0BACA,OACA,aACA,qBAEA,YACA,+B,gBCvBIA,EAAY,YACd,GHTW,WAAa,IAAIupG,EAAI/qJ,KAASgrJ,EAAGD,EAAIE,eAAmBzwH,EAAGuwH,EAAIG,MAAM1wH,IAAIwwH,EAAG,OAAOxwH,EAAG,uBAAuBuwH,EAAI8W,GAAG,CAACv7J,MAAM,CAAC,KAAOykJ,EAAI9pJ,KAAK,gBAAgB8pJ,EAAIw+H,aAAa,QAAU,kBAAkBjnH,YAAYvX,EAAI6W,GAAG,CAAC,CAACvkK,IAAI,UAAUggJ,GAAG,SAASxuC,GACrQ,IAAI42F,EAAc52F,EAAI42F,YACtB,MAAO,CAACjrK,EAAG,MAAM,CAAC8wH,YAAY,QAAQ,CAAC9wH,EAAG,MAAM,CAAC8wH,YAAY,qCAAqC,CAAC9wH,EAAG,IAAI,CAAC8wH,YAAY,qCAAqCmvB,YAAY,CAAC,OAAS,OAAO,MAAQ,UAAU1vB,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAAC8wH,YAAY,cAAcE,SAAS,CAAC,UAAYT,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sCAAsC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,SAAS,CAAC8wH,YAAY,yBAAyBhlJ,MAAM,CAAC,KAAO,SAAS,aAAa,SAASxG,GAAG,CAAC,MAAQ2lM,IAAc,CAACjrK,EAAG,IAAI,CAAC8wH,YAAY,uDAAuDmvB,YAAY,CAAC,OAAS,OAAO,MAAQ,gBAAgB1vB,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,QAAQ,CAAC9wH,EAAG,IAAI,CAAC8wH,YAAY,8DAA8D,CAACP,EAAIM,GAAG,WAAWN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,yCAAyC,cAAc+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,QAAQ,CAAC9wH,EAAG,MAAM,CAAC8wH,YAAY,eAAehlJ,MAAM,CAAC,IAAM,EAAQ,IAAyC,IAAM,2BAA2BykJ,EAAIgZ,eACp8B,IGSpB,EACA,KACA,KACA,MAIa,UAAAviH,E,6CCnBf,I,gBCA+N,EC2I/N,CACA,yBACA,OACA,oBACA,gBACA,iBACA,yBACA,wBACA,8BAEA,YACA,0BACA,6BAEA,KAdA,WAeA,OACA,gBACA,gBAGA,UACA,WADA,WAEA,cAIA,OAHA,eACA,YAEA,IAGA,QA7BA,WA8BA,IACA,EADA,yCACA,kCACA,kCAEA,SACA,yBADA,SACA,cACA,0CACA,gBACA,0BAEA,+CACA,gHAGA,WAVA,SAUA,GACA,2BACA,WACA,sEAEA,gDAGA,aAlBA,SAkBA,GACA,mBACA,2CACA,WAEA,QACA,wBACA,cACA,OACA,eACA,eACA,wBACA,wHACA,gBACA,kBAEA,oBACA,6D,gBCxMIA,EAAY,YACd,GHTW,WAAa,IAAIupG,EAAI/qJ,KAASgrJ,EAAGD,EAAIE,eAAmBzwH,EAAGuwH,EAAIG,MAAM1wH,IAAIwwH,EAAG,OAAOxwH,EAAG,oBAAoB,CAAC8wH,YAAY,sBAAsBhlJ,MAAM,CAAC,gBAAgBykJ,EAAIW,cAAc5rJ,GAAG,CAAC,KAAOirJ,EAAInzE,YAAY0qF,YAAYvX,EAAI6W,GAAG,CAAC,CAACvkK,IAAI,UAAUggJ,GAAG,WAAW,MAAO,CAAC7iH,EAAG,MAAM,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sCAAsC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,kBAAkB,CAAC9wH,EAAG,IAAI,CAAC8wH,YAAY,aAAa,CAACP,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,IAAI,CAAC8wH,YAAY,aAAa,CAACP,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,IAAI,CAAC8wH,YAAY,aAAa,CAACP,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,IAAI,CAAC8wH,YAAY,aAAa,CAACP,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gDAAgD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,QAAQ,CAAC8wH,YAAY,gCAAgC,CAAC9wH,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2CAA2C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,4CAA4C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qCAAqC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2CAA2C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,4CAA4C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qDAAqD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sDAAsD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2CAA2C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,oDAAoD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,iDAAiD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qDAAqD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,yCAAyC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mDAAmD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,uCAAuC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gDAAgD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,6CAA6C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,iDAAiD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,4CAA4C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qDAAqD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sDAAsD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,oCAAoC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,6CAA6C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,0CAA0C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qCAAqC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2CAA2C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAAC8wH,YAAY,cAAc,CAAC9wH,EAAG,KAAK,CAAC8wH,YAAY,yBAAyBhlJ,MAAM,CAAC,QAAU,MAAM,CAACykJ,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,wDAAwD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qDAAqD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,yDAAyD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,wDAAwD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qDAAqD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,yDAAyD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,wDAAwD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qDAAqD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,yDAAyD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAAC8wH,YAAY,cAAc,CAAC9wH,EAAG,KAAK,CAAC8wH,YAAY,yBAAyBhlJ,MAAM,CAAC,QAAU,MAAM,CAACykJ,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,uDAAuD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,oDAAoD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,wDAAwD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qDAAqD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8DAA8D+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2DAA2D+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+DAA+D+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,oDAAoD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,6DAA6D+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACl0B,MAAM,CAAC,cAAc,eAAe,CAACykJ,EAAIM,GAAG,eAAeN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qDAAsD,CAAEqD,OAAQ0qJ,EAAIyyD,cAAe,gBAAgBzyD,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACl0B,MAAM,CAAC,cAAc,gBAAgB,CAACykJ,EAAIM,GAAG,eAAeN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAG,yDAA2D+tJ,EAAIy+H,QAAU,KAAO,MAAQ,OAAQ,kBAAkBz+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2DAA2D+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mDAAoD,CAAEqD,OAAQ0qJ,EAAIyyD,iBAAkBzyD,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAG,uDAAyD+tJ,EAAIy+H,QAAU,KAAO,MAAQ,kBAAmB/qH,OAAM,GAAM,CAACphK,IAAI,gBAAgBggJ,GAAG,WAAW,MAAO,CAAC7iH,EAAG,uBAAuB,CAACq0E,IAAI,eAAevoG,MAAM,CAAC,gBAAgBykJ,EAAIhiH,aAAa,WAAagiH,EAAIqmE,YAAYtxN,GAAG,CAAC,sBAAsB,SAASytJ,GAAQxC,EAAIhiH,aAAawkH,GAAQ,uBAAuB,SAASA,GAAQxC,EAAIhiH,aAAawkH,GAAQ,oBAAoB,SAASA,GAAQxC,EAAIqmE,WAAW7jE,GAAQ,OAASxC,EAAI26C,eAAe,CAAC36C,EAAIM,GAAG,WAAWN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C,cAAcyhK,OAAM,SACprQ,IGWpB,EACA,KACA,WACA,MAIa,UAAAj9G,E,6CCnBf,I,gBCA+N,ECwJ/N,CACA,yBACA,OACA,oBACA,gBACA,iBACA,yBACA,wBACA,6BACA,gBAEA,YACA,4BACA,2BAEA,KAfA,WAgBA,OACA,gBACA,gBAGA,UACA,WADA,WAEA,cAIA,OAHA,eACA,aAEA,IAGA,QA9BA,WA+BA,IACA,EADA,yCACA,kCACA,kCAEA,SACA,yBADA,SACA,cACA,0CACA,gBACA,0BAEA,+CACA,gHAGA,WAVA,SAUA,GACA,2BACA,WACA,sEAEA,gDAGA,aAlBA,SAkBA,GACA,mBACA,2CACA,WAEA,QACA,wBACA,cACA,OACA,eACA,eACA,wBACA,wHACA,gBACA,uB,OCpNIA,EAAY,YACd,GHRW,WAAa,IAAIupG,EAAI/qJ,KAASgrJ,EAAGD,EAAIE,eAAmBzwH,EAAGuwH,EAAIG,MAAM1wH,IAAIwwH,EAAG,OAAOxwH,EAAG,oBAAoB,CAAC8wH,YAAY,sBAAsBhlJ,MAAM,CAAC,gBAAgBykJ,EAAIW,cAAc5rJ,GAAG,CAAC,KAAOirJ,EAAInzE,YAAY0qF,YAAYvX,EAAI6W,GAAG,CAAC,CAACvkK,IAAI,UAAUggJ,GAAG,WAAW,MAAO,CAAC7iH,EAAG,MAAM,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sCAAsC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,kBAAkB,CAAC9wH,EAAG,IAAI,CAAC8wH,YAAY,aAAa,CAACP,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,IAAI,CAAC8wH,YAAY,aAAa,CAACP,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,IAAI,CAAC8wH,YAAY,aAAa,CAACP,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gDAAgD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,QAAQ,CAAC8wH,YAAY,gCAAgC,CAAC9wH,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2CAA2C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,4CAA4C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAc,SAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2CAA2C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAoB,eAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,oDAAoD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACl0B,MAAM,CAAC,cAAc,eAAe,CAACykJ,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,4CAA6C,CAAEqD,OAAQ0qJ,EAAIyyD,cAAe,gBAAgBzyD,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACl0B,MAAM,CAAC,cAAc,gBAAgB,CAACykJ,EAAIM,GAAG,eAAeN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAG,gDAAkD+tJ,EAAIy+H,QAAU,KAAO,MAAQ,OAAQ,kBAAkBz+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAkB,aAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,0CAA2C,CAAEqD,OAAQ0qJ,EAAIyyD,iBAAkBzyD,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAG,8CAAgD+tJ,EAAIy+H,QAAU,KAAO,MAAQ,YAAaz+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAuB,kBAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,uDAAuD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAAgD,CAAEqD,OAAQ0qJ,EAAIyyD,cAAe,gBAAgBzyD,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAG,eAAeN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAG,mDAAqD+tJ,EAAIy+H,QAAU,KAAO,MAAQ,OAAQ,kBAAkBz+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAwB,mBAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,wDAAwD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gDAAiD,CAAEqD,OAAQ0qJ,EAAIyyD,iBAAkBzyD,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAG,oDAAsD+tJ,EAAIy+H,QAAU,KAAO,MAAQ,YAAaz+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAwB,mBAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,wDAAwD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAMuwH,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,yDAAyD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAe,UAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAMuwH,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gDAAgD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAqB,gBAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qDAAqD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAMuwH,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sDAAsD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAoB,eAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,oDAAoD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAMuwH,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qDAAqD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAkB,aAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAMuwH,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mDAAmD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAkB,aAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAMuwH,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mDAAmD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAkB,aAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAMuwH,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mDAAmD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAkB,aAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAkD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mDAAmD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAe,UAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,4CAA4C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gDAAgD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAgB,WAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gDAAgD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,6CAA6C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,iDAAiD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAAuB,kBAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,uDAAuD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAAgD,CAAEysR,WAAY,OAAQC,YAAa,WAAY,gBAAgB3+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAG,cAAcR,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIzoF,QAA0B,qBAAMyoF,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,0DAA0D+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,kDAAmD,CAAEysR,WAAY,OAAQC,YAAa,WAAY,gBAAgB3+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAG,mBAAmBkT,OAAM,GAAM,CAACphK,IAAI,gBAAgBggJ,GAAG,WAAW,MAAO,CAAC7iH,EAAG,uBAAuB,CAACq0E,IAAI,eAAevoG,MAAM,CAAC,gBAAgBykJ,EAAIhiH,aAAa,WAAagiH,EAAIqmE,YAAYtxN,GAAG,CAAC,sBAAsB,SAASytJ,GAAQxC,EAAIhiH,aAAawkH,GAAQ,uBAAuB,SAASA,GAAQxC,EAAIhiH,aAAawkH,GAAQ,oBAAoB,SAASA,GAAQxC,EAAIqmE,WAAW7jE,GAAQ,OAASxC,EAAI26C,eAAe,CAAC36C,EAAIM,GAAG,WAAWN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,uCAAuC,cAAcyhK,OAAM,SAC1mP,IGUpB,EACA,KACA,KACA,MAIa,UAAAj9G,E,6CClBf,ICAyN,ECoCzN,CACA,oBACA,OACA,YACA,kB,gBChCIA,EAAY,YACd,GHTW,WAAa,IAAIupG,EAAI/qJ,KAASgrJ,EAAGD,EAAIE,eAAmBzwH,EAAGuwH,EAAIG,MAAM1wH,IAAIwwH,EAAG,OAAOxwH,EAAG,MAAM,CAACA,EAAG,IAAI,CAAC8wH,YAAY,6BAA6BhlJ,MAAM,CAAC,KAAOykJ,EAAI4+H,WAAW,CAACnvP,EAAG,IAAI,CAAC8wH,YAAY,eAAeP,EAAIM,GAAG,IAAIN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,4BAA4B+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAACigJ,YAAY,CAAC,MAAQ,UAAU1vB,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,OAAO,CAAC9wH,EAAG,QAAQ,CAAC8wH,YAAY,aAAa,CAAC9wH,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2CAA2C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,4CAA4C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2CAA2C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sDAAsD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mCAAmC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,QAAQuwH,EAAIwW,GAAIxW,EAAS,OAAE,SAASvL,GAAM,OAAOhlH,EAAG,KAAK,CAACA,EAAG,KAAK,CAAEglH,EAAwB,oBAAEhlH,EAAG,IAAI,CAACl0B,MAAM,CAAC,KAAOk5I,EAAKn6D,OAAO,CAAC0lE,EAAIM,GAAGN,EAAIQ,GAAG/L,EAAKnjJ,SAASm+B,EAAG,OAAO,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAG/L,EAAKnjJ,WAAW0uJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAG/L,EAAKmmD,UAAU56C,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAG/L,EAAKoqI,oBAAsB7+H,EAAIxqJ,KAAKvD,EAAE,yBAA2B+tJ,EAAIxqJ,KAAKvD,EAAE,4BAA4B+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAG/L,EAAKqqI,oBAAoB9+H,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAAEglH,EAAwB,oBAAEhlH,EAAG,IAAI,CAAC8wH,YAAY,kBAAkBmvB,YAAY,CAAC,OAAS,KAAKn0K,MAAM,CAAC,KAAOk5I,EAAKsqI,aAAa,cAAc,SAAS,CAAC/+H,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,qCAAqCw9B,EAAG,eAAc,WACjkD,IGWpB,EACA,KACA,WACA,MAIa,UAAAgnB,E,6CCnBf,I,gBCA2N,ECiD3N,CACA,qBACA,OACA,iBACA,iBACA,oBACA,0BACA,0BACA,yBAEA,SACA,WADA,SACA,GACA,2BACA,WACA,sEAEA,iDAIA,YACA,iCACA,4B,gBC/DIA,EAAY,YACd,GHTW,WAAa,IAAIupG,EAAI/qJ,KAASgrJ,EAAGD,EAAIE,eAAmBzwH,EAAGuwH,EAAIG,MAAM1wH,IAAIwwH,EAAG,OAAOxwH,EAAG,oBAAoB,CAACl0B,MAAM,CAAC,gBAAgBykJ,EAAIW,cAAc5rJ,GAAG,CAAC,KAAOirJ,EAAInzE,YAAY0qF,YAAYvX,EAAI6W,GAAG,CAAC,CAACvkK,IAAI,UAAUggJ,GAAG,WAAW,MAAO,CAAC7iH,EAAG,MAAM,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sCAAsC+tJ,EAAIM,GAAG,KAAMN,EAAmB,gBAAEvwH,EAAG,MAAM,CAAC8wH,YAAY,aAAa,CAAC9wH,EAAG,MAAM,CAAC8wH,YAAY,iBAAiB,CAACP,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,yCAAyC+tJ,EAAIngE,KAAKmgE,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sCAAsC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,6BAA6B,CAAC9wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,4CAA4C,KAAKw9B,EAAG,OAAO,CAAC8wH,YAAY,WAAWmvB,YAAY,CAAC,iBAAiB,eAAe,CAAC1vB,EAAIM,GAAG,IAAIN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8BAA8B,SAAS+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,gDAAgD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2CAA2C,KAAKw9B,EAAG,OAAO,CAAC8wH,YAAY,WAAWmvB,YAAY,CAAC,iBAAiB,eAAe,CAAC1vB,EAAIM,GAAG,IAAIN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8BAA8B,SAAS+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,6CAA6C,KAAM+tJ,EAAqB,kBAAEvwH,EAAG,OAAO,CAAC8wH,YAAY,WAAWmvB,YAAY,CAAC,iBAAiB,eAAe,CAAC1vB,EAAIM,GAAG,IAAIN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8BAA8B,OAAO+tJ,EAAIngE,OAAOmgE,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,4CAA4C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,iDAAiD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,oCAAoC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,6CAA6C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,8CAA8C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,sDAAsDyhK,OAAM,GAAM,CAACphK,IAAI,gBAAgBggJ,GAAG,WAAW,MAAO,CAAC7iH,EAAG,4BAA4B,CAACq0E,IAAI,eAAevoG,MAAM,CAAC,aAAaykJ,EAAInoE,UAAU,aAAamoE,EAAItoE,UAAU,qBAAqBsoE,EAAIg/H,uBAAuBtrH,OAAM,SACvtE,IGWpB,EACA,KACA,KACA,MAIa,UAAAj9G,E,6CCnBf,I,QCAgP,EC4HhP,CACA,mCACA,OACA,qBACA,2BACA,uBAEA,KAPA,WAQA,OACA,SACA,SACA,cACA,oBACA,iBACA,OACA,cACA,0CAGA,UACA,gBADA,WAEA,uBACA,kBACA,4FAEA,yBACA,8DAEA,WACA,mDAEA,iBACA,6FAKA,qBAlBA,WAmBA,uBACA,2CACA,+CAGA,8CAFA,mDAKA,QA9CA,WA+CA,WAEA,6CACA,kDACA,yBAEA,gFAEA,kEAEA,yEACA,mBACA,qCACA,kBAGA,aACA,mBAEA,gDAGA,kBACA,sFACA,2CAIA,uCACA,kDACA,+BACA,2DAIA,QAlFA,WAmFA,2CAGA,SACA,aADA,SACA,OACA,EADA,OAGA,uBACA,kBACA,KACA,MACA,yBACA,MACA,MACA,WACA,IAIA,EAJA,oCACA,+DACA,gCAEA,mDAGA,EADA,YACA,KAEA,WAEA,MACA,QACA,KAIA,cACA,mBACA,aACA,+BAGA,aAnCA,WAoCA,cACA,mBACA,cACA,YACA,mBACA,0BAGA,aA5CA,WA4CA,WAEA,YADA,iDAKA,GAFA,mBAEA,gCACA,2DAIA,qBAHA,mDAGA,YAFA,iDAEA,YADA,qDAIA,6BAGA,wCACA,8FAEA,eACA,uCACA,iDAIA,sBAtEA,SAsEA,GACA,2BAGA,eA1EA,SA0EA,GACA,6CAEA,uBACA,yCAGA,kCACA,iDAGA,iCArFA,WAsFA,IACA,EADA,kDACA,8DAEA,OADA,4DACA,GAGA,oBA5FA,SA4FA,gBACA,QACA,cACA,6BACA,OACA,UACA,kBAEA,QADA,iBAEA,qBACA,cACA,WACA,cAEA,UACA,yCAEA,+BAKA,cAlHA,SAkHA,GACA,YACA,iBAKA,kBAzHA,WAyHA,kEAIA,OAHA,IACA,+CAEA,wCAGA,oBAhIA,SAgIA,KACA,kDACA,EADA,uGAGA,EAHA,wBAKA,oCAGA,YACA,2C,gBCpVIA,EAAY,YACd,GHTW,WAAa,IAAIupG,EAAI/qJ,KAASgrJ,EAAGD,EAAIE,eAAmBzwH,EAAGuwH,EAAIG,MAAM1wH,IAAIwwH,EAAG,OAAOxwH,EAAG,MAAM,CAAC8wH,YAAY,wBAAwB,CAAEP,EAAS,MAAEA,EAAIK,GAAG,WAAU,WAAW,MAAO,CAAC5wH,EAAG,MAAM,CAAC8wH,YAAY,SAAS,CAAC9wH,EAAG,MAAM,CAAC8wH,YAAY,gBAAgB,CAAC9wH,EAAG,KAAK,CAACuwH,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIi/H,sBAAsBj/H,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,cAAc,CAAoB,gBAAlBP,EAAIq+B,UAA6Br+B,EAAIK,GAAG,WAAU,WAAW,MAAO,CAAC5wH,EAAG,mCAAmC,CAACn9B,IAAI,EAAEiJ,MAAM,CAAC,iBAAiBykJ,EAAIk/H,cAAc,kBAAkBl/H,EAAIm/H,cAAc,YAAYn/H,EAAItmI,SAAS,mBAAmBsmI,EAAI/1F,KAAO,KAAK+1F,EAAIM,GAAG,KAAKN,EAAIwW,GAAIxW,EAAI/1F,KAAO,GAAG,SAASz3D,GAAG,OAAOi9B,EAAG,mCAAmC,CAACn9B,IAAIE,EAAE+I,MAAM,CAAC,iBAAiBykJ,EAAIk/H,cAAc,kBAAkBl/H,EAAIm/H,cAAc,YAAYn/H,EAAItmI,SAAS,mBAAmBlnB,IAAMwtJ,EAAI/1F,KAAO,YAA6B,uBAAlB+1F,EAAIq+B,UAAoCr+B,EAAIK,GAAG,WAAU,WAAW,MAAO,CAAC5wH,EAAG,SAAS,CAAC8wH,YAAY,kBAAkBhlJ,MAAM,CAAC,aAAe,OAAOxG,GAAG,CAAC,OAASirJ,EAAIo/H,wBAAwBp/H,EAAIwW,GAAIxW,EAAmB,iBAAE,SAAStkI,GAAM,OAAO+T,EAAG,SAAS,CAACn9B,IAAIopB,EAAK3kB,GAAG0pJ,SAAS,CAAC,MAAQ/kI,EAAK3kB,KAAK,CAACipJ,EAAIM,GAAG,mBAAmBN,EAAIQ,GAAG9kI,EAAKpqB,MAAM,uBAAsB,OAAyB,SAAlB0uJ,EAAIq+B,UAAsBr+B,EAAIK,GAAG,WAAU,WAAW,MAAO,CAAC5wH,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACl0B,MAAM,CAAC,KAAO,QAAQ,KAAO,OAAO,MAAQ,iBAAiBklJ,SAAS,CAAC,QAAwB,kBAAdT,EAAIhuJ,OAA2B+C,GAAG,CAAC,OAASirJ,EAAIo/H,yBAAyBp/H,EAAIM,GAAG,iBAAiBN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,wBAAwB,kBAAkBw9B,EAAG,QAAQ,CAAC8wH,YAAY,cAAchlJ,MAAM,CAAC,KAAO,QAAQ,KAAO,OAAO,MAAQ,kBAAkBklJ,SAAS,CAAC,QAAwB,mBAAdT,EAAIhuJ,OAA4B+C,GAAG,CAAC,OAASirJ,EAAIo/H,yBAAyBp/H,EAAIM,GAAG,iBAAiBN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,yBAAyB,kBAAkBw9B,EAAG,QAAQ,CAAC8wH,YAAY,cAAchlJ,MAAM,CAAC,KAAO,QAAQ,KAAO,OAAO,MAAQ,oBAAoBklJ,SAAS,CAAC,QAAwB,qBAAdT,EAAIhuJ,OAA8B+C,GAAG,CAAC,OAASirJ,EAAIo/H,yBAAyBp/H,EAAIM,GAAG,iBAAiBN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,2BAA2B,kBAAkBw9B,EAAG,QAAQ,CAAC8wH,YAAY,cAAchlJ,MAAM,CAAC,KAAO,QAAQ,KAAO,OAAO,MAAQ,YAAYklJ,SAAS,CAAC,QAAwB,aAAdT,EAAIhuJ,OAAsB+C,GAAG,CAAC,OAASirJ,EAAIo/H,yBAAyBp/H,EAAIM,GAAG,iBAAiBN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mBAAmB,sBAAwC,eAAlB+tJ,EAAIq+B,UAA4Br+B,EAAIK,GAAG,WAAU,WAAW,MAAO,CAAC5wH,EAAG,MAAM,CAACuwH,EAAIM,GAAG,iBAAiBN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,0CAA0C,kBAAkBw9B,EAAG,QAAQ,CAACl0B,MAAM,CAAC,KAAO,SAAS,KAAO,aAAa,aAAY,GAAMklJ,SAAS,CAAC,OAAQ,WAAaT,EAAIngE,MAAM,GAAGmgE,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,gBAAgB,CAAC9wH,EAAG,SAAS,CAAC8wH,YAAY,MAAMxrJ,GAAG,CAAC,MAAQirJ,EAAIu9H,eAAe,CAACv9H,EAAIM,GAAG,eAAeN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mBAAmB,gBAAgB+tJ,EAAIM,GAAG,KAAK7wH,EAAG,SAAS,CAAC8wH,YAAY,eAAehlJ,MAAM,CAAC,SAAWykJ,EAAIqmE,YAAYtxN,GAAG,CAAC,MAAQirJ,EAAIq/H,eAAe,CAACr/H,EAAIM,GAAG,eAAeN,EAAIQ,GAAGR,EAAIs/H,sBAAsB,oBAAoBt/H,EAAIM,GAAG,KAAK7wH,EAAG,MAAM,CAAC8wH,YAAY,0BAAyBP,EAAIngE,KAAKmgE,EAAIM,GAAG,KAAK7wH,EAAG,SAAS,CAAC8wH,YAAY,iBAAiBhlJ,MAAM,CAAC,SAAwC,IAA7BykJ,EAAIk/H,cAAcnpR,QAAc0qJ,SAAS,CAAC,MAAQT,EAAIq+B,WAAWtpL,GAAG,CAAC,OAASirJ,EAAIguE,eAAe,CAACv+L,EAAG,SAAS,CAACl0B,MAAM,CAAC,SAAW,GAAG,MAAQ,YAAY,CAACykJ,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,iCAAkC,CAAC+rF,MAAOgiE,EAAIk/H,cAAcnpR,aAAaiqJ,EAAIM,GAAG,KAAK7wH,EAAG,SAAS,CAACl0B,MAAM,CAAC,MAAQ,gBAAgB,CAACykJ,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,+CAA+C+tJ,EAAIM,GAAG,KAAK7wH,EAAG,SAAS,CAACl0B,MAAM,CAAC,MAAQ,uBAAuB,CAACykJ,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,mDAAmD+tJ,EAAIM,GAAG,KAAK7wH,EAAG,SAAS,CAACl0B,MAAM,CAAC,MAAQ,SAAS,CAACykJ,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,wCAAwC+tJ,EAAIM,GAAG,KAAK7wH,EAAG,SAAS,CAACl0B,MAAM,CAAC,MAAQ,eAAe,CAACykJ,EAAIM,GAAGN,EAAIQ,GAAGR,EAAIxqJ,KAAKvD,EAAE,iDAAiD,KACr2H,IGWpB,EACA,KACA,WACA,MAIa,UAAAwkD,E","file":"js/app_webpack-7808c5dbd8fcd10f29e7.js","sourcesContent":[" \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 = \"//d3k0uf0fv0v4j.cloudfront.net/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 141);\n","export var analytics = (function($) {\n\n /*\n public\n */\n\n\n // Initialize Analytics::Workforce\n var init = function(settings) {\n $(\"#location-department-filter\").select2();\n $(\"#data-set-filter\").select2();\n\n var datePicker = $('.analytics .input-daterange').datepicker({\n format: 'yyyy-mm-dd',\n language: I18n.locale\n });\n\n datePicker.hide();\n $(\"#checkbox-container\").hide();\n $(\"#clear-custom-date-range\").hide();\n\n prepareDatePicker();\n };\n\n // Returns true if a chart request can be made based on certain requirements, otherwise false\n var canMakeChartRequest = function(chartName, isInactive, locationIds, departmentIds) {\n if (isInactive) { return false; }\n $('#' + chartName + '-chart-box').hide();\n\n if(departmentIds.length === 0 && locationIds.length == 0) {\n var chartClassName = \".\"+chartName;\n analytics.clearCustomDateRange(chartClassName);\n return false;\n }\n\n $('#' + chartName + '-chart-box').show();\n return true;\n };\n\n // When date range is visible\n var clearCustomDateRange = function(chartClassName) {\n $(\".custom-date-range\").show();\n $(\"#clear-custom-date-range\").hide();\n $(\".analytics .input-daterange \").hide();\n $(\".date-range-filter\").fadeTo(500,1.0);\n\n $( chartClassName + \" #date-range-days, \"\n + chartClassName + \" #date-range-weeks, \"\n + chartClassName + \" #date-range-months, \"\n + chartClassName + \" #date-range-previous, \"\n + chartClassName + \" #date-range-next\"\n ).removeClass('inactive');\n };\n\n var filterDateRange = function(dateRange) {\n if ((dateRange === \"Days\") || (dateRange === \"Weeks\") || (dateRange === \"Months\")) {\n return dateRange;\n } else {\n switch ($('#btn-group-date-range .active').attr('id')) {\n case 'date-range-days': return 'Days';\n case 'date-range-weeks': return 'Weeks';\n case 'date-range-months': return 'Months';\n default: return '';\n }\n }\n };\n\n var filterDepartments = function() {\n var departmentIds = [];\n\n var selected = $(\"#location-department-filter\").select2(\"data\");\n $(selected).each(function(index, value) {\n var selectedValue = value.id;\n if(selectedValue.search('department') > -1){\n departmentIds.push(selectedValue.replace('department',''));\n }\n });\n\n return departmentIds;\n };\n\n var filterEndDate = function(prevNext, endDate, dateRange) {\n if(prevNext === \"date-range-previous\"){\n endDate = (dateRange === \"Days\") ? subtractOneDay(endDate) : endDate;\n endDate = (dateRange === \"Weeks\") ? subtractSevenDays(endDate) : endDate;\n endDate = (dateRange === \"Months\") ? subtractOneMonth(endDate) : endDate;\n }\n if(prevNext === \"date-range-next\"){\n endDate = (dateRange === \"Days\") ? addOneDay(endDate) : endDate;\n endDate = (dateRange === \"Weeks\") ? addSevenDays(endDate) : endDate;\n endDate = (dateRange === \"Months\") ? addOneMonth(endDate) : endDate;\n }\n\n return endDate;\n };\n\n var filterLocations = function() {\n var locationIds = [];\n var selected = $(\"#location-department-filter\").select2(\"data\");\n $(selected).each(function(index, value) {\n var selectedValue = value.id;\n if(selectedValue.search('location') > -1){\n locationIds.push(selectedValue.replace('location',''));\n }\n });\n\n return locationIds;\n };\n\n var filterExchangeType = function() {\n if ($(\"#exchange_type_exchange\").is(\":checked\")) {\n return \"exchange\"\n } else if ($(\"#exchange_type_drop\").is(\":checked\")) {\n return \"drop\"\n }\n return \"all\";\n };\n\n var initializePage = function(selector, chartBox, removeLocations) {\n var locationGroup = selector.find('#location-department-filter optgroup#location');\n chartBox.hide();\n removeLocations = removeLocations || false;\n if(removeLocations) locationGroup.remove();\n };\n\n // Hits the appropriate controller to create or update the chart\n var makeChartRequest = function(url, dataHash) {\n $.ajax({\n url: url,\n data: dataHash,\n dataType: \"script\"\n });\n };\n\n var removeOptionGroup = function(locationDepartmentFilter, locationsOptGroup, departmentsOptGroup) {\n var selected = $(\"option:selected\", locationDepartmentFilter);\n if (selected.length === 0) {\n restoreLocationDepartmentFilter(locationDepartmentFilter, locationsOptGroup, departmentsOptGroup);\n return;\n }\n\n (selected.val().search('location') > -1) ? locationDepartmentFilter.find('optgroup#department').remove() : locationDepartmentFilter.find('optgroup#location').remove();\n };\n\n // Gathers custom date range info, then sends a chart request\n // The chart request will retrieve JS from the server and immediately execute it\n var requestCustomDateRange = function(url, filterDataHash, chartName, filterName) {\n var dataHash = buildDataForChartRequest(filterDataHash);\n\n if (dataHash.locations.length === 0 && dataHash.departments.length === 0) {\n $('#' + chartName + '-chart-box').hide();\n $('#' + filterName).hide();\n return;\n }\n makeChartRequest(url, dataHash);\n };\n // Begin the request for an Analytics Report, and return the promise back to the caller\n var makeAsyncChartDataRequest = function(url, filterDataHash, chartName, filterName) {\n var dataHash = buildDataForChartRequest(filterDataHash);\n\n if (dataHash.locations.length === 0 && dataHash.departments.length === 0) {\n $('#' + chartName + '-chart-box').hide();\n $('#' + filterName).hide();\n return;\n }\n return $.ajax({\n url: encodeURI(url),\n data: dataHash,\n dataType: \"json\",\n });\n };\n\n var buildDataForChartRequest = function(filterDataHash) {\n // Retrieve the date formatting used for this datepicker so we can \"undo\"\n var startDate = $(\".analytics #start-date\").datepicker('getDate');\n var endDate = $(\".analytics #end-date\").datepicker('getDate');\n\n // Default is today to a week from now\n if(!startDate && !endDate) {\n startDate = new Date();\n endDate = addSevenDays(new Date());\n $(\".analytics #start-date\").datepicker('setDate', startDate);\n $(\".analytics #end-date\").datepicker('setDate', endDate);\n }\n\n var locationIds = analytics.filterLocations();\n var departmentIds = analytics.filterDepartments();\n var dateRange = \"Days\";\n var dataHash = {\n locations: locationIds,\n departments: departmentIds,\n range: dateRange,\n startDate: startDate,\n endDate: endDate\n };\n // merge the two hashes together\n dataHash = $.extend(dataHash, filterDataHash);\n return dataHash;\n };\n\n // When custom date range is visble\n var selectCustomDateRange = function(url, chartClassName) {\n $(\".custom-date-range\").hide();\n $(\"#clear-custom-date-range\").show();\n $(\".analytics .input-daterange \").show();\n $(\".date-range-filter\").fadeTo(500,0.2);\n\n $( chartClassName + \" #date-range-days, \"\n + chartClassName + \" #date-range-weeks, \"\n + chartClassName + \" #date-range-months, \"\n + chartClassName + \" #date-range-previous, \"\n + chartClassName + \" #date-range-next\"\n ).addClass('inactive');\n };\n\n // Returns a URL for explorting a CSV (ex. used in Ledger analytics page)\n //\n // @return [String]\n //\n var exportURL = function(options) {\n options = options || {};\n var startDate = Date.parse($(\".analytics #start-date\").val()),\n endDate = Date.parse($(\".analytics #end-date\").val()),\n params = [];\n\n _.each(options, function(value, key) {\n params.push(key + \"=\" + value)\n });\n\n // If both start and endDates aren't specified.. return a blank string.\n if (!(startDate && endDate)){\n return \"\";\n } else {\n params.push(\"startDate=\" + startDate.toISOString());\n params.push(\"endDate=\" + endDate.toISOString());\n }\n\n // Gather locationIds and departmentIds\n var locationIds = analytics.filterLocations();\n var departmentIds = analytics.filterDepartments();\n var reportType = '';\n\n if (options.report_type) {\n reportType = options.report_type;\n }\n\n // Skip the location and department handling for reports that don't need it\n if (reportType != 'shift_audits') {\n // If both locations and departments are empty, return 0.\n if (locationIds.length == 0 && departmentIds.length == 0) {\n return \"\";\n }\n\n if (locationIds.length > 0) {\n params.push(\"locations=\" + locationIds.join(','));\n }\n\n if (departmentIds.length > 0) {\n params.push(\"departments=\" + departmentIds.join(','));\n }\n }\n\n var url = window.location.pathname + '.xlsx?' + params.join('&');\n\n return url;\n }\n\n var showLoadingModal = function() {\n var loadingModal = HandlebarsTemplates['shared/processing_modal']({\n loadingHeader: I18n.t('analytics.loading_modal_header'),\n loadingMessage: I18n.t('analytics.loading_modal_message'),\n loadingWarning: I18n.t('analytics.loading_modal_warning'),\n loadingWarningMessage: I18n.t('analytics.loading_modal_warning_message'),\n });\n var loadingDiv = $('#analytics-loading');\n\n loadingDiv.html(loadingModal);\n loadingDiv.show();\n };\n\n var hideLoadingModal = function(spinner, loadingElementId) {\n $('#analytics-loading').hide();\n $('#submit-chart').removeClass('disabled');\n };\n\n var subscribeToAnalyticsReportChannel = function(privatePusherChannel, reportName, successCallback, errorCallback) {\n privatePusherChannel.bind(reportName + '-report-success', function(pusherData) {\n if (pusherData['report_type'] === 'xlsx') {\n var xlsxUri = pusherData['report_uri'] + '.xlsx';\n window.location.href = xlsxUri;\n hideLoadingModal();\n } else {\n $.ajax({\n url: pusherData.report_uri,\n dataType: \"json\",\n }).then(function(analyticsReport) {\n successCallback(analyticsReport);\n });\n }\n });\n\n privatePusherChannel.bind(reportName + '-report-failure', function(pusherData) {\n errorCallback(pusherData);\n });\n };\n\n var displayDateRangeError = function(message) {\n $('.date-range-error').text(message);\n };\n\n var hideDateRangeError = function() {\n $('.date-range-error').text('');\n };\n\n /*\n private\n */\n\n function addOneDay(date){\n return new Date(date.setFullYear(date.getFullYear(), date.getMonth(), date.getDate() + 1));\n }\n\n function addSevenDays(date){\n return new Date(date.setFullYear(date.getFullYear(), date.getMonth(), date.getDate() + 7));\n }\n\n function addOneMonth(date){\n return new Date(date.setFullYear(date.getFullYear(), date.getMonth() + 1));\n }\n\n // When the user first selects the start OR end date, the other date (which is defaulted as blank) will automatically get set\n // Prevents a controller error\n var prepareDatePicker = function() {\n $(\".analytics #start-date\").on(\"change\", function(e) {\n $(this).datepicker(\"hide\");\n $(\".analytics #end-date\").datepicker(\"show\");\n if ($(\".analytics #end-date\").val() == \"\") {\n $(\".analytics #end-date\").val( $(\".analytics #start-date\").val() );\n }\n });\n\n $(\".analytics #end-date\").on(\"change\", function(e) {\n $(this).datepicker(\"hide\");\n if ($(\".analytics #end-date\").val() == \"\") {\n $(\".analytics #end-date\").val( $(\".analytics #start-date\").val() );};\n if ($(\".analytics #start-date\").val() == \"\") {\n $(\".analytics #start-date\").val( $(\".analytics #end-date\").val() );\n }\n });\n };\n\n function restoreLocationDepartmentFilter(locationDepartmentFilter, locationsOptGroup, departmentsOptGroup){\n if(locationDepartmentFilter.find('optgroup#location').length == 0) {\n locationDepartmentFilter.prepend(locationsOptGroup);\n }\n if(locationDepartmentFilter.find('optgroup#department').length == 0) {\n locationDepartmentFilter.append(departmentsOptGroup);\n }\n }\n\n function subtractOneDay(date){\n return new Date(date.setFullYear(date.getFullYear(), date.getMonth(), date.getDate() - 1));\n }\n\n function subtractSevenDays(date){\n return new Date(date.setFullYear(date.getFullYear(), date.getMonth(), date.getDate() - 7));\n }\n\n function subtractOneMonth(date){\n return new Date(date.setFullYear(date.getFullYear(), date.getMonth() - 1));\n }\n\n return {\n init: init,\n canMakeChartRequest: canMakeChartRequest,\n clearCustomDateRange: clearCustomDateRange,\n displayDateRangeError: displayDateRangeError,\n hideDateRangeError: hideDateRangeError,\n filterDateRange: filterDateRange,\n filterDepartments: filterDepartments,\n filterEndDate: filterEndDate,\n filterLocations: filterLocations,\n filterExchangeType: filterExchangeType,\n hideLoadingModal: hideLoadingModal,\n initializePage: initializePage,\n makeAsyncChartDataRequest: makeAsyncChartDataRequest,\n makeChartRequest: makeChartRequest,\n removeOptionGroup: removeOptionGroup,\n requestCustomDateRange: requestCustomDateRange,\n selectCustomDateRange: selectCustomDateRange,\n showLoadingModal: showLoadingModal,\n subscribeToAnalyticsReportChannel: subscribeToAnalyticsReportChannel,\n exportURL: exportURL,\n };\n\n})(jQuery);\n\nwindow.analytics = analytics;\n","/*!\nFullCalendar Core Package v4.4.2\nDocs & License: https://fullcalendar.io/\n(c) 2019 Adam Shaw\n*/\n// Creating\n// ----------------------------------------------------------------------------------------------------------------\nvar elementPropHash = {\n className: true,\n colSpan: true,\n rowSpan: true\n};\nvar containerTagHash = {\n '= rect.left && point.left < rect.right && point.top >= rect.top && point.top < rect.bottom;\n} // Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\n\n\nfunction intersectRects(rect1, rect2) {\n var res = {\n left: Math.max(rect1.left, rect2.left),\n right: Math.min(rect1.right, rect2.right),\n top: Math.max(rect1.top, rect2.top),\n bottom: Math.min(rect1.bottom, rect2.bottom)\n };\n\n if (res.left < res.right && res.top < res.bottom) {\n return res;\n }\n\n return false;\n}\n\nfunction translateRect(rect, deltaX, deltaY) {\n return {\n left: rect.left + deltaX,\n right: rect.right + deltaX,\n top: rect.top + deltaY,\n bottom: rect.bottom + deltaY\n };\n} // Returns a new point that will have been moved to reside within the given rectangle\n\n\nfunction constrainPoint(point, rect) {\n return {\n left: Math.min(Math.max(point.left, rect.left), rect.right),\n top: Math.min(Math.max(point.top, rect.top), rect.bottom)\n };\n} // Returns a point that is the center of the given rectangle\n\n\nfunction getRectCenter(rect) {\n return {\n left: (rect.left + rect.right) / 2,\n top: (rect.top + rect.bottom) / 2\n };\n} // Subtracts point2's coordinates from point1's coordinates, returning a delta\n\n\nfunction diffPoints(point1, point2) {\n return {\n left: point1.left - point2.left,\n top: point1.top - point2.top\n };\n} // Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side\n\n\nvar isRtlScrollbarOnLeft = null;\n\nfunction getIsRtlScrollbarOnLeft() {\n if (isRtlScrollbarOnLeft === null) {\n isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n }\n\n return isRtlScrollbarOnLeft;\n}\n\nfunction computeIsRtlScrollbarOnLeft() {\n var outerEl = createElement('div', {\n style: {\n position: 'absolute',\n top: -1000,\n left: 0,\n border: 0,\n padding: 0,\n overflow: 'scroll',\n direction: 'rtl'\n }\n }, '
');\n document.body.appendChild(outerEl);\n var innerEl = outerEl.firstChild;\n var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n removeElement(outerEl);\n return res;\n} // The scrollbar width computations in computeEdges are sometimes flawed when it comes to\n// retina displays, rounding, and IE11. Massage them into a usable value.\n\n\nfunction sanitizeScrollbarWidth(width) {\n width = Math.max(0, width); // no negatives\n\n width = Math.round(width);\n return width;\n}\n\nfunction computeEdges(el, getPadding) {\n if (getPadding === void 0) {\n getPadding = false;\n }\n\n var computedStyle = window.getComputedStyle(el);\n var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0; // must use offset(Width|Height) because compatible with client(Width|Height)\n\n var scrollbarLeftRight = sanitizeScrollbarWidth(el.offsetWidth - el.clientWidth - borderLeft - borderRight);\n var scrollbarBottom = sanitizeScrollbarWidth(el.offsetHeight - el.clientHeight - borderTop - borderBottom);\n var res = {\n borderLeft: borderLeft,\n borderRight: borderRight,\n borderTop: borderTop,\n borderBottom: borderBottom,\n scrollbarBottom: scrollbarBottom,\n scrollbarLeft: 0,\n scrollbarRight: 0\n };\n\n if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') {\n // is the scrollbar on the left side?\n res.scrollbarLeft = scrollbarLeftRight;\n } else {\n res.scrollbarRight = scrollbarLeftRight;\n }\n\n if (getPadding) {\n res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n }\n\n return res;\n}\n\nfunction computeInnerRect(el, goWithinPadding) {\n if (goWithinPadding === void 0) {\n goWithinPadding = false;\n }\n\n var outerRect = computeRect(el);\n var edges = computeEdges(el, goWithinPadding);\n var res = {\n left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n top: outerRect.top + edges.borderTop,\n bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom\n };\n\n if (goWithinPadding) {\n res.left += edges.paddingLeft;\n res.right -= edges.paddingRight;\n res.top += edges.paddingTop;\n res.bottom -= edges.paddingBottom;\n }\n\n return res;\n}\n\nfunction computeRect(el) {\n var rect = el.getBoundingClientRect();\n return {\n left: rect.left + window.pageXOffset,\n top: rect.top + window.pageYOffset,\n right: rect.right + window.pageXOffset,\n bottom: rect.bottom + window.pageYOffset\n };\n}\n\nfunction computeViewportRect() {\n return {\n left: window.pageXOffset,\n right: window.pageXOffset + document.documentElement.clientWidth,\n top: window.pageYOffset,\n bottom: window.pageYOffset + document.documentElement.clientHeight\n };\n}\n\nfunction computeHeightAndMargins(el) {\n return el.getBoundingClientRect().height + computeVMargins(el);\n}\n\nfunction computeVMargins(el) {\n var computed = window.getComputedStyle(el);\n return parseInt(computed.marginTop, 10) + parseInt(computed.marginBottom, 10);\n} // does not return window\n\n\nfunction getClippingParents(el) {\n var parents = [];\n\n while (el instanceof HTMLElement) {\n // will stop when gets to document or null\n var computedStyle = window.getComputedStyle(el);\n\n if (computedStyle.position === 'fixed') {\n break;\n }\n\n if (/(auto|scroll)/.test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n parents.push(el);\n }\n\n el = el.parentNode;\n }\n\n return parents;\n}\n\nfunction computeClippingRect(el) {\n return getClippingParents(el).map(function (el) {\n return computeInnerRect(el);\n }).concat(computeViewportRect()).reduce(function (rect0, rect1) {\n return intersectRects(rect0, rect1) || rect1; // should always intersect\n });\n} // Stops a mouse/touch event from doing it's native browser action\n\n\nfunction preventDefault(ev) {\n ev.preventDefault();\n} // Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\n\n\nfunction listenBySelector(container, eventType, selector, handler) {\n function realHandler(ev) {\n var matchedChild = elementClosest(ev.target, selector);\n\n if (matchedChild) {\n handler.call(matchedChild, ev, matchedChild);\n }\n }\n\n container.addEventListener(eventType, realHandler);\n return function () {\n container.removeEventListener(eventType, realHandler);\n };\n}\n\nfunction listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n var currentMatchedChild;\n return listenBySelector(container, 'mouseover', selector, function (ev, matchedChild) {\n if (matchedChild !== currentMatchedChild) {\n currentMatchedChild = matchedChild;\n onMouseEnter(ev, matchedChild);\n\n var realOnMouseLeave_1 = function (ev) {\n currentMatchedChild = null;\n onMouseLeave(ev, matchedChild);\n matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1);\n }; // listen to the next mouseleave, and then unattach\n\n\n matchedChild.addEventListener('mouseleave', realOnMouseLeave_1);\n }\n });\n} // Animation\n// ----------------------------------------------------------------------------------------------------------------\n\n\nvar transitionEventNames = ['webkitTransitionEnd', 'otransitionend', 'oTransitionEnd', 'msTransitionEnd', 'transitionend']; // triggered only when the next single subsequent transition finishes\n\nfunction whenTransitionDone(el, callback) {\n var realCallback = function (ev) {\n callback(ev);\n transitionEventNames.forEach(function (eventName) {\n el.removeEventListener(eventName, realCallback);\n });\n };\n\n transitionEventNames.forEach(function (eventName) {\n el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n });\n}\n\nvar DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; // Adding\n\nfunction addWeeks(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n * 7;\n return arrayToUtcDate(a);\n}\n\nfunction addDays(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n;\n return arrayToUtcDate(a);\n}\n\nfunction addMs(m, n) {\n var a = dateToUtcArray(m);\n a[6] += n;\n return arrayToUtcDate(a);\n} // Diffing (all return floats)\n\n\nfunction diffWeeks(m0, m1) {\n return diffDays(m0, m1) / 7;\n}\n\nfunction diffDays(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\n\nfunction diffHours(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\n\nfunction diffMinutes(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\n\nfunction diffSeconds(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / 1000;\n}\n\nfunction diffDayAndTime(m0, m1) {\n var m0day = startOfDay(m0);\n var m1day = startOfDay(m1);\n return {\n years: 0,\n months: 0,\n days: Math.round(diffDays(m0day, m1day)),\n milliseconds: m1.valueOf() - m1day.valueOf() - (m0.valueOf() - m0day.valueOf())\n };\n} // Diffing Whole Units\n\n\nfunction diffWholeWeeks(m0, m1) {\n var d = diffWholeDays(m0, m1);\n\n if (d !== null && d % 7 === 0) {\n return d / 7;\n }\n\n return null;\n}\n\nfunction diffWholeDays(m0, m1) {\n if (timeAsMs(m0) === timeAsMs(m1)) {\n return Math.round(diffDays(m0, m1));\n }\n\n return null;\n} // Start-Of\n\n\nfunction startOfDay(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate()]);\n}\n\nfunction startOfHour(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours()]);\n}\n\nfunction startOfMinute(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours(), m.getUTCMinutes()]);\n}\n\nfunction startOfSecond(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours(), m.getUTCMinutes(), m.getUTCSeconds()]);\n} // Week Computation\n\n\nfunction weekOfYear(marker, dow, doy) {\n var y = marker.getUTCFullYear();\n var w = weekOfGivenYear(marker, y, dow, doy);\n\n if (w < 1) {\n return weekOfGivenYear(marker, y - 1, dow, doy);\n }\n\n var nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n\n if (nextW >= 1) {\n return Math.min(w, nextW);\n }\n\n return w;\n}\n\nfunction weekOfGivenYear(marker, year, dow, doy) {\n var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n var dayStart = startOfDay(marker);\n var days = Math.round(diffDays(firstWeekStart, dayStart));\n return Math.floor(days / 7) + 1; // zero-indexed\n} // start-of-first-week - start-of-year\n\n\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n var fwd = 7 + dow - doy; // first-week day local weekday -- which local weekday is fwd\n\n var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n} // Array Conversion\n\n\nfunction dateToLocalArray(date) {\n return [date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()];\n}\n\nfunction arrayToLocalDate(a) {\n return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month\n a[3] || 0, a[4] || 0, a[5] || 0);\n}\n\nfunction dateToUtcArray(date) {\n return [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()];\n}\n\nfunction arrayToUtcDate(a) {\n // according to web standards (and Safari), a month index is required.\n // massage if only given a year.\n if (a.length === 1) {\n a = a.concat([0]);\n }\n\n return new Date(Date.UTC.apply(Date, a));\n} // Other Utils\n\n\nfunction isValidDate(m) {\n return !isNaN(m.valueOf());\n}\n\nfunction timeAsMs(m) {\n return m.getUTCHours() * 1000 * 60 * 60 + m.getUTCMinutes() * 1000 * 60 + m.getUTCSeconds() * 1000 + m.getUTCMilliseconds();\n}\n\nvar INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nvar PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/; // Parsing and Creation\n\nfunction createDuration(input, unit) {\n var _a;\n\n if (typeof input === 'string') {\n return parseString(input);\n } else if (typeof input === 'object' && input) {\n // non-null object\n return normalizeObject(input);\n } else if (typeof input === 'number') {\n return normalizeObject((_a = {}, _a[unit || 'milliseconds'] = input, _a));\n } else {\n return null;\n }\n}\n\nfunction parseString(s) {\n var m = PARSE_RE.exec(s);\n\n if (m) {\n var sign = m[1] ? -1 : 1;\n return {\n years: 0,\n months: 0,\n days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n (m[5] ? parseInt(m[5], 10) : 0) * 1000 + ( // seconds\n m[6] ? parseInt(m[6], 10) : 0) // ms\n )\n };\n }\n\n return null;\n}\n\nfunction normalizeObject(obj) {\n return {\n years: obj.years || obj.year || 0,\n months: obj.months || obj.month || 0,\n days: (obj.days || obj.day || 0) + getWeeksFromInput(obj) * 7,\n milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n (obj.seconds || obj.second || 0) * 1000 + ( // seconds\n obj.milliseconds || obj.millisecond || obj.ms || 0) // ms\n\n };\n}\n\nfunction getWeeksFromInput(obj) {\n return obj.weeks || obj.week || 0;\n} // Equality\n\n\nfunction durationsEqual(d0, d1) {\n return d0.years === d1.years && d0.months === d1.months && d0.days === d1.days && d0.milliseconds === d1.milliseconds;\n}\n\nfunction isSingleDay(dur) {\n return dur.years === 0 && dur.months === 0 && dur.days === 1 && dur.milliseconds === 0;\n} // Simple Math\n\n\nfunction addDurations(d0, d1) {\n return {\n years: d0.years + d1.years,\n months: d0.months + d1.months,\n days: d0.days + d1.days,\n milliseconds: d0.milliseconds + d1.milliseconds\n };\n}\n\nfunction subtractDurations(d1, d0) {\n return {\n years: d1.years - d0.years,\n months: d1.months - d0.months,\n days: d1.days - d0.days,\n milliseconds: d1.milliseconds - d0.milliseconds\n };\n}\n\nfunction multiplyDuration(d, n) {\n return {\n years: d.years * n,\n months: d.months * n,\n days: d.days * n,\n milliseconds: d.milliseconds * n\n };\n} // Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\n\n\nfunction asRoughYears(dur) {\n return asRoughDays(dur) / 365;\n}\n\nfunction asRoughMonths(dur) {\n return asRoughDays(dur) / 30;\n}\n\nfunction asRoughDays(dur) {\n return asRoughMs(dur) / 864e5;\n}\n\nfunction asRoughMinutes(dur) {\n return asRoughMs(dur) / (1000 * 60);\n}\n\nfunction asRoughSeconds(dur) {\n return asRoughMs(dur) / 1000;\n}\n\nfunction asRoughMs(dur) {\n return dur.years * (365 * 864e5) + dur.months * (30 * 864e5) + dur.days * 864e5 + dur.milliseconds;\n} // Advanced Math\n\n\nfunction wholeDivideDurations(numerator, denominator) {\n var res = null;\n\n for (var i = 0; i < INTERNAL_UNITS.length; i++) {\n var unit = INTERNAL_UNITS[i];\n\n if (denominator[unit]) {\n var localRes = numerator[unit] / denominator[unit];\n\n if (!isInt(localRes) || res !== null && res !== localRes) {\n return null;\n }\n\n res = localRes;\n } else if (numerator[unit]) {\n // needs to divide by something but can't!\n return null;\n }\n }\n\n return res;\n}\n\nfunction greatestDurationDenominator(dur, dontReturnWeeks) {\n var ms = dur.milliseconds;\n\n if (ms) {\n if (ms % 1000 !== 0) {\n return {\n unit: 'millisecond',\n value: ms\n };\n }\n\n if (ms % (1000 * 60) !== 0) {\n return {\n unit: 'second',\n value: ms / 1000\n };\n }\n\n if (ms % (1000 * 60 * 60) !== 0) {\n return {\n unit: 'minute',\n value: ms / (1000 * 60)\n };\n }\n\n if (ms) {\n return {\n unit: 'hour',\n value: ms / (1000 * 60 * 60)\n };\n }\n }\n\n if (dur.days) {\n if (!dontReturnWeeks && dur.days % 7 === 0) {\n return {\n unit: 'week',\n value: dur.days / 7\n };\n }\n\n return {\n unit: 'day',\n value: dur.days\n };\n }\n\n if (dur.months) {\n return {\n unit: 'month',\n value: dur.months\n };\n }\n\n if (dur.years) {\n return {\n unit: 'year',\n value: dur.years\n };\n }\n\n return {\n unit: 'millisecond',\n value: 0\n };\n}\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n// Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left\n// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that.\n\n\nfunction compensateScroll(rowEl, scrollbarWidths) {\n if (scrollbarWidths.left) {\n applyStyle(rowEl, {\n borderLeftWidth: 1,\n marginLeft: scrollbarWidths.left - 1\n });\n }\n\n if (scrollbarWidths.right) {\n applyStyle(rowEl, {\n borderRightWidth: 1,\n marginRight: scrollbarWidths.right - 1\n });\n }\n} // Undoes compensateScroll and restores all borders/margins\n\n\nfunction uncompensateScroll(rowEl) {\n applyStyle(rowEl, {\n marginLeft: '',\n marginRight: '',\n borderLeftWidth: '',\n borderRightWidth: ''\n });\n} // Make the mouse cursor express that an event is not allowed in the current area\n\n\nfunction disableCursor() {\n document.body.classList.add('fc-not-allowed');\n} // Returns the mouse cursor to its original look\n\n\nfunction enableCursor() {\n document.body.classList.remove('fc-not-allowed');\n} // Given a total available height to fill, have `els` (essentially child rows) expand to accomodate.\n// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering\n// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and\n// reduces the available height.\n\n\nfunction distributeHeight(els, availableHeight, shouldRedistribute) {\n // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions,\n // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars.\n var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element\n\n var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE*\n\n var flexEls = []; // elements that are allowed to expand. array of DOM nodes\n\n var flexOffsets = []; // amount of vertical space it takes up\n\n var flexHeights = []; // actual css height\n\n var usedHeight = 0;\n undistributeHeight(els); // give all elements their natural height\n // find elements that are below the recommended height (expandable).\n // important to query for heights in a single first pass (to avoid reflow oscillation).\n\n els.forEach(function (el, i) {\n var minOffset = i === els.length - 1 ? minOffset2 : minOffset1;\n var naturalHeight = el.getBoundingClientRect().height;\n var naturalOffset = naturalHeight + computeVMargins(el);\n\n if (naturalOffset < minOffset) {\n flexEls.push(el);\n flexOffsets.push(naturalOffset);\n flexHeights.push(naturalHeight);\n } else {\n // this element stretches past recommended height (non-expandable). mark the space as occupied.\n usedHeight += naturalOffset;\n }\n }); // readjust the recommended height to only consider the height available to non-maxed-out rows.\n\n if (shouldRedistribute) {\n availableHeight -= usedHeight;\n minOffset1 = Math.floor(availableHeight / flexEls.length);\n minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE*\n } // assign heights to all expandable elements\n\n\n flexEls.forEach(function (el, i) {\n var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1;\n var naturalOffset = flexOffsets[i];\n var naturalHeight = flexHeights[i];\n var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding\n\n if (naturalOffset < minOffset) {\n // we check this again because redistribution might have changed things\n el.style.height = newHeight + 'px';\n }\n });\n} // Undoes distrubuteHeight, restoring all els to their natural height\n\n\nfunction undistributeHeight(els) {\n els.forEach(function (el) {\n el.style.height = '';\n });\n} // Given `els`, a set of cells, find the cell with the largest natural width and set the widths of all the\n// cells to be that width.\n// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline\n\n\nfunction matchCellWidths(els) {\n var maxInnerWidth = 0;\n els.forEach(function (el) {\n var innerEl = el.firstChild; // hopefully an element\n\n if (innerEl instanceof HTMLElement) {\n var innerWidth_1 = innerEl.getBoundingClientRect().width;\n\n if (innerWidth_1 > maxInnerWidth) {\n maxInnerWidth = innerWidth_1;\n }\n }\n });\n maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance\n\n els.forEach(function (el) {\n el.style.width = maxInnerWidth + 'px';\n });\n return maxInnerWidth;\n} // Given one element that resides inside another,\n// Subtracts the height of the inner element from the outer element.\n\n\nfunction subtractInnerElHeight(outerEl, innerEl) {\n // effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked\n var reflowStyleProps = {\n position: 'relative',\n left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll\n\n };\n applyStyle(outerEl, reflowStyleProps);\n applyStyle(innerEl, reflowStyleProps);\n var diff = // grab the dimensions\n outerEl.getBoundingClientRect().height - innerEl.getBoundingClientRect().height; // undo hack\n\n var resetStyleProps = {\n position: '',\n left: ''\n };\n applyStyle(outerEl, resetStyleProps);\n applyStyle(innerEl, resetStyleProps);\n return diff;\n}\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction preventSelection(el) {\n el.classList.add('fc-unselectable');\n el.addEventListener('selectstart', preventDefault);\n}\n\nfunction allowSelection(el) {\n el.classList.remove('fc-unselectable');\n el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction preventContextMenu(el) {\n el.addEventListener('contextmenu', preventDefault);\n}\n\nfunction allowContextMenu(el) {\n el.removeEventListener('contextmenu', preventDefault);\n}\n/* Object Ordering by Field\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction parseFieldSpecs(input) {\n var specs = [];\n var tokens = [];\n var i;\n var token;\n\n if (typeof input === 'string') {\n tokens = input.split(/\\s*,\\s*/);\n } else if (typeof input === 'function') {\n tokens = [input];\n } else if (Array.isArray(input)) {\n tokens = input;\n }\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n\n if (typeof token === 'string') {\n specs.push(token.charAt(0) === '-' ? {\n field: token.substring(1),\n order: -1\n } : {\n field: token,\n order: 1\n });\n } else if (typeof token === 'function') {\n specs.push({\n func: token\n });\n }\n }\n\n return specs;\n}\n\nfunction compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n var i;\n var cmp;\n\n for (i = 0; i < fieldSpecs.length; i++) {\n cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n\n if (cmp) {\n return cmp;\n }\n }\n\n return 0;\n}\n\nfunction compareByFieldSpec(obj0, obj1, fieldSpec) {\n if (fieldSpec.func) {\n return fieldSpec.func(obj0, obj1);\n }\n\n return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field]) * (fieldSpec.order || 1);\n}\n\nfunction flexibleCompare(a, b) {\n if (!a && !b) {\n return 0;\n }\n\n if (b == null) {\n return -1;\n }\n\n if (a == null) {\n return 1;\n }\n\n if (typeof a === 'string' || typeof b === 'string') {\n return String(a).localeCompare(String(b));\n }\n\n return a - b;\n}\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction capitaliseFirstLetter(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nfunction padStart(val, len) {\n var s = String(val);\n return '000'.substr(0, len - s.length) + s;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction isInt(n) {\n return n % 1 === 0;\n}\n/* Weird Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction applyAll(functions, thisObj, args) {\n if (typeof functions === 'function') {\n // supplied a single function\n functions = [functions];\n }\n\n if (functions) {\n var i = void 0;\n var ret = void 0;\n\n for (i = 0; i < functions.length; i++) {\n ret = functions[i].apply(thisObj, args) || ret;\n }\n\n return ret;\n }\n}\n\nfunction firstDefined() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n for (var i = 0; i < args.length; i++) {\n if (args[i] !== undefined) {\n return args[i];\n }\n }\n} // Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714\n\n\nfunction debounce(func, wait) {\n var timeout;\n var args;\n var context;\n var timestamp;\n var result;\n\n var later = function () {\n var last = new Date().valueOf() - timestamp;\n\n if (last < wait) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n result = func.apply(context, args);\n context = args = null;\n }\n };\n\n return function () {\n context = this;\n args = arguments;\n timestamp = new Date().valueOf();\n\n if (!timeout) {\n timeout = setTimeout(later, wait);\n }\n\n return result;\n };\n} // Number and Boolean are only types that defaults or not computed for\n// TODO: write more comments\n\n\nfunction refineProps(rawProps, processors, defaults, leftoverProps) {\n if (defaults === void 0) {\n defaults = {};\n }\n\n var refined = {};\n\n for (var key in processors) {\n var processor = processors[key];\n\n if (rawProps[key] !== undefined) {\n // found\n if (processor === Function) {\n refined[key] = typeof rawProps[key] === 'function' ? rawProps[key] : null;\n } else if (processor) {\n // a refining function?\n refined[key] = processor(rawProps[key]);\n } else {\n refined[key] = rawProps[key];\n }\n } else if (defaults[key] !== undefined) {\n // there's an explicit default\n refined[key] = defaults[key];\n } else {\n // must compute a default\n if (processor === String) {\n refined[key] = ''; // empty string is default for String\n } else if (!processor || processor === Number || processor === Boolean || processor === Function) {\n refined[key] = null; // assign null for other non-custom processor funcs\n } else {\n refined[key] = processor(null); // run the custom processor func\n }\n }\n }\n\n if (leftoverProps) {\n for (var key in rawProps) {\n if (processors[key] === undefined) {\n leftoverProps[key] = rawProps[key];\n }\n }\n }\n\n return refined;\n}\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\n\n\nfunction computeAlignedDayRange(timedRange) {\n var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n var start = startOfDay(timedRange.start);\n var end = addDays(start, dayCnt);\n return {\n start: start,\n end: end\n };\n} // given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\n\n\nfunction computeVisibleDayRange(timedRange, nextDayThreshold) {\n if (nextDayThreshold === void 0) {\n nextDayThreshold = createDuration(0);\n }\n\n var startDay = null;\n var endDay = null;\n\n if (timedRange.end) {\n endDay = startOfDay(timedRange.end);\n var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n // If the end time is actually inclusively part of the next day and is equal to or\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n\n if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n endDay = addDays(endDay, 1);\n }\n }\n\n if (timedRange.start) {\n startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n\n if (endDay && endDay <= startDay) {\n endDay = addDays(startDay, 1);\n }\n }\n\n return {\n start: startDay,\n end: endDay\n };\n} // spans from one day into another?\n\n\nfunction isMultiDayRange(range) {\n var visibleRange = computeVisibleDayRange(range);\n return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\n\nfunction diffDates(date0, date1, dateEnv, largeUnit) {\n if (largeUnit === 'year') {\n return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n } else if (largeUnit === 'month') {\n return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n } else {\n return diffDayAndTime(date0, date1); // returns a duration\n }\n}\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nfunction parseRecurring(eventInput, allDayDefault, dateEnv, recurringTypes, leftovers) {\n for (var i = 0; i < recurringTypes.length; i++) {\n var localLeftovers = {};\n var parsed = recurringTypes[i].parse(eventInput, localLeftovers, dateEnv);\n\n if (parsed) {\n var allDay = localLeftovers.allDay;\n delete localLeftovers.allDay; // remove from leftovers\n\n if (allDay == null) {\n allDay = allDayDefault;\n\n if (allDay == null) {\n allDay = parsed.allDayGuess;\n\n if (allDay == null) {\n allDay = false;\n }\n }\n }\n\n __assign(leftovers, localLeftovers);\n\n return {\n allDay: allDay,\n duration: parsed.duration,\n typeData: parsed.typeData,\n typeId: i\n };\n }\n }\n\n return null;\n}\n/*\nEvent MUST have a recurringDef\n*/\n\n\nfunction expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n var typeDef = recurringTypes[eventDef.recurringDef.typeId];\n var markers = typeDef.expand(eventDef.recurringDef.typeData, {\n start: dateEnv.subtract(framingRange.start, duration),\n end: framingRange.end\n }, dateEnv); // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n\n if (eventDef.allDay) {\n markers = markers.map(startOfDay);\n }\n\n return markers;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty; // Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\n\nfunction mergeProps(propObjs, complexProps) {\n var dest = {};\n var i;\n var name;\n var complexObjs;\n var j;\n var val;\n var props;\n\n if (complexProps) {\n for (i = 0; i < complexProps.length; i++) {\n name = complexProps[i];\n complexObjs = []; // collect the trailing object values, stopping when a non-object is discovered\n\n for (j = propObjs.length - 1; j >= 0; j--) {\n val = propObjs[j][name];\n\n if (typeof val === 'object' && val) {\n // non-null object\n complexObjs.unshift(val);\n } else if (val !== undefined) {\n dest[name] = val; // if there were no objects, this value will be used\n\n break;\n }\n } // if the trailing values were objects, use the merged value\n\n\n if (complexObjs.length) {\n dest[name] = mergeProps(complexObjs);\n }\n }\n } // copy values into the destination, going from last to first\n\n\n for (i = propObjs.length - 1; i >= 0; i--) {\n props = propObjs[i];\n\n for (name in props) {\n if (!(name in dest)) {\n // if already assigned by previous props or complex props, don't reassign\n dest[name] = props[name];\n }\n }\n }\n\n return dest;\n}\n\nfunction filterHash(hash, func) {\n var filtered = {};\n\n for (var key in hash) {\n if (func(hash[key], key)) {\n filtered[key] = hash[key];\n }\n }\n\n return filtered;\n}\n\nfunction mapHash(hash, func) {\n var newHash = {};\n\n for (var key in hash) {\n newHash[key] = func(hash[key], key);\n }\n\n return newHash;\n}\n\nfunction arrayToHash(a) {\n var hash = {};\n\n for (var _i = 0, a_1 = a; _i < a_1.length; _i++) {\n var item = a_1[_i];\n hash[item] = true;\n }\n\n return hash;\n}\n\nfunction hashValuesToArray(obj) {\n var a = [];\n\n for (var key in obj) {\n a.push(obj[key]);\n }\n\n return a;\n}\n\nfunction isPropsEqual(obj0, obj1) {\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n return false;\n }\n }\n }\n\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction parseEvents(rawEvents, sourceId, calendar, allowOpenRange) {\n var eventStore = createEmptyEventStore();\n\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var tuple = parseEvent(rawEvent, sourceId, calendar, allowOpenRange);\n\n if (tuple) {\n eventTupleToStore(tuple, eventStore);\n }\n }\n\n return eventStore;\n}\n\nfunction eventTupleToStore(tuple, eventStore) {\n if (eventStore === void 0) {\n eventStore = createEmptyEventStore();\n }\n\n eventStore.defs[tuple.def.defId] = tuple.def;\n\n if (tuple.instance) {\n eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n }\n\n return eventStore;\n}\n\nfunction expandRecurring(eventStore, framingRange, calendar) {\n var dateEnv = calendar.dateEnv;\n var defs = eventStore.defs,\n instances = eventStore.instances; // remove existing recurring instances\n\n instances = filterHash(instances, function (instance) {\n return !defs[instance.defId].recurringDef;\n });\n\n for (var defId in defs) {\n var def = defs[defId];\n\n if (def.recurringDef) {\n var duration = def.recurringDef.duration;\n\n if (!duration) {\n duration = def.allDay ? calendar.defaultAllDayEventDuration : calendar.defaultTimedEventDuration;\n }\n\n var starts = expandRecurringRanges(def, duration, framingRange, calendar.dateEnv, calendar.pluginSystem.hooks.recurringTypes);\n\n for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) {\n var start = starts_1[_i];\n var instance = createEventInstance(defId, {\n start: start,\n end: dateEnv.add(start, duration)\n });\n instances[instance.instanceId] = instance;\n }\n }\n }\n\n return {\n defs: defs,\n instances: instances\n };\n} // retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\n\n\nfunction getRelevantEvents(eventStore, instanceId) {\n var instance = eventStore.instances[instanceId];\n\n if (instance) {\n var def_1 = eventStore.defs[instance.defId]; // get events/instances with same group\n\n var newStore = filterEventStoreDefs(eventStore, function (lookDef) {\n return isEventDefsGrouped(def_1, lookDef);\n }); // add the original\n // TODO: wish we could use eventTupleToStore or something like it\n\n newStore.defs[def_1.defId] = def_1;\n newStore.instances[instance.instanceId] = instance;\n return newStore;\n }\n\n return createEmptyEventStore();\n}\n\nfunction isEventDefsGrouped(def0, def1) {\n return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\n\nfunction transformRawEvents(rawEvents, eventSource, calendar) {\n var calEachTransform = calendar.opt('eventDataTransform');\n var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n\n if (sourceEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n }\n\n if (calEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n }\n\n return rawEvents;\n}\n\nfunction transformEachRawEvent(rawEvents, func) {\n var refinedEvents;\n\n if (!func) {\n refinedEvents = rawEvents;\n } else {\n refinedEvents = [];\n\n for (var _i = 0, rawEvents_2 = rawEvents; _i < rawEvents_2.length; _i++) {\n var rawEvent = rawEvents_2[_i];\n var refinedEvent = func(rawEvent);\n\n if (refinedEvent) {\n refinedEvents.push(refinedEvent);\n } else if (refinedEvent == null) {\n refinedEvents.push(rawEvent);\n } // if a different falsy value, do nothing\n\n }\n }\n\n return refinedEvents;\n}\n\nfunction createEmptyEventStore() {\n return {\n defs: {},\n instances: {}\n };\n}\n\nfunction mergeEventStores(store0, store1) {\n return {\n defs: __assign({}, store0.defs, store1.defs),\n instances: __assign({}, store0.instances, store1.instances)\n };\n}\n\nfunction filterEventStoreDefs(eventStore, filterFunc) {\n var defs = filterHash(eventStore.defs, filterFunc);\n var instances = filterHash(eventStore.instances, function (instance) {\n return defs[instance.defId]; // still exists?\n });\n return {\n defs: defs,\n instances: instances\n };\n}\n\nfunction parseRange(input, dateEnv) {\n var start = null;\n var end = null;\n\n if (input.start) {\n start = dateEnv.createMarker(input.start);\n }\n\n if (input.end) {\n end = dateEnv.createMarker(input.end);\n }\n\n if (!start && !end) {\n return null;\n }\n\n if (start && end && end < start) {\n return null;\n }\n\n return {\n start: start,\n end: end\n };\n} // SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\n\n\nfunction invertRanges(ranges, constraintRange) {\n var invertedRanges = [];\n var start = constraintRange.start; // the end of the previous range. the start of the new range\n\n var i;\n var dateRange; // ranges need to be in order. required for our date-walking algorithm\n\n ranges.sort(compareRanges);\n\n for (i = 0; i < ranges.length; i++) {\n dateRange = ranges[i]; // add the span of time before the event (if there is any)\n\n if (dateRange.start > start) {\n // compare millisecond time (skip any ambig logic)\n invertedRanges.push({\n start: start,\n end: dateRange.start\n });\n }\n\n if (dateRange.end > start) {\n start = dateRange.end;\n }\n } // add the span of time after the last event (if there is any)\n\n\n if (start < constraintRange.end) {\n // compare millisecond time (skip any ambig logic)\n invertedRanges.push({\n start: start,\n end: constraintRange.end\n });\n }\n\n return invertedRanges;\n}\n\nfunction compareRanges(range0, range1) {\n return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\n\nfunction intersectRanges(range0, range1) {\n var start = range0.start;\n var end = range0.end;\n var newRange = null;\n\n if (range1.start !== null) {\n if (start === null) {\n start = range1.start;\n } else {\n start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n }\n }\n\n if (range1.end != null) {\n if (end === null) {\n end = range1.end;\n } else {\n end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n }\n }\n\n if (start === null || end === null || start < end) {\n newRange = {\n start: start,\n end: end\n };\n }\n\n return newRange;\n}\n\nfunction rangesEqual(range0, range1) {\n return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) && (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n}\n\nfunction rangesIntersect(range0, range1) {\n return (range0.end === null || range1.start === null || range0.end > range1.start) && (range0.start === null || range1.end === null || range0.start < range1.end);\n}\n\nfunction rangeContainsRange(outerRange, innerRange) {\n return (outerRange.start === null || innerRange.start !== null && innerRange.start >= outerRange.start) && (outerRange.end === null || innerRange.end !== null && innerRange.end <= outerRange.end);\n}\n\nfunction rangeContainsMarker(range, date) {\n return (range.start === null || date >= range.start) && (range.end === null || date < range.end);\n} // If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\n\n\nfunction constrainMarkerToRange(date, range) {\n if (range.start != null && date < range.start) {\n return range.start;\n }\n\n if (range.end != null && date >= range.end) {\n return new Date(range.end.valueOf() - 1);\n }\n\n return date;\n}\n\nfunction removeExact(array, exactVal) {\n var removeCnt = 0;\n var i = 0;\n\n while (i < array.length) {\n if (array[i] === exactVal) {\n array.splice(i, 1);\n removeCnt++;\n } else {\n i++;\n }\n }\n\n return removeCnt;\n}\n\nfunction isArraysEqual(a0, a1) {\n var len = a0.length;\n var i;\n\n if (len !== a1.length) {\n // not array? or not same length?\n return false;\n }\n\n for (i = 0; i < len; i++) {\n if (a0[i] !== a1[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction memoize(workerFunc) {\n var args;\n var res;\n return function () {\n if (!args || !isArraysEqual(args, arguments)) {\n args = arguments;\n res = workerFunc.apply(this, arguments);\n }\n\n return res;\n };\n}\n/*\nalways executes the workerFunc, but if the result is equal to the previous result,\nreturn the previous result instead.\n*/\n\n\nfunction memoizeOutput(workerFunc, equalityFunc) {\n var cachedRes = null;\n return function () {\n var newRes = workerFunc.apply(this, arguments);\n\n if (cachedRes === null || !(cachedRes === newRes || equalityFunc(cachedRes, newRes))) {\n cachedRes = newRes;\n }\n\n return cachedRes;\n };\n}\n\nvar EXTENDED_SETTINGS_AND_SEVERITIES = {\n week: 3,\n separator: 0,\n omitZeroMinute: 0,\n meridiem: 0,\n omitCommas: 0\n};\nvar STANDARD_DATE_PROP_SEVERITIES = {\n timeZoneName: 7,\n era: 6,\n year: 5,\n month: 4,\n day: 2,\n weekday: 2,\n hour: 1,\n minute: 1,\n second: 1\n};\nvar MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\n\nvar COMMA_RE = /,/g; // we need re for globalness\n\nvar MULTI_SPACE_RE = /\\s+/g;\nvar LTR_RE = /\\u200e/g; // control character\n\nvar UTC_RE = /UTC|GMT/;\n\nvar NativeFormatter =\n/** @class */\nfunction () {\n function NativeFormatter(formatSettings) {\n var standardDateProps = {};\n var extendedSettings = {};\n var severity = 0;\n\n for (var name_1 in formatSettings) {\n if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) {\n extendedSettings[name_1] = formatSettings[name_1];\n severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity);\n } else {\n standardDateProps[name_1] = formatSettings[name_1];\n\n if (name_1 in STANDARD_DATE_PROP_SEVERITIES) {\n severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity);\n }\n }\n }\n\n this.standardDateProps = standardDateProps;\n this.extendedSettings = extendedSettings;\n this.severity = severity;\n this.buildFormattingFunc = memoize(buildFormattingFunc);\n }\n\n NativeFormatter.prototype.format = function (date, context) {\n return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n };\n\n NativeFormatter.prototype.formatRange = function (start, end, context) {\n var _a = this,\n standardDateProps = _a.standardDateProps,\n extendedSettings = _a.extendedSettings;\n\n var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n\n if (!diffSeverity) {\n return this.format(start, context);\n }\n\n var biggestUnitForPartial = diffSeverity;\n\n if (biggestUnitForPartial > 1 && ( // the two dates are different in a way that's larger scale than time\n standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') && (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') && (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n }\n\n var full0 = this.format(start, context);\n var full1 = this.format(end, context);\n\n if (full0 === full1) {\n return full0;\n }\n\n var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n var partial0 = partialFormattingFunc(start);\n var partial1 = partialFormattingFunc(end);\n var insertion = findCommonInsertion(full0, partial0, full1, partial1);\n var separator = extendedSettings.separator || '';\n\n if (insertion) {\n return insertion.before + partial0 + separator + partial1 + insertion.after;\n }\n\n return full0 + separator + full1;\n };\n\n NativeFormatter.prototype.getLargestUnit = function () {\n switch (this.severity) {\n case 7:\n case 6:\n case 5:\n return 'year';\n\n case 4:\n return 'month';\n\n case 3:\n return 'week';\n\n default:\n return 'day';\n }\n };\n\n return NativeFormatter;\n}();\n\nfunction buildFormattingFunc(standardDateProps, extendedSettings, context) {\n var standardDatePropCnt = Object.keys(standardDateProps).length;\n\n if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n return function (date) {\n return formatTimeZoneOffset(date.timeZoneOffset);\n };\n }\n\n if (standardDatePropCnt === 0 && extendedSettings.week) {\n return function (date) {\n return formatWeekNumber(context.computeWeekNumber(date.marker), context.weekLabel, context.locale, extendedSettings.week);\n };\n }\n\n return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n}\n\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n standardDateProps = __assign({}, standardDateProps); // copy\n\n extendedSettings = __assign({}, extendedSettings); // copy\n\n sanitizeSettings(standardDateProps, extendedSettings);\n standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n\n var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n var zeroFormat; // needed?\n\n if (extendedSettings.omitZeroMinute) {\n var zeroProps = __assign({}, standardDateProps);\n\n delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n\n zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n }\n\n return function (date) {\n var marker = date.marker;\n var format;\n\n if (zeroFormat && !marker.getUTCMinutes()) {\n format = zeroFormat;\n } else {\n format = normalFormat;\n }\n\n var s = format.format(marker);\n return postProcess(s, date, standardDateProps, extendedSettings, context);\n };\n}\n\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n // deal with a browser inconsistency where formatting the timezone\n // requires that the hour/minute be present.\n if (standardDateProps.timeZoneName) {\n if (!standardDateProps.hour) {\n standardDateProps.hour = '2-digit';\n }\n\n if (!standardDateProps.minute) {\n standardDateProps.minute = '2-digit';\n }\n } // only support short timezone names\n\n\n if (standardDateProps.timeZoneName === 'long') {\n standardDateProps.timeZoneName = 'short';\n } // if requesting to display seconds, MUST display minutes\n\n\n if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n delete extendedSettings.omitZeroMinute;\n }\n}\n\nfunction postProcess(s, date, standardDateProps, extendedSettings, context) {\n s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n\n if (standardDateProps.timeZoneName === 'short') {\n s = injectTzoStr(s, context.timeZone === 'UTC' || date.timeZoneOffset == null ? 'UTC' : // important to normalize for IE, which does \"GMT\"\n formatTimeZoneOffset(date.timeZoneOffset));\n }\n\n if (extendedSettings.omitCommas) {\n s = s.replace(COMMA_RE, '').trim();\n }\n\n if (extendedSettings.omitZeroMinute) {\n s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n } // ^ do anything that might create adjacent spaces before this point,\n // because MERIDIEM_RE likes to eat up loading spaces\n\n\n if (extendedSettings.meridiem === false) {\n s = s.replace(MERIDIEM_RE, '').trim();\n } else if (extendedSettings.meridiem === 'narrow') {\n // a/p\n s = s.replace(MERIDIEM_RE, function (m0, m1) {\n return m1.toLocaleLowerCase();\n });\n } else if (extendedSettings.meridiem === 'short') {\n // am/pm\n s = s.replace(MERIDIEM_RE, function (m0, m1) {\n return m1.toLocaleLowerCase() + 'm';\n });\n } else if (extendedSettings.meridiem === 'lowercase') {\n // other meridiem transformers already converted to lowercase\n s = s.replace(MERIDIEM_RE, function (m0) {\n return m0.toLocaleLowerCase();\n });\n }\n\n s = s.replace(MULTI_SPACE_RE, ' ');\n s = s.trim();\n return s;\n}\n\nfunction injectTzoStr(s, tzoStr) {\n var replaced = false;\n s = s.replace(UTC_RE, function () {\n replaced = true;\n return tzoStr;\n }); // IE11 doesn't include UTC/GMT in the original string, so append to end\n\n if (!replaced) {\n s += ' ' + tzoStr;\n }\n\n return s;\n}\n\nfunction formatWeekNumber(num, weekLabel, locale, display) {\n var parts = [];\n\n if (display === 'narrow') {\n parts.push(weekLabel);\n } else if (display === 'short') {\n parts.push(weekLabel, ' ');\n } // otherwise, considered 'numeric'\n\n\n parts.push(locale.simpleNumberFormat.format(num));\n\n if (locale.options.isRtl) {\n // TODO: use control characters instead?\n parts.reverse();\n }\n\n return parts.join('');\n} // Range Formatting Utils\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\n\n\nfunction computeMarkerDiffSeverity(d0, d1, ca) {\n if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n return 5;\n }\n\n if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n return 4;\n }\n\n if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n return 2;\n }\n\n if (timeAsMs(d0) !== timeAsMs(d1)) {\n return 1;\n }\n\n return 0;\n}\n\nfunction computePartialFormattingOptions(options, biggestUnit) {\n var partialOptions = {};\n\n for (var name_2 in options) {\n if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) {\n partialOptions[name_2] = options[name_2];\n }\n }\n\n return partialOptions;\n}\n\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n var i0 = 0;\n\n while (i0 < full0.length) {\n var found0 = full0.indexOf(partial0, i0);\n\n if (found0 === -1) {\n break;\n }\n\n var before0 = full0.substr(0, found0);\n i0 = found0 + partial0.length;\n var after0 = full0.substr(i0);\n var i1 = 0;\n\n while (i1 < full1.length) {\n var found1 = full1.indexOf(partial1, i1);\n\n if (found1 === -1) {\n break;\n }\n\n var before1 = full1.substr(0, found1);\n i1 = found1 + partial1.length;\n var after1 = full1.substr(i1);\n\n if (before0 === before1 && after0 === after1) {\n return {\n before: before0,\n after: after0\n };\n }\n }\n }\n\n return null;\n}\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\n\n\nvar CmdFormatter =\n/** @class */\nfunction () {\n function CmdFormatter(cmdStr, separator) {\n this.cmdStr = cmdStr;\n this.separator = separator;\n }\n\n CmdFormatter.prototype.format = function (date, context) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, this.separator));\n };\n\n CmdFormatter.prototype.formatRange = function (start, end, context) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, this.separator));\n };\n\n return CmdFormatter;\n}();\n\nvar FuncFormatter =\n/** @class */\nfunction () {\n function FuncFormatter(func) {\n this.func = func;\n }\n\n FuncFormatter.prototype.format = function (date, context) {\n return this.func(createVerboseFormattingArg(date, null, context));\n };\n\n FuncFormatter.prototype.formatRange = function (start, end, context) {\n return this.func(createVerboseFormattingArg(start, end, context));\n };\n\n return FuncFormatter;\n}(); // Formatter Object Creation\n\n\nfunction createFormatter(input, defaultSeparator) {\n if (typeof input === 'object' && input) {\n // non-null object\n if (typeof defaultSeparator === 'string') {\n input = __assign({\n separator: defaultSeparator\n }, input);\n }\n\n return new NativeFormatter(input);\n } else if (typeof input === 'string') {\n return new CmdFormatter(input, defaultSeparator);\n } else if (typeof input === 'function') {\n return new FuncFormatter(input);\n }\n} // String Utils\n// timeZoneOffset is in minutes\n\n\nfunction buildIsoString(marker, timeZoneOffset, stripZeroTime) {\n if (stripZeroTime === void 0) {\n stripZeroTime = false;\n }\n\n var s = marker.toISOString();\n s = s.replace('.000', '');\n\n if (stripZeroTime) {\n s = s.replace('T00:00:00Z', '');\n }\n\n if (s.length > 10) {\n // time part wasn't stripped, can add timezone info\n if (timeZoneOffset == null) {\n s = s.replace('Z', '');\n } else if (timeZoneOffset !== 0) {\n s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n } // otherwise, its UTC-0 and we want to keep the Z\n\n }\n\n return s;\n}\n\nfunction formatIsoTimeString(marker) {\n return padStart(marker.getUTCHours(), 2) + ':' + padStart(marker.getUTCMinutes(), 2) + ':' + padStart(marker.getUTCSeconds(), 2);\n}\n\nfunction formatTimeZoneOffset(minutes, doIso) {\n if (doIso === void 0) {\n doIso = false;\n }\n\n var sign = minutes < 0 ? '-' : '+';\n var abs = Math.abs(minutes);\n var hours = Math.floor(abs / 60);\n var mins = Math.round(abs % 60);\n\n if (doIso) {\n return sign + padStart(hours, 2) + ':' + padStart(mins, 2);\n } else {\n return 'GMT' + sign + hours + (mins ? ':' + padStart(mins, 2) : '');\n }\n} // Arg Utils\n\n\nfunction createVerboseFormattingArg(start, end, context, separator) {\n var startInfo = expandZonedMarker(start, context.calendarSystem);\n var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n return {\n date: startInfo,\n start: startInfo,\n end: endInfo,\n timeZone: context.timeZone,\n localeCodes: context.locale.codes,\n separator: separator\n };\n}\n\nfunction expandZonedMarker(dateInfo, calendarSystem) {\n var a = calendarSystem.markerToArray(dateInfo.marker);\n return {\n marker: dateInfo.marker,\n timeZoneOffset: dateInfo.timeZoneOffset,\n array: a,\n year: a[0],\n month: a[1],\n day: a[2],\n hour: a[3],\n minute: a[4],\n second: a[5],\n millisecond: a[6]\n };\n}\n\nvar EventSourceApi =\n/** @class */\nfunction () {\n function EventSourceApi(calendar, internalEventSource) {\n this.calendar = calendar;\n this.internalEventSource = internalEventSource;\n }\n\n EventSourceApi.prototype.remove = function () {\n this.calendar.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: this.internalEventSource.sourceId\n });\n };\n\n EventSourceApi.prototype.refetch = function () {\n this.calendar.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n sourceIds: [this.internalEventSource.sourceId]\n });\n };\n\n Object.defineProperty(EventSourceApi.prototype, \"id\", {\n get: function () {\n return this.internalEventSource.publicId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"url\", {\n // only relevant to json-feed event sources\n get: function () {\n return this.internalEventSource.meta.url;\n },\n enumerable: true,\n configurable: true\n });\n return EventSourceApi;\n}();\n\nvar EventApi =\n/** @class */\nfunction () {\n function EventApi(calendar, def, instance) {\n this._calendar = calendar;\n this._def = def;\n this._instance = instance || null;\n }\n /*\n TODO: make event struct more responsible for this\n */\n\n\n EventApi.prototype.setProp = function (name, val) {\n var _a, _b;\n\n if (name in DATE_PROPS) ;else if (name in NON_DATE_PROPS) {\n if (typeof NON_DATE_PROPS[name] === 'function') {\n val = NON_DATE_PROPS[name](val);\n }\n\n this.mutate({\n standardProps: (_a = {}, _a[name] = val, _a)\n });\n } else if (name in UNSCOPED_EVENT_UI_PROPS) {\n var ui = void 0;\n\n if (typeof UNSCOPED_EVENT_UI_PROPS[name] === 'function') {\n val = UNSCOPED_EVENT_UI_PROPS[name](val);\n }\n\n if (name === 'color') {\n ui = {\n backgroundColor: val,\n borderColor: val\n };\n } else if (name === 'editable') {\n ui = {\n startEditable: val,\n durationEditable: val\n };\n } else {\n ui = (_b = {}, _b[name] = val, _b);\n }\n\n this.mutate({\n standardProps: {\n ui: ui\n }\n });\n }\n };\n\n EventApi.prototype.setExtendedProp = function (name, val) {\n var _a;\n\n this.mutate({\n extendedProps: (_a = {}, _a[name] = val, _a)\n });\n };\n\n EventApi.prototype.setStart = function (startInput, options) {\n if (options === void 0) {\n options = {};\n }\n\n var dateEnv = this._calendar.dateEnv;\n var start = dateEnv.createMarker(startInput);\n\n if (start && this._instance) {\n // TODO: warning if parsed bad\n var instanceRange = this._instance.range;\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n\n if (options.maintainDuration) {\n this.mutate({\n datesDelta: startDelta\n });\n } else {\n this.mutate({\n startDelta: startDelta\n });\n }\n }\n };\n\n EventApi.prototype.setEnd = function (endInput, options) {\n if (options === void 0) {\n options = {};\n }\n\n var dateEnv = this._calendar.dateEnv;\n var end;\n\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n\n if (!end) {\n return; // TODO: warning if parsed bad\n }\n }\n\n if (this._instance) {\n if (end) {\n var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n this.mutate({\n endDelta: endDelta\n });\n } else {\n this.mutate({\n standardProps: {\n hasEnd: false\n }\n });\n }\n }\n };\n\n EventApi.prototype.setDates = function (startInput, endInput, options) {\n if (options === void 0) {\n options = {};\n }\n\n var dateEnv = this._calendar.dateEnv;\n var standardProps = {\n allDay: options.allDay\n };\n var start = dateEnv.createMarker(startInput);\n var end;\n\n if (!start) {\n return; // TODO: warning if parsed bad\n }\n\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n\n if (!end) {\n // TODO: warning if parsed bad\n return;\n }\n }\n\n if (this._instance) {\n var instanceRange = this._instance.range; // when computing the diff for an event being converted to all-day,\n // compute diff off of the all-day values the way event-mutation does.\n\n if (options.allDay === true) {\n instanceRange = computeAlignedDayRange(instanceRange);\n }\n\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n\n if (end) {\n var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n\n if (durationsEqual(startDelta, endDelta)) {\n this.mutate({\n datesDelta: startDelta,\n standardProps: standardProps\n });\n } else {\n this.mutate({\n startDelta: startDelta,\n endDelta: endDelta,\n standardProps: standardProps\n });\n }\n } else {\n // means \"clear the end\"\n standardProps.hasEnd = false;\n this.mutate({\n datesDelta: startDelta,\n standardProps: standardProps\n });\n }\n }\n };\n\n EventApi.prototype.moveStart = function (deltaInput) {\n var delta = createDuration(deltaInput);\n\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n startDelta: delta\n });\n }\n };\n\n EventApi.prototype.moveEnd = function (deltaInput) {\n var delta = createDuration(deltaInput);\n\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n endDelta: delta\n });\n }\n };\n\n EventApi.prototype.moveDates = function (deltaInput) {\n var delta = createDuration(deltaInput);\n\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n datesDelta: delta\n });\n }\n };\n\n EventApi.prototype.setAllDay = function (allDay, options) {\n if (options === void 0) {\n options = {};\n }\n\n var standardProps = {\n allDay: allDay\n };\n var maintainDuration = options.maintainDuration;\n\n if (maintainDuration == null) {\n maintainDuration = this._calendar.opt('allDayMaintainDuration');\n }\n\n if (this._def.allDay !== allDay) {\n standardProps.hasEnd = maintainDuration;\n }\n\n this.mutate({\n standardProps: standardProps\n });\n };\n\n EventApi.prototype.formatRange = function (formatInput) {\n var dateEnv = this._calendar.dateEnv;\n var instance = this._instance;\n var formatter = createFormatter(formatInput, this._calendar.opt('defaultRangeSeparator'));\n\n if (this._def.hasEnd) {\n return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n forcedStartTzo: instance.forcedStartTzo,\n forcedEndTzo: instance.forcedEndTzo\n });\n } else {\n return dateEnv.format(instance.range.start, formatter, {\n forcedTzo: instance.forcedStartTzo\n });\n }\n };\n\n EventApi.prototype.mutate = function (mutation) {\n var def = this._def;\n var instance = this._instance;\n\n if (instance) {\n this._calendar.dispatch({\n type: 'MUTATE_EVENTS',\n instanceId: instance.instanceId,\n mutation: mutation,\n fromApi: true\n });\n\n var eventStore = this._calendar.state.eventStore;\n this._def = eventStore.defs[def.defId];\n this._instance = eventStore.instances[instance.instanceId];\n }\n };\n\n EventApi.prototype.remove = function () {\n this._calendar.dispatch({\n type: 'REMOVE_EVENT_DEF',\n defId: this._def.defId\n });\n };\n\n Object.defineProperty(EventApi.prototype, \"source\", {\n get: function () {\n var sourceId = this._def.sourceId;\n\n if (sourceId) {\n return new EventSourceApi(this._calendar, this._calendar.state.eventSources[sourceId]);\n }\n\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"start\", {\n get: function () {\n return this._instance ? this._calendar.dateEnv.toDate(this._instance.range.start) : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"end\", {\n get: function () {\n return this._instance && this._def.hasEnd ? this._calendar.dateEnv.toDate(this._instance.range.end) : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"id\", {\n // computable props that all access the def\n // TODO: find a TypeScript-compatible way to do this at scale\n get: function () {\n return this._def.publicId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"groupId\", {\n get: function () {\n return this._def.groupId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allDay\", {\n get: function () {\n return this._def.allDay;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"title\", {\n get: function () {\n return this._def.title;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"url\", {\n get: function () {\n return this._def.url;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"rendering\", {\n get: function () {\n return this._def.rendering;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startEditable\", {\n get: function () {\n return this._def.ui.startEditable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"durationEditable\", {\n get: function () {\n return this._def.ui.durationEditable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"constraint\", {\n get: function () {\n return this._def.ui.constraints[0] || null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"overlap\", {\n get: function () {\n return this._def.ui.overlap;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allow\", {\n get: function () {\n return this._def.ui.allows[0] || null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"backgroundColor\", {\n get: function () {\n return this._def.ui.backgroundColor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"borderColor\", {\n get: function () {\n return this._def.ui.borderColor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"textColor\", {\n get: function () {\n return this._def.ui.textColor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"classNames\", {\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get: function () {\n return this._def.ui.classNames;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"extendedProps\", {\n get: function () {\n return this._def.extendedProps;\n },\n enumerable: true,\n configurable: true\n });\n return EventApi;\n}();\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\n\n\nfunction sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n var inverseBgByGroupId = {};\n var inverseBgByDefId = {};\n var defByGroupId = {};\n var bgRanges = [];\n var fgRanges = [];\n var eventUis = compileEventUis(eventStore.defs, eventUiBases);\n\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n\n if (def.rendering === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId] = [];\n\n if (!defByGroupId[def.groupId]) {\n defByGroupId[def.groupId] = def;\n }\n } else {\n inverseBgByDefId[defId] = [];\n }\n }\n }\n\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = eventStore.defs[instance.defId];\n var ui = eventUis[def.defId];\n var origRange = instance.range;\n var normalRange = !def.allDay && nextDayThreshold ? computeVisibleDayRange(origRange, nextDayThreshold) : origRange;\n var slicedRange = intersectRanges(normalRange, framingRange);\n\n if (slicedRange) {\n if (def.rendering === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId].push(slicedRange);\n } else {\n inverseBgByDefId[instance.defId].push(slicedRange);\n }\n } else {\n (def.rendering === 'background' ? bgRanges : fgRanges).push({\n def: def,\n ui: ui,\n instance: instance,\n range: slicedRange,\n isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf()\n });\n }\n }\n }\n\n for (var groupId in inverseBgByGroupId) {\n // BY GROUP\n var ranges = inverseBgByGroupId[groupId];\n var invertedRanges = invertRanges(ranges, framingRange);\n\n for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) {\n var invertedRange = invertedRanges_1[_i];\n var def = defByGroupId[groupId];\n var ui = eventUis[def.defId];\n bgRanges.push({\n def: def,\n ui: ui,\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false\n });\n }\n }\n\n for (var defId in inverseBgByDefId) {\n var ranges = inverseBgByDefId[defId];\n var invertedRanges = invertRanges(ranges, framingRange);\n\n for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) {\n var invertedRange = invertedRanges_2[_a];\n bgRanges.push({\n def: eventStore.defs[defId],\n ui: eventUis[defId],\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false\n });\n }\n }\n\n return {\n bg: bgRanges,\n fg: fgRanges\n };\n}\n\nfunction hasBgRendering(def) {\n return def.rendering === 'background' || def.rendering === 'inverse-background';\n}\n\nfunction filterSegsViaEls(context, segs, isMirror) {\n var calendar = context.calendar,\n view = context.view;\n\n if (calendar.hasPublicHandlers('eventRender')) {\n segs = segs.filter(function (seg) {\n var custom = calendar.publiclyTrigger('eventRender', [{\n event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance),\n isMirror: isMirror,\n isStart: seg.isStart,\n isEnd: seg.isEnd,\n // TODO: include seg.range once all components consistently generate it\n el: seg.el,\n view: view\n }]);\n\n if (custom === false) {\n // means don't render at all\n return false;\n } else if (custom && custom !== true) {\n seg.el = custom;\n }\n\n return true;\n });\n }\n\n for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n var seg = segs_1[_i];\n setElSeg(seg.el, seg);\n }\n\n return segs;\n}\n\nfunction setElSeg(el, seg) {\n el.fcSeg = seg;\n}\n\nfunction getElSeg(el) {\n return el.fcSeg || null;\n} // event ui computation\n\n\nfunction compileEventUis(eventDefs, eventUiBases) {\n return mapHash(eventDefs, function (eventDef) {\n return compileEventUi(eventDef, eventUiBases);\n });\n}\n\nfunction compileEventUi(eventDef, eventUiBases) {\n var uis = [];\n\n if (eventUiBases['']) {\n uis.push(eventUiBases['']);\n }\n\n if (eventUiBases[eventDef.defId]) {\n uis.push(eventUiBases[eventDef.defId]);\n }\n\n uis.push(eventDef.ui);\n return combineEventUis(uis);\n} // triggers\n\n\nfunction triggerRenderedSegs(context, segs, isMirrors) {\n var calendar = context.calendar,\n view = context.view;\n\n if (calendar.hasPublicHandlers('eventPositioned')) {\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n calendar.publiclyTriggerAfterSizing('eventPositioned', [{\n event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance),\n isMirror: isMirrors,\n isStart: seg.isStart,\n isEnd: seg.isEnd,\n el: seg.el,\n view: view\n }]);\n }\n }\n\n if (!calendar.state.eventSourceLoadingLevel) {\n // avoid initial empty state while pending\n calendar.afterSizingTriggers._eventsPositioned = [null]; // fire once\n }\n}\n\nfunction triggerWillRemoveSegs(context, segs, isMirrors) {\n var calendar = context.calendar,\n view = context.view;\n\n for (var _i = 0, segs_3 = segs; _i < segs_3.length; _i++) {\n var seg = segs_3[_i];\n calendar.trigger('eventElRemove', seg.el);\n }\n\n if (calendar.hasPublicHandlers('eventDestroy')) {\n for (var _a = 0, segs_4 = segs; _a < segs_4.length; _a++) {\n var seg = segs_4[_a];\n calendar.publiclyTrigger('eventDestroy', [{\n event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance),\n isMirror: isMirrors,\n el: seg.el,\n view: view\n }]);\n }\n }\n} // is-interactable\n\n\nfunction computeEventDraggable(context, eventDef, eventUi) {\n var calendar = context.calendar,\n view = context.view;\n var transformers = calendar.pluginSystem.hooks.isDraggableTransformers;\n var val = eventUi.startEditable;\n\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n val = transformer(val, eventDef, eventUi, view);\n }\n\n return val;\n}\n\nfunction computeEventStartResizable(context, eventDef, eventUi) {\n return eventUi.durationEditable && context.options.eventResizableFromStart;\n}\n\nfunction computeEventEndResizable(context, eventDef, eventUi) {\n return eventUi.durationEditable;\n} // applies the mutation to ALL defs/instances within the event store\n\n\nfunction applyMutationToEventStore(eventStore, eventConfigBase, mutation, calendar) {\n var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n var dest = createEmptyEventStore();\n\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, calendar.pluginSystem.hooks.eventDefMutationAppliers, calendar);\n }\n\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = dest.defs[instance.defId]; // important to grab the newly modified def\n\n dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, calendar);\n }\n\n return dest;\n}\n\nfunction applyMutationToEventDef(eventDef, eventConfig, mutation, appliers, calendar) {\n var standardProps = mutation.standardProps || {}; // if hasEnd has not been specified, guess a good value based on deltas.\n // if duration will change, there's no way the default duration will persist,\n // and thus, we need to mark the event as having a real end\n\n if (standardProps.hasEnd == null && eventConfig.durationEditable && (mutation.startDelta || mutation.endDelta)) {\n standardProps.hasEnd = true; // TODO: is this mutation okay?\n }\n\n var copy = __assign({}, eventDef, standardProps, {\n ui: __assign({}, eventDef.ui, standardProps.ui)\n });\n\n if (mutation.extendedProps) {\n copy.extendedProps = __assign({}, copy.extendedProps, mutation.extendedProps);\n }\n\n for (var _i = 0, appliers_1 = appliers; _i < appliers_1.length; _i++) {\n var applier = appliers_1[_i];\n applier(copy, mutation, calendar);\n }\n\n if (!copy.hasEnd && calendar.opt('forceEventDuration')) {\n copy.hasEnd = true;\n }\n\n return copy;\n}\n\nfunction applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef\neventConfig, mutation, calendar) {\n var dateEnv = calendar.dateEnv;\n var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n\n var copy = __assign({}, eventInstance);\n\n if (forceAllDay) {\n copy.range = computeAlignedDayRange(copy.range);\n }\n\n if (mutation.datesDelta && eventConfig.startEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.datesDelta),\n end: dateEnv.add(copy.range.end, mutation.datesDelta)\n };\n }\n\n if (mutation.startDelta && eventConfig.durationEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.startDelta),\n end: copy.range.end\n };\n }\n\n if (mutation.endDelta && eventConfig.durationEditable) {\n copy.range = {\n start: copy.range.start,\n end: dateEnv.add(copy.range.end, mutation.endDelta)\n };\n }\n\n if (clearEnd) {\n copy.range = {\n start: copy.range.start,\n end: calendar.getDefaultEventEnd(eventDef.allDay, copy.range.start)\n };\n } // in case event was all-day but the supplied deltas were not\n // better util for this?\n\n\n if (eventDef.allDay) {\n copy.range = {\n start: startOfDay(copy.range.start),\n end: startOfDay(copy.range.end)\n };\n } // handle invalid durations\n\n\n if (copy.range.end < copy.range.start) {\n copy.range.end = calendar.getDefaultEventEnd(eventDef.allDay, copy.range.start);\n }\n\n return copy;\n}\n\nfunction reduceEventStore(eventStore, action, eventSources, dateProfile, calendar) {\n switch (action.type) {\n case 'RECEIVE_EVENTS':\n // raw\n return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, calendar);\n\n case 'ADD_EVENTS':\n // already parsed, but not expanded\n return addEvent(eventStore, action.eventStore, // new ones\n dateProfile ? dateProfile.activeRange : null, calendar);\n\n case 'MERGE_EVENTS':\n // already parsed and expanded\n return mergeEventStores(eventStore, action.eventStore);\n\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n\n case 'NEXT':\n case 'SET_DATE':\n case 'SET_VIEW_TYPE':\n if (dateProfile) {\n return expandRecurring(eventStore, dateProfile.activeRange, calendar);\n } else {\n return eventStore;\n }\n\n case 'CHANGE_TIMEZONE':\n return rezoneDates(eventStore, action.oldDateEnv, calendar.dateEnv);\n\n case 'MUTATE_EVENTS':\n return applyMutationToRelated(eventStore, action.instanceId, action.mutation, action.fromApi, calendar);\n\n case 'REMOVE_EVENT_INSTANCES':\n return excludeInstances(eventStore, action.instances);\n\n case 'REMOVE_EVENT_DEF':\n return filterEventStoreDefs(eventStore, function (eventDef) {\n return eventDef.defId !== action.defId;\n });\n\n case 'REMOVE_EVENT_SOURCE':\n return excludeEventsBySourceId(eventStore, action.sourceId);\n\n case 'REMOVE_ALL_EVENT_SOURCES':\n return filterEventStoreDefs(eventStore, function (eventDef) {\n return !eventDef.sourceId; // only keep events with no source id\n });\n\n case 'REMOVE_ALL_EVENTS':\n return createEmptyEventStore();\n\n case 'RESET_EVENTS':\n return {\n defs: eventStore.defs,\n instances: eventStore.instances\n };\n\n default:\n return eventStore;\n }\n}\n\nfunction receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, calendar) {\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n ) {\n var subset = parseEvents(transformRawEvents(rawEvents, eventSource, calendar), eventSource.sourceId, calendar);\n\n if (fetchRange) {\n subset = expandRecurring(subset, fetchRange, calendar);\n }\n\n return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n }\n\n return eventStore;\n}\n\nfunction addEvent(eventStore, subset, expandRange, calendar) {\n if (expandRange) {\n subset = expandRecurring(subset, expandRange, calendar);\n }\n\n return mergeEventStores(eventStore, subset);\n}\n\nfunction rezoneDates(eventStore, oldDateEnv, newDateEnv) {\n var defs = eventStore.defs;\n var instances = mapHash(eventStore.instances, function (instance) {\n var def = defs[instance.defId];\n\n if (def.allDay || def.recurringDef) {\n return instance; // isn't dependent on timezone\n } else {\n return __assign({}, instance, {\n range: {\n start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo))\n },\n forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo,\n forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo\n });\n }\n });\n return {\n defs: defs,\n instances: instances\n };\n}\n\nfunction applyMutationToRelated(eventStore, instanceId, mutation, fromApi, calendar) {\n var relevant = getRelevantEvents(eventStore, instanceId);\n var eventConfigBase = fromApi ? {\n '': {\n startEditable: true,\n durationEditable: true,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: []\n }\n } : calendar.eventUiBases;\n relevant = applyMutationToEventStore(relevant, eventConfigBase, mutation, calendar);\n return mergeEventStores(eventStore, relevant);\n}\n\nfunction excludeEventsBySourceId(eventStore, sourceId) {\n return filterEventStoreDefs(eventStore, function (eventDef) {\n return eventDef.sourceId !== sourceId;\n });\n} // QUESTION: why not just return instances? do a general object-property-exclusion util\n\n\nfunction excludeInstances(eventStore, removals) {\n return {\n defs: eventStore.defs,\n instances: filterHash(eventStore.instances, function (instance) {\n return !removals[instance.instanceId];\n })\n };\n} // high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\n\n\nfunction isInteractionValid(interaction, calendar) {\n return isNewPropsValid({\n eventDrag: interaction\n }, calendar); // HACK: the eventDrag props is used for ALL interactions\n}\n\nfunction isDateSelectionValid(dateSelection, calendar) {\n return isNewPropsValid({\n dateSelection: dateSelection\n }, calendar);\n}\n\nfunction isNewPropsValid(newProps, calendar) {\n var view = calendar.view;\n\n var props = __assign({\n businessHours: view ? view.props.businessHours : createEmptyEventStore(),\n dateSelection: '',\n eventStore: calendar.state.eventStore,\n eventUiBases: calendar.eventUiBases,\n eventSelection: '',\n eventDrag: null,\n eventResize: null\n }, newProps);\n\n return (calendar.pluginSystem.hooks.isPropsValid || isPropsValid)(props, calendar);\n}\n\nfunction isPropsValid(state, calendar, dateSpanMeta, filterConfig) {\n if (dateSpanMeta === void 0) {\n dateSpanMeta = {};\n }\n\n if (state.eventDrag && !isInteractionPropsValid(state, calendar, dateSpanMeta, filterConfig)) {\n return false;\n }\n\n if (state.dateSelection && !isDateSelectionPropsValid(state, calendar, dateSpanMeta, filterConfig)) {\n return false;\n }\n\n return true;\n} // Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\n\n\nfunction isInteractionPropsValid(state, calendar, dateSpanMeta, filterConfig) {\n var interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n\n var subjectEventStore = interaction.mutatedEvents;\n var subjectDefs = subjectEventStore.defs;\n var subjectInstances = subjectEventStore.instances;\n var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ? state.eventUiBases : {\n '': calendar.selectionConfig\n } // if not a real event, validate as a selection\n );\n\n if (filterConfig) {\n subjectConfigs = mapHash(subjectConfigs, filterConfig);\n }\n\n var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances); // exclude the subject events. TODO: exclude defs too?\n\n var otherDefs = otherEventStore.defs;\n var otherInstances = otherEventStore.instances;\n var otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n\n for (var subjectInstanceId in subjectInstances) {\n var subjectInstance = subjectInstances[subjectInstanceId];\n var subjectRange = subjectInstance.range;\n var subjectConfig = subjectConfigs[subjectInstance.defId];\n var subjectDef = subjectDefs[subjectInstance.defId]; // constraint\n\n if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, calendar)) {\n return false;\n } // overlap\n\n\n var overlapFunc = calendar.opt('eventOverlap');\n\n if (typeof overlapFunc !== 'function') {\n overlapFunc = null;\n }\n\n for (var otherInstanceId in otherInstances) {\n var otherInstance = otherInstances[otherInstanceId]; // intersect! evaluate\n\n if (rangesIntersect(subjectRange, otherInstance.range)) {\n var otherOverlap = otherConfigs[otherInstance.defId].overlap; // consider the other event's overlap. only do this if the subject event is a \"real\" event\n\n if (otherOverlap === false && interaction.isEvent) {\n return false;\n }\n\n if (subjectConfig.overlap === false) {\n return false;\n }\n\n if (overlapFunc && !overlapFunc(new EventApi(calendar, otherDefs[otherInstance.defId], otherInstance), // still event\n new EventApi(calendar, subjectDef, subjectInstance) // moving event\n )) {\n return false;\n }\n }\n } // allow (a function)\n\n\n var calendarEventStore = calendar.state.eventStore; // need global-to-calendar, not local to component (splittable)state\n\n for (var _i = 0, _a = subjectConfig.allows; _i < _a.length; _i++) {\n var subjectAllow = _a[_i];\n\n var subjectDateSpan = __assign({}, dateSpanMeta, {\n range: subjectInstance.range,\n allDay: subjectDef.allDay\n });\n\n var origDef = calendarEventStore.defs[subjectDef.defId];\n var origInstance = calendarEventStore.instances[subjectInstanceId];\n var eventApi = void 0;\n\n if (origDef) {\n // was previously in the calendar\n eventApi = new EventApi(calendar, origDef, origInstance);\n } else {\n // was an external event\n eventApi = new EventApi(calendar, subjectDef); // no instance, because had no dates\n }\n\n if (!subjectAllow(calendar.buildDateSpanApi(subjectDateSpan), eventApi)) {\n return false;\n }\n }\n }\n\n return true;\n} // Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\n\n\nfunction isDateSelectionPropsValid(state, calendar, dateSpanMeta, filterConfig) {\n var relevantEventStore = state.eventStore;\n var relevantDefs = relevantEventStore.defs;\n var relevantInstances = relevantEventStore.instances;\n var selection = state.dateSelection;\n var selectionRange = selection.range;\n var selectionConfig = calendar.selectionConfig;\n\n if (filterConfig) {\n selectionConfig = filterConfig(selectionConfig);\n } // constraint\n\n\n if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, calendar)) {\n return false;\n } // overlap\n\n\n var overlapFunc = calendar.opt('selectOverlap');\n\n if (typeof overlapFunc !== 'function') {\n overlapFunc = null;\n }\n\n for (var relevantInstanceId in relevantInstances) {\n var relevantInstance = relevantInstances[relevantInstanceId]; // intersect! evaluate\n\n if (rangesIntersect(selectionRange, relevantInstance.range)) {\n if (selectionConfig.overlap === false) {\n return false;\n }\n\n if (overlapFunc && !overlapFunc(new EventApi(calendar, relevantDefs[relevantInstance.defId], relevantInstance))) {\n return false;\n }\n }\n } // allow (a function)\n\n\n for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) {\n var selectionAllow = _a[_i];\n\n var fullDateSpan = __assign({}, dateSpanMeta, selection);\n\n if (!selectionAllow(calendar.buildDateSpanApi(fullDateSpan), null)) {\n return false;\n }\n }\n\n return true;\n} // Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\n\n\nfunction allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, calendar) {\n for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) {\n var constraint = constraints_1[_i];\n\n if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, calendar), subjectRange)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\notherEventStore, // for if constraint is an even group ID\nbusinessHoursUnexpanded, // for if constraint is 'businessHours'\ncalendar // for expanding businesshours\n) {\n if (constraint === 'businessHours') {\n return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, calendar));\n } else if (typeof constraint === 'string') {\n // an group ID\n return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) {\n return eventDef.groupId === constraint;\n }));\n } else if (typeof constraint === 'object' && constraint) {\n // non-null object\n return eventStoreToRanges(expandRecurring(constraint, subjectRange, calendar));\n }\n\n return []; // if it's false\n} // TODO: move to event-store file?\n\n\nfunction eventStoreToRanges(eventStore) {\n var instances = eventStore.instances;\n var ranges = [];\n\n for (var instanceId in instances) {\n ranges.push(instances[instanceId].range);\n }\n\n return ranges;\n} // TODO: move to geom file?\n\n\nfunction anyRangesContainRange(outerRanges, innerRange) {\n for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) {\n var outerRange = outerRanges_1[_i];\n\n if (rangeContainsRange(outerRange, innerRange)) {\n return true;\n }\n }\n\n return false;\n} // Parsing\n// ------------------------------------------------------------------------------------------------------------------------\n\n\nfunction normalizeConstraint(input, calendar) {\n if (Array.isArray(input)) {\n return parseEvents(input, '', calendar, true); // allowOpenRange=true\n } else if (typeof input === 'object' && input) {\n // non-null object\n return parseEvents([input], '', calendar, true); // allowOpenRange=true\n } else if (input != null) {\n return String(input);\n } else {\n return null;\n }\n}\n\nfunction htmlEscape(s) {\n return (s + '').replace(/&/g, '&').replace(//g, '>').replace(/'/g, ''').replace(/\"/g, '"').replace(/\\n/g, '
');\n} // Given a hash of CSS properties, returns a string of CSS.\n// Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values.\n\n\nfunction cssToStr(cssProps) {\n var statements = [];\n\n for (var name_1 in cssProps) {\n var val = cssProps[name_1];\n\n if (val != null && val !== '') {\n statements.push(name_1 + ':' + val);\n }\n }\n\n return statements.join(';');\n} // Given an object hash of HTML attribute names to values,\n// generates a string that can be injected between < > in HTML\n\n\nfunction attrsToStr(attrs) {\n var parts = [];\n\n for (var name_2 in attrs) {\n var val = attrs[name_2];\n\n if (val != null) {\n parts.push(name_2 + '=\"' + htmlEscape(val) + '\"');\n }\n }\n\n return parts.join(' ');\n}\n\nfunction parseClassName(raw) {\n if (Array.isArray(raw)) {\n return raw;\n } else if (typeof raw === 'string') {\n return raw.split(/\\s+/);\n } else {\n return [];\n }\n}\n\nvar UNSCOPED_EVENT_UI_PROPS = {\n editable: Boolean,\n startEditable: Boolean,\n durationEditable: Boolean,\n constraint: null,\n overlap: null,\n allow: null,\n className: parseClassName,\n classNames: parseClassName,\n color: String,\n backgroundColor: String,\n borderColor: String,\n textColor: String\n};\n\nfunction processUnscopedUiProps(rawProps, calendar, leftovers) {\n var props = refineProps(rawProps, UNSCOPED_EVENT_UI_PROPS, {}, leftovers);\n var constraint = normalizeConstraint(props.constraint, calendar);\n return {\n startEditable: props.startEditable != null ? props.startEditable : props.editable,\n durationEditable: props.durationEditable != null ? props.durationEditable : props.editable,\n constraints: constraint != null ? [constraint] : [],\n overlap: props.overlap,\n allows: props.allow != null ? [props.allow] : [],\n backgroundColor: props.backgroundColor || props.color,\n borderColor: props.borderColor || props.color,\n textColor: props.textColor,\n classNames: props.classNames.concat(props.className)\n };\n}\n\nfunction processScopedUiProps(prefix, rawScoped, calendar, leftovers) {\n var rawUnscoped = {};\n var wasFound = {};\n\n for (var key in UNSCOPED_EVENT_UI_PROPS) {\n var scopedKey = prefix + capitaliseFirstLetter(key);\n rawUnscoped[key] = rawScoped[scopedKey];\n wasFound[scopedKey] = true;\n }\n\n if (prefix === 'event') {\n rawUnscoped.editable = rawScoped.editable; // special case. there is no 'eventEditable', just 'editable'\n }\n\n if (leftovers) {\n for (var key in rawScoped) {\n if (!wasFound[key]) {\n leftovers[key] = rawScoped[key];\n }\n }\n }\n\n return processUnscopedUiProps(rawUnscoped, calendar);\n}\n\nvar EMPTY_EVENT_UI = {\n startEditable: null,\n durationEditable: null,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: []\n}; // prevent against problems with <2 args!\n\nfunction combineEventUis(uis) {\n return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\n\nfunction combineTwoEventUis(item0, item1) {\n return {\n startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n constraints: item0.constraints.concat(item1.constraints),\n overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n allows: item0.allows.concat(item1.allows),\n backgroundColor: item1.backgroundColor || item0.backgroundColor,\n borderColor: item1.borderColor || item0.borderColor,\n textColor: item1.textColor || item0.textColor,\n classNames: item0.classNames.concat(item1.classNames)\n };\n}\n\nvar NON_DATE_PROPS = {\n id: String,\n groupId: String,\n title: String,\n url: String,\n rendering: String,\n extendedProps: null\n};\nvar DATE_PROPS = {\n start: null,\n date: null,\n end: null,\n allDay: null\n};\nvar uid = 0;\n\nfunction parseEvent(raw, sourceId, calendar, allowOpenRange) {\n var allDayDefault = computeIsAllDayDefault(sourceId, calendar);\n var leftovers0 = {};\n var recurringRes = parseRecurring(raw, // raw, but with single-event stuff stripped out\n allDayDefault, calendar.dateEnv, calendar.pluginSystem.hooks.recurringTypes, leftovers0 // will populate with non-recurring props\n );\n\n if (recurringRes) {\n var def = parseEventDef(leftovers0, sourceId, recurringRes.allDay, Boolean(recurringRes.duration), calendar);\n def.recurringDef = {\n typeId: recurringRes.typeId,\n typeData: recurringRes.typeData,\n duration: recurringRes.duration\n };\n return {\n def: def,\n instance: null\n };\n } else {\n var leftovers1 = {};\n var singleRes = parseSingle(raw, allDayDefault, calendar, leftovers1, allowOpenRange);\n\n if (singleRes) {\n var def = parseEventDef(leftovers1, sourceId, singleRes.allDay, singleRes.hasEnd, calendar);\n var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n return {\n def: def,\n instance: instance\n };\n }\n }\n\n return null;\n}\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\nThe EventNonDateInput has been normalized (id => publicId, etc).\n*/\n\n\nfunction parseEventDef(raw, sourceId, allDay, hasEnd, calendar) {\n var leftovers = {};\n var def = pluckNonDateProps(raw, calendar, leftovers);\n def.defId = String(uid++);\n def.sourceId = sourceId;\n def.allDay = allDay;\n def.hasEnd = hasEnd;\n\n for (var _i = 0, _a = calendar.pluginSystem.hooks.eventDefParsers; _i < _a.length; _i++) {\n var eventDefParser = _a[_i];\n var newLeftovers = {};\n eventDefParser(def, leftovers, newLeftovers);\n leftovers = newLeftovers;\n }\n\n def.extendedProps = __assign(leftovers, def.extendedProps || {}); // help out EventApi from having user modify props\n\n Object.freeze(def.ui.classNames);\n Object.freeze(def.extendedProps);\n return def;\n}\n\nfunction createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n return {\n instanceId: String(uid++),\n defId: defId,\n range: range,\n forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo\n };\n}\n\nfunction parseSingle(raw, allDayDefault, calendar, leftovers, allowOpenRange) {\n var props = pluckDateProps(raw, leftovers);\n var allDay = props.allDay;\n var startMeta;\n var startMarker = null;\n var hasEnd = false;\n var endMeta;\n var endMarker = null;\n startMeta = calendar.dateEnv.createMarkerMeta(props.start);\n\n if (startMeta) {\n startMarker = startMeta.marker;\n } else if (!allowOpenRange) {\n return null;\n }\n\n if (props.end != null) {\n endMeta = calendar.dateEnv.createMarkerMeta(props.end);\n }\n\n if (allDay == null) {\n if (allDayDefault != null) {\n allDay = allDayDefault;\n } else {\n // fall back to the date props LAST\n allDay = (!startMeta || startMeta.isTimeUnspecified) && (!endMeta || endMeta.isTimeUnspecified);\n }\n }\n\n if (allDay && startMarker) {\n startMarker = startOfDay(startMarker);\n }\n\n if (endMeta) {\n endMarker = endMeta.marker;\n\n if (allDay) {\n endMarker = startOfDay(endMarker);\n }\n\n if (startMarker && endMarker <= startMarker) {\n endMarker = null;\n }\n }\n\n if (endMarker) {\n hasEnd = true;\n } else if (!allowOpenRange) {\n hasEnd = calendar.opt('forceEventDuration') || false;\n endMarker = calendar.dateEnv.add(startMarker, allDay ? calendar.defaultAllDayEventDuration : calendar.defaultTimedEventDuration);\n }\n\n return {\n allDay: allDay,\n hasEnd: hasEnd,\n range: {\n start: startMarker,\n end: endMarker\n },\n forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n forcedEndTzo: endMeta ? endMeta.forcedTzo : null\n };\n}\n\nfunction pluckDateProps(raw, leftovers) {\n var props = refineProps(raw, DATE_PROPS, {}, leftovers);\n props.start = props.start !== null ? props.start : props.date;\n delete props.date;\n return props;\n}\n\nfunction pluckNonDateProps(raw, calendar, leftovers) {\n var preLeftovers = {};\n var props = refineProps(raw, NON_DATE_PROPS, {}, preLeftovers);\n var ui = processUnscopedUiProps(preLeftovers, calendar, leftovers);\n props.publicId = props.id;\n delete props.id;\n props.ui = ui;\n return props;\n}\n\nfunction computeIsAllDayDefault(sourceId, calendar) {\n var res = null;\n\n if (sourceId) {\n var source = calendar.state.eventSources[sourceId];\n res = source.allDayDefault;\n }\n\n if (res == null) {\n res = calendar.opt('allDayDefault');\n }\n\n return res;\n}\n\nvar DEF_DEFAULTS = {\n startTime: '09:00',\n endTime: '17:00',\n daysOfWeek: [1, 2, 3, 4, 5],\n rendering: 'inverse-background',\n classNames: 'fc-nonbusiness',\n groupId: '_businessHours' // so multiple defs get grouped\n\n};\n/*\nTODO: pass around as EventDefHash!!!\n*/\n\nfunction parseBusinessHours(input, calendar) {\n return parseEvents(refineInputs(input), '', calendar);\n}\n\nfunction refineInputs(input) {\n var rawDefs;\n\n if (input === true) {\n rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n } else if (Array.isArray(input)) {\n // if specifying an array, every sub-definition NEEDS a day-of-week\n rawDefs = input.filter(function (rawDef) {\n return rawDef.daysOfWeek;\n });\n } else if (typeof input === 'object' && input) {\n // non-null object\n rawDefs = [input];\n } else {\n // is probably false\n rawDefs = [];\n }\n\n rawDefs = rawDefs.map(function (rawDef) {\n return __assign({}, DEF_DEFAULTS, rawDef);\n });\n return rawDefs;\n}\n\nfunction memoizeRendering(renderFunc, unrenderFunc, dependencies) {\n if (dependencies === void 0) {\n dependencies = [];\n }\n\n var dependents = [];\n var thisContext;\n var prevArgs;\n\n function unrender() {\n if (prevArgs) {\n for (var _i = 0, dependents_1 = dependents; _i < dependents_1.length; _i++) {\n var dependent = dependents_1[_i];\n dependent.unrender();\n }\n\n if (unrenderFunc) {\n unrenderFunc.apply(thisContext, prevArgs);\n }\n\n prevArgs = null;\n }\n }\n\n function res() {\n if (!prevArgs || !isArraysEqual(prevArgs, arguments)) {\n unrender();\n thisContext = this;\n prevArgs = arguments;\n renderFunc.apply(this, arguments);\n }\n }\n\n res.dependents = dependents;\n res.unrender = unrender;\n\n for (var _i = 0, dependencies_1 = dependencies; _i < dependencies_1.length; _i++) {\n var dependency = dependencies_1[_i];\n dependency.dependents.push(res);\n }\n\n return res;\n}\n\nvar EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\n\nvar Splitter =\n/** @class */\nfunction () {\n function Splitter() {\n this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n this.splitDateSelection = memoize(this._splitDateSpan);\n this.splitEventStore = memoize(this._splitEventStore);\n this.splitIndividualUi = memoize(this._splitIndividualUi);\n this.splitEventDrag = memoize(this._splitInteraction);\n this.splitEventResize = memoize(this._splitInteraction);\n this.eventUiBuilders = {}; // TODO: typescript protection\n }\n\n Splitter.prototype.splitProps = function (props) {\n var _this = this;\n\n var keyInfos = this.getKeyInfo(props);\n var defKeys = this.getKeysForEventDefs(props.eventStore);\n var dateSelections = this.splitDateSelection(props.dateSelection);\n var individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n\n var eventStores = this.splitEventStore(props.eventStore, defKeys);\n var eventDrags = this.splitEventDrag(props.eventDrag);\n var eventResizes = this.splitEventResize(props.eventResize);\n var splitProps = {};\n this.eventUiBuilders = mapHash(keyInfos, function (info, key) {\n return _this.eventUiBuilders[key] || memoize(buildEventUiForKey);\n });\n\n for (var key in keyInfos) {\n var keyInfo = keyInfos[key];\n var eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n var buildEventUi = this.eventUiBuilders[key];\n splitProps[key] = {\n businessHours: keyInfo.businessHours || props.businessHours,\n dateSelection: dateSelections[key] || null,\n eventStore: eventStore,\n eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n eventDrag: eventDrags[key] || null,\n eventResize: eventResizes[key] || null\n };\n }\n\n return splitProps;\n };\n\n Splitter.prototype._splitDateSpan = function (dateSpan) {\n var dateSpans = {};\n\n if (dateSpan) {\n var keys = this.getKeysForDateSpan(dateSpan);\n\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n dateSpans[key] = dateSpan;\n }\n }\n\n return dateSpans;\n };\n\n Splitter.prototype._getKeysForEventDefs = function (eventStore) {\n var _this = this;\n\n return mapHash(eventStore.defs, function (eventDef) {\n return _this.getKeysForEventDef(eventDef);\n });\n };\n\n Splitter.prototype._splitEventStore = function (eventStore, defKeys) {\n var defs = eventStore.defs,\n instances = eventStore.instances;\n var splitStores = {};\n\n for (var defId in defs) {\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n\n if (!splitStores[key]) {\n splitStores[key] = createEmptyEventStore();\n }\n\n splitStores[key].defs[defId] = defs[defId];\n }\n }\n\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n\n for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) {\n var key = _c[_b];\n\n if (splitStores[key]) {\n // must have already been created\n splitStores[key].instances[instanceId] = instance;\n }\n }\n }\n\n return splitStores;\n };\n\n Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) {\n var splitHashes = {};\n\n for (var defId in eventUiBases) {\n if (defId) {\n // not the '' key\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n\n if (!splitHashes[key]) {\n splitHashes[key] = {};\n }\n\n splitHashes[key][defId] = eventUiBases[defId];\n }\n }\n }\n\n return splitHashes;\n };\n\n Splitter.prototype._splitInteraction = function (interaction) {\n var splitStates = {};\n\n if (interaction) {\n var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents) // can't use cached. might be events from other calendar\n ); // can't rely on defKeys because event data is mutated\n\n\n var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n\n var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n\n var populate = function (key) {\n if (!splitStates[key]) {\n splitStates[key] = {\n affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE,\n mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE,\n isEvent: interaction.isEvent,\n origSeg: interaction.origSeg\n };\n }\n };\n\n for (var key in affectedStores_1) {\n populate(key);\n }\n\n for (var key in mutatedStores_1) {\n populate(key);\n }\n }\n\n return splitStates;\n };\n\n return Splitter;\n}();\n\nfunction buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n var baseParts = [];\n\n if (allUi) {\n baseParts.push(allUi);\n }\n\n if (eventUiForKey) {\n baseParts.push(eventUiForKey);\n }\n\n var stuff = {\n '': combineEventUis(baseParts)\n };\n\n if (individualUi) {\n __assign(stuff, individualUi);\n }\n\n return stuff;\n} // Generates HTML for an anchor to another view into the calendar.\n// Will either generate an tag or a non-clickable tag, depending on enabled settings.\n// `gotoOptions` can either be a DateMarker, or an object with the form:\n// { date, type, forceOff }\n// `type` is a view-type like \"day\" or \"week\". default value is \"day\".\n// `attrs` and `innerHtml` are use to generate the rest of the HTML tag.\n\n\nfunction buildGotoAnchorHtml(allOptions, dateEnv, gotoOptions, attrs, innerHtml) {\n var date;\n var type;\n var forceOff;\n var finalOptions;\n\n if (gotoOptions instanceof Date) {\n date = gotoOptions; // a single date-like input\n } else {\n date = gotoOptions.date;\n type = gotoOptions.type;\n forceOff = gotoOptions.forceOff;\n }\n\n finalOptions = {\n date: dateEnv.formatIso(date, {\n omitTime: true\n }),\n type: type || 'day'\n };\n\n if (typeof attrs === 'string') {\n innerHtml = attrs;\n attrs = null;\n }\n\n attrs = attrs ? ' ' + attrsToStr(attrs) : ''; // will have a leading space\n\n innerHtml = innerHtml || '';\n\n if (!forceOff && allOptions.navLinks) {\n return '' + innerHtml + '';\n } else {\n return '' + innerHtml + '';\n }\n}\n\nfunction getAllDayHtml(allOptions) {\n return allOptions.allDayHtml || htmlEscape(allOptions.allDayText);\n} // Computes HTML classNames for a single-day element\n\n\nfunction getDayClasses(date, dateProfile, context, noThemeHighlight) {\n var calendar = context.calendar,\n options = context.options,\n theme = context.theme,\n dateEnv = context.dateEnv;\n var classes = [];\n var todayStart;\n var todayEnd;\n\n if (!rangeContainsMarker(dateProfile.activeRange, date)) {\n classes.push('fc-disabled-day');\n } else {\n classes.push('fc-' + DAY_IDS[date.getUTCDay()]);\n\n if (options.monthMode && dateEnv.getMonth(date) !== dateEnv.getMonth(dateProfile.currentRange.start)) {\n classes.push('fc-other-month');\n }\n\n todayStart = startOfDay(calendar.getNow());\n todayEnd = addDays(todayStart, 1);\n\n if (date < todayStart) {\n classes.push('fc-past');\n } else if (date >= todayEnd) {\n classes.push('fc-future');\n } else {\n classes.push('fc-today');\n\n if (noThemeHighlight !== true) {\n classes.push(theme.getClass('today'));\n }\n }\n }\n\n return classes;\n} // given a function that resolves a result asynchronously.\n// the function can either call passed-in success and failure callbacks,\n// or it can return a promise.\n// if you need to pass additional params to func, bind them first.\n\n\nfunction unpromisify(func, success, failure) {\n // guard against success/failure callbacks being called more than once\n // and guard against a promise AND callback being used together.\n var isResolved = false;\n\n var wrappedSuccess = function () {\n if (!isResolved) {\n isResolved = true;\n success.apply(this, arguments);\n }\n };\n\n var wrappedFailure = function () {\n if (!isResolved) {\n isResolved = true;\n\n if (failure) {\n failure.apply(this, arguments);\n }\n }\n };\n\n var res = func(wrappedSuccess, wrappedFailure);\n\n if (res && typeof res.then === 'function') {\n res.then(wrappedSuccess, wrappedFailure);\n }\n}\n\nvar Mixin =\n/** @class */\nfunction () {\n function Mixin() {} // mix into a CLASS\n\n\n Mixin.mixInto = function (destClass) {\n this.mixIntoObj(destClass.prototype);\n }; // mix into ANY object\n\n\n Mixin.mixIntoObj = function (destObj) {\n var _this = this;\n\n Object.getOwnPropertyNames(this.prototype).forEach(function (name) {\n if (!destObj[name]) {\n // if destination doesn't already define it\n destObj[name] = _this.prototype[name];\n }\n });\n };\n /*\n will override existing methods\n TODO: remove! not used anymore\n */\n\n\n Mixin.mixOver = function (destClass) {\n var _this = this;\n\n Object.getOwnPropertyNames(this.prototype).forEach(function (name) {\n destClass.prototype[name] = _this.prototype[name];\n });\n };\n\n return Mixin;\n}();\n/*\nUSAGE:\n import { default as EmitterMixin, EmitterInterface } from './EmitterMixin'\nin class:\n on: EmitterInterface['on']\n one: EmitterInterface['one']\n off: EmitterInterface['off']\n trigger: EmitterInterface['trigger']\n triggerWith: EmitterInterface['triggerWith']\n hasHandlers: EmitterInterface['hasHandlers']\nafter class:\n EmitterMixin.mixInto(TheClass)\n*/\n\n\nvar EmitterMixin =\n/** @class */\nfunction (_super) {\n __extends(EmitterMixin, _super);\n\n function EmitterMixin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n EmitterMixin.prototype.on = function (type, handler) {\n addToHash(this._handlers || (this._handlers = {}), type, handler);\n return this; // for chaining\n }; // todo: add comments\n\n\n EmitterMixin.prototype.one = function (type, handler) {\n addToHash(this._oneHandlers || (this._oneHandlers = {}), type, handler);\n return this; // for chaining\n };\n\n EmitterMixin.prototype.off = function (type, handler) {\n if (this._handlers) {\n removeFromHash(this._handlers, type, handler);\n }\n\n if (this._oneHandlers) {\n removeFromHash(this._oneHandlers, type, handler);\n }\n\n return this; // for chaining\n };\n\n EmitterMixin.prototype.trigger = function (type) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n this.triggerWith(type, this, args);\n return this; // for chaining\n };\n\n EmitterMixin.prototype.triggerWith = function (type, context, args) {\n if (this._handlers) {\n applyAll(this._handlers[type], context, args);\n }\n\n if (this._oneHandlers) {\n applyAll(this._oneHandlers[type], context, args);\n delete this._oneHandlers[type]; // will never fire again\n }\n\n return this; // for chaining\n };\n\n EmitterMixin.prototype.hasHandlers = function (type) {\n return this._handlers && this._handlers[type] && this._handlers[type].length || this._oneHandlers && this._oneHandlers[type] && this._oneHandlers[type].length;\n };\n\n return EmitterMixin;\n}(Mixin);\n\nfunction addToHash(hash, type, handler) {\n (hash[type] || (hash[type] = [])).push(handler);\n}\n\nfunction removeFromHash(hash, type, handler) {\n if (handler) {\n if (hash[type]) {\n hash[type] = hash[type].filter(function (func) {\n return func !== handler;\n });\n }\n } else {\n delete hash[type]; // remove all handler funcs for this type\n }\n}\n/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\n\n\nvar PositionCache =\n/** @class */\nfunction () {\n function PositionCache(originEl, els, isHorizontal, isVertical) {\n this.originEl = originEl;\n this.els = els;\n this.isHorizontal = isHorizontal;\n this.isVertical = isVertical;\n } // Queries the els for coordinates and stores them.\n // Call this method before using and of the get* methods below.\n\n\n PositionCache.prototype.build = function () {\n var originEl = this.originEl;\n var originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left\n\n if (this.isHorizontal) {\n this.buildElHorizontals(originClientRect.left);\n }\n\n if (this.isVertical) {\n this.buildElVerticals(originClientRect.top);\n }\n }; // Populates the left/right internal coordinate arrays\n\n\n PositionCache.prototype.buildElHorizontals = function (originClientLeft) {\n var lefts = [];\n var rights = [];\n\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n lefts.push(rect.left - originClientLeft);\n rights.push(rect.right - originClientLeft);\n }\n\n this.lefts = lefts;\n this.rights = rights;\n }; // Populates the top/bottom internal coordinate arrays\n\n\n PositionCache.prototype.buildElVerticals = function (originClientTop) {\n var tops = [];\n var bottoms = [];\n\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n tops.push(rect.top - originClientTop);\n bottoms.push(rect.bottom - originClientTop);\n }\n\n this.tops = tops;\n this.bottoms = bottoms;\n }; // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n // If no intersection is made, returns undefined.\n\n\n PositionCache.prototype.leftToIndex = function (leftPosition) {\n var lefts = this.lefts;\n var rights = this.rights;\n var len = lefts.length;\n var i;\n\n for (i = 0; i < len; i++) {\n if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n return i;\n }\n }\n }; // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n // If no intersection is made, returns undefined.\n\n\n PositionCache.prototype.topToIndex = function (topPosition) {\n var tops = this.tops;\n var bottoms = this.bottoms;\n var len = tops.length;\n var i;\n\n for (i = 0; i < len; i++) {\n if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n return i;\n }\n }\n }; // Gets the width of the element at the given index\n\n\n PositionCache.prototype.getWidth = function (leftIndex) {\n return this.rights[leftIndex] - this.lefts[leftIndex];\n }; // Gets the height of the element at the given index\n\n\n PositionCache.prototype.getHeight = function (topIndex) {\n return this.bottoms[topIndex] - this.tops[topIndex];\n };\n\n return PositionCache;\n}();\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\n\n\nvar ScrollController =\n/** @class */\nfunction () {\n function ScrollController() {}\n\n ScrollController.prototype.getMaxScrollTop = function () {\n return this.getScrollHeight() - this.getClientHeight();\n };\n\n ScrollController.prototype.getMaxScrollLeft = function () {\n return this.getScrollWidth() - this.getClientWidth();\n };\n\n ScrollController.prototype.canScrollVertically = function () {\n return this.getMaxScrollTop() > 0;\n };\n\n ScrollController.prototype.canScrollHorizontally = function () {\n return this.getMaxScrollLeft() > 0;\n };\n\n ScrollController.prototype.canScrollUp = function () {\n return this.getScrollTop() > 0;\n };\n\n ScrollController.prototype.canScrollDown = function () {\n return this.getScrollTop() < this.getMaxScrollTop();\n };\n\n ScrollController.prototype.canScrollLeft = function () {\n return this.getScrollLeft() > 0;\n };\n\n ScrollController.prototype.canScrollRight = function () {\n return this.getScrollLeft() < this.getMaxScrollLeft();\n };\n\n return ScrollController;\n}();\n\nvar ElementScrollController =\n/** @class */\nfunction (_super) {\n __extends(ElementScrollController, _super);\n\n function ElementScrollController(el) {\n var _this = _super.call(this) || this;\n\n _this.el = el;\n return _this;\n }\n\n ElementScrollController.prototype.getScrollTop = function () {\n return this.el.scrollTop;\n };\n\n ElementScrollController.prototype.getScrollLeft = function () {\n return this.el.scrollLeft;\n };\n\n ElementScrollController.prototype.setScrollTop = function (top) {\n this.el.scrollTop = top;\n };\n\n ElementScrollController.prototype.setScrollLeft = function (left) {\n this.el.scrollLeft = left;\n };\n\n ElementScrollController.prototype.getScrollWidth = function () {\n return this.el.scrollWidth;\n };\n\n ElementScrollController.prototype.getScrollHeight = function () {\n return this.el.scrollHeight;\n };\n\n ElementScrollController.prototype.getClientHeight = function () {\n return this.el.clientHeight;\n };\n\n ElementScrollController.prototype.getClientWidth = function () {\n return this.el.clientWidth;\n };\n\n return ElementScrollController;\n}(ScrollController);\n\nvar WindowScrollController =\n/** @class */\nfunction (_super) {\n __extends(WindowScrollController, _super);\n\n function WindowScrollController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n WindowScrollController.prototype.getScrollTop = function () {\n return window.pageYOffset;\n };\n\n WindowScrollController.prototype.getScrollLeft = function () {\n return window.pageXOffset;\n };\n\n WindowScrollController.prototype.setScrollTop = function (n) {\n window.scroll(window.pageXOffset, n);\n };\n\n WindowScrollController.prototype.setScrollLeft = function (n) {\n window.scroll(n, window.pageYOffset);\n };\n\n WindowScrollController.prototype.getScrollWidth = function () {\n return document.documentElement.scrollWidth;\n };\n\n WindowScrollController.prototype.getScrollHeight = function () {\n return document.documentElement.scrollHeight;\n };\n\n WindowScrollController.prototype.getClientHeight = function () {\n return document.documentElement.clientHeight;\n };\n\n WindowScrollController.prototype.getClientWidth = function () {\n return document.documentElement.clientWidth;\n };\n\n return WindowScrollController;\n}(ScrollController);\n/*\nEmbodies a div that has potential scrollbars\n*/\n\n\nvar ScrollComponent =\n/** @class */\nfunction (_super) {\n __extends(ScrollComponent, _super);\n\n function ScrollComponent(overflowX, overflowY) {\n var _this = _super.call(this, createElement('div', {\n className: 'fc-scroller'\n })) || this;\n\n _this.overflowX = overflowX;\n _this.overflowY = overflowY;\n\n _this.applyOverflow();\n\n return _this;\n } // sets to natural height, unlocks overflow\n\n\n ScrollComponent.prototype.clear = function () {\n this.setHeight('auto');\n this.applyOverflow();\n };\n\n ScrollComponent.prototype.destroy = function () {\n removeElement(this.el);\n }; // Overflow\n // -----------------------------------------------------------------------------------------------------------------\n\n\n ScrollComponent.prototype.applyOverflow = function () {\n applyStyle(this.el, {\n overflowX: this.overflowX,\n overflowY: this.overflowY\n });\n }; // Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'.\n // Useful for preserving scrollbar widths regardless of future resizes.\n // Can pass in scrollbarWidths for optimization.\n\n\n ScrollComponent.prototype.lockOverflow = function (scrollbarWidths) {\n var overflowX = this.overflowX;\n var overflowY = this.overflowY;\n scrollbarWidths = scrollbarWidths || this.getScrollbarWidths();\n\n if (overflowX === 'auto') {\n overflowX = scrollbarWidths.bottom || // horizontal scrollbars?\n this.canScrollHorizontally() // OR scrolling pane with massless scrollbars?\n ? 'scroll' : 'hidden';\n }\n\n if (overflowY === 'auto') {\n overflowY = scrollbarWidths.left || scrollbarWidths.right || // horizontal scrollbars?\n this.canScrollVertically() // OR scrolling pane with massless scrollbars?\n ? 'scroll' : 'hidden';\n }\n\n applyStyle(this.el, {\n overflowX: overflowX,\n overflowY: overflowY\n });\n };\n\n ScrollComponent.prototype.setHeight = function (height) {\n applyStyleProp(this.el, 'height', height);\n };\n\n ScrollComponent.prototype.getScrollbarWidths = function () {\n var edges = computeEdges(this.el);\n return {\n left: edges.scrollbarLeft,\n right: edges.scrollbarRight,\n bottom: edges.scrollbarBottom\n };\n };\n\n return ScrollComponent;\n}(ElementScrollController);\n\nvar Theme =\n/** @class */\nfunction () {\n function Theme(calendarOptions) {\n this.calendarOptions = calendarOptions;\n this.processIconOverride();\n }\n\n Theme.prototype.processIconOverride = function () {\n if (this.iconOverrideOption) {\n this.setIconOverride(this.calendarOptions[this.iconOverrideOption]);\n }\n };\n\n Theme.prototype.setIconOverride = function (iconOverrideHash) {\n var iconClassesCopy;\n var buttonName;\n\n if (typeof iconOverrideHash === 'object' && iconOverrideHash) {\n // non-null object\n iconClassesCopy = __assign({}, this.iconClasses);\n\n for (buttonName in iconOverrideHash) {\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n }\n\n this.iconClasses = iconClassesCopy;\n } else if (iconOverrideHash === false) {\n this.iconClasses = {};\n }\n };\n\n Theme.prototype.applyIconOverridePrefix = function (className) {\n var prefix = this.iconOverridePrefix;\n\n if (prefix && className.indexOf(prefix) !== 0) {\n // if not already present\n className = prefix + className;\n }\n\n return className;\n };\n\n Theme.prototype.getClass = function (key) {\n return this.classes[key] || '';\n };\n\n Theme.prototype.getIconClass = function (buttonName) {\n var className = this.iconClasses[buttonName];\n\n if (className) {\n return this.baseIconClass + ' ' + className;\n }\n\n return '';\n };\n\n Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {\n var className;\n\n if (this.iconOverrideCustomButtonOption) {\n className = customButtonProps[this.iconOverrideCustomButtonOption];\n\n if (className) {\n return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className);\n }\n }\n\n return '';\n };\n\n return Theme;\n}();\n\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\nvar guid = 0;\n\nvar ComponentContext =\n/** @class */\nfunction () {\n function ComponentContext(calendar, theme, dateEnv, options, view) {\n this.calendar = calendar;\n this.theme = theme;\n this.dateEnv = dateEnv;\n this.options = options;\n this.view = view;\n this.isRtl = options.dir === 'rtl';\n this.eventOrderSpecs = parseFieldSpecs(options.eventOrder);\n this.nextDayThreshold = createDuration(options.nextDayThreshold);\n }\n\n ComponentContext.prototype.extend = function (options, view) {\n return new ComponentContext(this.calendar, this.theme, this.dateEnv, options || this.options, view || this.view);\n };\n\n return ComponentContext;\n}();\n\nvar Component =\n/** @class */\nfunction () {\n function Component() {\n this.everRendered = false;\n this.uid = String(guid++);\n }\n\n Component.addEqualityFuncs = function (newFuncs) {\n this.prototype.equalityFuncs = __assign({}, this.prototype.equalityFuncs, newFuncs);\n };\n\n Component.prototype.receiveProps = function (props, context) {\n this.receiveContext(context);\n\n var _a = recycleProps(this.props || {}, props, this.equalityFuncs),\n anyChanges = _a.anyChanges,\n comboProps = _a.comboProps;\n\n this.props = comboProps;\n\n if (anyChanges) {\n if (this.everRendered) {\n this.beforeUpdate();\n }\n\n this.render(comboProps, context);\n\n if (this.everRendered) {\n this.afterUpdate();\n }\n }\n\n this.everRendered = true;\n };\n\n Component.prototype.receiveContext = function (context) {\n var oldContext = this.context;\n this.context = context;\n\n if (!oldContext) {\n this.firstContext(context);\n }\n };\n\n Component.prototype.render = function (props, context) {};\n\n Component.prototype.firstContext = function (context) {};\n\n Component.prototype.beforeUpdate = function () {};\n\n Component.prototype.afterUpdate = function () {}; // after destroy is called, this component won't ever be used again\n\n\n Component.prototype.destroy = function () {};\n\n return Component;\n}();\n\nComponent.prototype.equalityFuncs = {};\n/*\nReuses old values when equal. If anything is unequal, returns newProps as-is.\nGreat for PureComponent, but won't be feasible with React, so just eliminate and use React's DOM diffing.\n*/\n\nfunction recycleProps(oldProps, newProps, equalityFuncs) {\n var comboProps = {}; // some old, some new\n\n var anyChanges = false;\n\n for (var key in newProps) {\n if (key in oldProps && (oldProps[key] === newProps[key] || equalityFuncs[key] && equalityFuncs[key](oldProps[key], newProps[key]))) {\n // equal to old? use old prop\n comboProps[key] = oldProps[key];\n } else {\n comboProps[key] = newProps[key];\n anyChanges = true;\n }\n }\n\n for (var key in oldProps) {\n if (!(key in newProps)) {\n anyChanges = true;\n break;\n }\n }\n\n return {\n anyChanges: anyChanges,\n comboProps: comboProps\n };\n}\n/*\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\n\n\nvar DateComponent =\n/** @class */\nfunction (_super) {\n __extends(DateComponent, _super);\n\n function DateComponent(el) {\n var _this = _super.call(this) || this;\n\n _this.el = el;\n return _this;\n }\n\n DateComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n\n removeElement(this.el);\n }; // Hit System\n // -----------------------------------------------------------------------------------------------------------------\n\n\n DateComponent.prototype.buildPositionCaches = function () {};\n\n DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n return null; // this should be abstract\n }; // Validation\n // -----------------------------------------------------------------------------------------------------------------\n\n\n DateComponent.prototype.isInteractionValid = function (interaction) {\n var calendar = this.context.calendar;\n var dateProfile = this.props.dateProfile; // HACK\n\n var instances = interaction.mutatedEvents.instances;\n\n if (dateProfile) {\n // HACK for DayTile\n for (var instanceId in instances) {\n if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n return false;\n }\n }\n }\n\n return isInteractionValid(interaction, calendar);\n };\n\n DateComponent.prototype.isDateSelectionValid = function (selection) {\n var calendar = this.context.calendar;\n var dateProfile = this.props.dateProfile; // HACK\n\n if (dateProfile && // HACK for DayTile\n !rangeContainsRange(dateProfile.validRange, selection.range)) {\n return false;\n }\n\n return isDateSelectionValid(selection, calendar);\n }; // Pointer Interaction Utils\n // -----------------------------------------------------------------------------------------------------------------\n\n\n DateComponent.prototype.isValidSegDownEl = function (el) {\n return !this.props.eventDrag && // HACK\n !this.props.eventResize && // HACK\n !elementClosest(el, '.fc-mirror') && (this.isPopover() || !this.isInPopover(el)); // ^above line ensures we don't detect a seg interaction within a nested component.\n // it's a HACK because it only supports a popover as the nested component.\n };\n\n DateComponent.prototype.isValidDateDownEl = function (el) {\n var segEl = elementClosest(el, this.fgSegSelector);\n return (!segEl || segEl.classList.contains('fc-mirror')) && !elementClosest(el, '.fc-more') && // a \"more..\" link\n !elementClosest(el, 'a[data-goto]') && // a clickable nav link\n !this.isInPopover(el);\n };\n\n DateComponent.prototype.isPopover = function () {\n return this.el.classList.contains('fc-popover');\n };\n\n DateComponent.prototype.isInPopover = function (el) {\n return Boolean(elementClosest(el, '.fc-popover'));\n };\n\n return DateComponent;\n}(Component);\n\nDateComponent.prototype.fgSegSelector = '.fc-event-container > *';\nDateComponent.prototype.bgSegSelector = '.fc-bgevent:not(.fc-nonbusiness)';\nvar uid$1 = 0;\n\nfunction createPlugin(input) {\n return {\n id: String(uid$1++),\n deps: input.deps || [],\n reducers: input.reducers || [],\n eventDefParsers: input.eventDefParsers || [],\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n eventResizeJoinTransforms: input.eventResizeJoinTransforms || [],\n viewContainerModifiers: input.viewContainerModifiers || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n defaultView: input.defaultView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {}\n };\n}\n\nvar PluginSystem =\n/** @class */\nfunction () {\n function PluginSystem() {\n this.hooks = {\n reducers: [],\n eventDefParsers: [],\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n eventResizeJoinTransforms: [],\n viewContainerModifiers: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n defaultView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {}\n };\n this.addedHash = {};\n }\n\n PluginSystem.prototype.add = function (plugin) {\n if (!this.addedHash[plugin.id]) {\n this.addedHash[plugin.id] = true;\n\n for (var _i = 0, _a = plugin.deps; _i < _a.length; _i++) {\n var dep = _a[_i];\n this.add(dep);\n }\n\n this.hooks = combineHooks(this.hooks, plugin);\n }\n };\n\n return PluginSystem;\n}();\n\nfunction combineHooks(hooks0, hooks1) {\n return {\n reducers: hooks0.reducers.concat(hooks1.reducers),\n eventDefParsers: hooks0.eventDefParsers.concat(hooks1.eventDefParsers),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: __assign({}, hooks0.views, hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n eventResizeJoinTransforms: hooks0.eventResizeJoinTransforms.concat(hooks1.eventResizeJoinTransforms),\n viewContainerModifiers: hooks0.viewContainerModifiers.concat(hooks1.viewContainerModifiers),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: __assign({}, hooks0.themeClasses, hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n defaultView: hooks0.defaultView || hooks1.defaultView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: __assign({}, hooks0.optionChangeHandlers, hooks1.optionChangeHandlers)\n };\n}\n\nvar eventSourceDef = {\n ignoreRange: true,\n parseMeta: function (raw) {\n if (Array.isArray(raw)) {\n // short form\n return raw;\n } else if (Array.isArray(raw.events)) {\n return raw.events;\n }\n\n return null;\n },\n fetch: function (arg, success) {\n success({\n rawEvents: arg.eventSource.meta\n });\n }\n};\nvar ArrayEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef]\n});\nvar eventSourceDef$1 = {\n parseMeta: function (raw) {\n if (typeof raw === 'function') {\n // short form\n return raw;\n } else if (typeof raw.events === 'function') {\n return raw.events;\n }\n\n return null;\n },\n fetch: function (arg, success, failure) {\n var dateEnv = arg.calendar.dateEnv;\n var func = arg.eventSource.meta;\n unpromisify(func.bind(null, {\n start: dateEnv.toDate(arg.range.start),\n end: dateEnv.toDate(arg.range.end),\n startStr: dateEnv.formatIso(arg.range.start),\n endStr: dateEnv.formatIso(arg.range.end),\n timeZone: dateEnv.timeZone\n }), function (rawEvents) {\n success({\n rawEvents: rawEvents\n }); // needs an object response\n }, failure // send errorObj directly to failure callback\n );\n }\n};\nvar FuncEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$1]\n});\n\nfunction requestJson(method, url, params, successCallback, failureCallback) {\n method = method.toUpperCase();\n var body = null;\n\n if (method === 'GET') {\n url = injectQueryStringParams(url, params);\n } else {\n body = encodeParams(params);\n }\n\n var xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n\n if (method !== 'GET') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 400) {\n try {\n var res = JSON.parse(xhr.responseText);\n successCallback(res, xhr);\n } catch (err) {\n failureCallback('Failure parsing JSON', xhr);\n }\n } else {\n failureCallback('Request failed', xhr);\n }\n };\n\n xhr.onerror = function () {\n failureCallback('Request failed', xhr);\n };\n\n xhr.send(body);\n}\n\nfunction injectQueryStringParams(url, params) {\n return url + (url.indexOf('?') === -1 ? '?' : '&') + encodeParams(params);\n}\n\nfunction encodeParams(params) {\n var parts = [];\n\n for (var key in params) {\n parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key]));\n }\n\n return parts.join('&');\n}\n\nvar eventSourceDef$2 = {\n parseMeta: function (raw) {\n if (typeof raw === 'string') {\n // short form\n raw = {\n url: raw\n };\n } else if (!raw || typeof raw !== 'object' || !raw.url) {\n return null;\n }\n\n return {\n url: raw.url,\n method: (raw.method || 'GET').toUpperCase(),\n extraParams: raw.extraParams,\n startParam: raw.startParam,\n endParam: raw.endParam,\n timeZoneParam: raw.timeZoneParam\n };\n },\n fetch: function (arg, success, failure) {\n var meta = arg.eventSource.meta;\n var requestParams = buildRequestParams(meta, arg.range, arg.calendar);\n requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) {\n success({\n rawEvents: rawEvents,\n xhr: xhr\n });\n }, function (errorMessage, xhr) {\n failure({\n message: errorMessage,\n xhr: xhr\n });\n });\n }\n};\nvar JsonFeedEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$2]\n});\n\nfunction buildRequestParams(meta, range, calendar) {\n var dateEnv = calendar.dateEnv;\n var startParam;\n var endParam;\n var timeZoneParam;\n var customRequestParams;\n var params = {};\n startParam = meta.startParam;\n\n if (startParam == null) {\n startParam = calendar.opt('startParam');\n }\n\n endParam = meta.endParam;\n\n if (endParam == null) {\n endParam = calendar.opt('endParam');\n }\n\n timeZoneParam = meta.timeZoneParam;\n\n if (timeZoneParam == null) {\n timeZoneParam = calendar.opt('timeZoneParam');\n } // retrieve any outbound GET/POST data from the options\n\n\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n } else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n\n __assign(params, customRequestParams);\n\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n\n return params;\n}\n\nvar recurring = {\n parse: function (rawEvent, leftoverProps, dateEnv) {\n var createMarker = dateEnv.createMarker.bind(dateEnv);\n var processors = {\n daysOfWeek: null,\n startTime: createDuration,\n endTime: createDuration,\n startRecur: createMarker,\n endRecur: createMarker\n };\n var props = refineProps(rawEvent, processors, {}, leftoverProps);\n var anyValid = false;\n\n for (var propName in props) {\n if (props[propName] != null) {\n anyValid = true;\n break;\n }\n }\n\n if (anyValid) {\n var duration = null;\n\n if ('duration' in leftoverProps) {\n duration = createDuration(leftoverProps.duration);\n delete leftoverProps.duration;\n }\n\n if (!duration && props.startTime && props.endTime) {\n duration = subtractDurations(props.endTime, props.startTime);\n }\n\n return {\n allDayGuess: Boolean(!props.startTime && !props.endTime),\n duration: duration,\n typeData: props // doesn't need endTime anymore but oh well\n\n };\n }\n\n return null;\n },\n expand: function (typeData, framingRange, dateEnv) {\n var clippedFramingRange = intersectRanges(framingRange, {\n start: typeData.startRecur,\n end: typeData.endRecur\n });\n\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);\n } else {\n return [];\n }\n }\n};\nvar SimpleRecurrencePlugin = createPlugin({\n recurringTypes: [recurring]\n});\n\nfunction expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {\n var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n var dayMarker = startOfDay(framingRange.start);\n var endMarker = framingRange.end;\n var instanceStarts = [];\n\n while (dayMarker < endMarker) {\n var instanceStart // if everyday, or this particular day-of-week\n = void 0; // if everyday, or this particular day-of-week\n\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime);\n } else {\n instanceStart = dayMarker;\n }\n\n instanceStarts.push(instanceStart);\n }\n\n dayMarker = addDays(dayMarker, 1);\n }\n\n return instanceStarts;\n}\n\nvar DefaultOptionChangeHandlers = createPlugin({\n optionChangeHandlers: {\n events: function (events, calendar, deepEqual) {\n handleEventSources([events], calendar, deepEqual);\n },\n eventSources: handleEventSources,\n plugins: handlePlugins\n }\n});\n\nfunction handleEventSources(inputs, calendar, deepEqual) {\n var unfoundSources = hashValuesToArray(calendar.state.eventSources);\n var newInputs = [];\n\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n var inputFound = false;\n\n for (var i = 0; i < unfoundSources.length; i++) {\n if (deepEqual(unfoundSources[i]._raw, input)) {\n unfoundSources.splice(i, 1); // delete\n\n inputFound = true;\n break;\n }\n }\n\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n\n for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) {\n var unfoundSource = unfoundSources_1[_a];\n calendar.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId\n });\n }\n\n for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) {\n var newInput = newInputs_1[_b];\n calendar.addEventSource(newInput);\n }\n} // shortcoming: won't remove plugins\n\n\nfunction handlePlugins(inputs, calendar) {\n calendar.addPluginInputs(inputs); // will gracefully handle duplicates\n}\n\nvar config = {}; // TODO: make these options\n\nvar globalDefaults = {\n defaultRangeSeparator: ' - ',\n titleRangeSeparator: ' \\u2013 ',\n defaultTimedEventDuration: '01:00:00',\n defaultAllDayEventDuration: {\n day: 1\n },\n forceEventDuration: false,\n nextDayThreshold: '00:00:00',\n // display\n columnHeader: true,\n defaultView: '',\n aspectRatio: 1.35,\n header: {\n left: 'title',\n center: '',\n right: 'today prev,next'\n },\n weekends: true,\n weekNumbers: false,\n weekNumberCalculation: 'local',\n editable: false,\n // nowIndicator: false,\n scrollTime: '06:00:00',\n minTime: '00:00:00',\n maxTime: '24:00:00',\n showNonCurrentDates: true,\n // event ajax\n lazyFetching: true,\n startParam: 'start',\n endParam: 'end',\n timeZoneParam: 'timeZone',\n timeZone: 'local',\n // allDayDefault: undefined,\n // locale\n locales: [],\n locale: '',\n // dir: will get this from the default locale\n // buttonIcons: null,\n // allows setting a min-height to the event segment to prevent short events overlapping each other\n timeGridEventMinHeight: 0,\n themeSystem: 'standard',\n // eventResizableFromStart: false,\n dragRevertDuration: 500,\n dragScroll: true,\n allDayMaintainDuration: false,\n // selectable: false,\n unselectAuto: true,\n // selectMinDistance: 0,\n dropAccept: '*',\n eventOrder: 'start,-duration,allDay,title',\n // ^ if start tie, longer events go before shorter. final tie-breaker is title text\n // rerenderDelay: null,\n eventLimit: false,\n eventLimitClick: 'popover',\n dayPopoverFormat: {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n },\n handleWindowResize: true,\n windowResizeDelay: 100,\n longPressDelay: 1000,\n eventDragMinDistance: 5 // only applies to mouse\n\n};\nvar rtlDefaults = {\n header: {\n left: 'next,prev today',\n center: '',\n right: 'title'\n },\n buttonIcons: {\n // TODO: make RTL support the responibility of the theme\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left'\n }\n};\nvar complexOptions = ['header', 'footer', 'buttonText', 'buttonIcons']; // Merges an array of option objects into a single object\n\nfunction mergeOptions(optionObjs) {\n return mergeProps(optionObjs, complexOptions);\n} // TODO: move this stuff to a \"plugin\"-related file...\n\n\nvar INTERNAL_PLUGINS = [ArrayEventSourcePlugin, FuncEventSourcePlugin, JsonFeedEventSourcePlugin, SimpleRecurrencePlugin, DefaultOptionChangeHandlers];\n\nfunction refinePluginDefs(pluginInputs) {\n var plugins = [];\n\n for (var _i = 0, pluginInputs_1 = pluginInputs; _i < pluginInputs_1.length; _i++) {\n var pluginInput = pluginInputs_1[_i];\n\n if (typeof pluginInput === 'string') {\n var globalName = 'FullCalendar' + capitaliseFirstLetter(pluginInput);\n\n if (!window[globalName]) {\n console.warn('Plugin file not loaded for ' + pluginInput);\n } else {\n plugins.push(window[globalName].default); // is an ES6 module\n }\n } else {\n plugins.push(pluginInput);\n }\n }\n\n return INTERNAL_PLUGINS.concat(plugins);\n}\n\nvar RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4 // 4 days need to be within the year to be considered the first week\n\n },\n dir: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list'\n },\n weekLabel: 'W',\n allDayText: 'all-day',\n eventLimitText: 'more',\n noEventsMessage: 'No events to display'\n};\n\nfunction parseRawLocales(explicitRawLocales) {\n var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n var globalArray = window['FullCalendarLocalesAll'] || []; // from locales-all.js\n\n var globalObject = window['FullCalendarLocales'] || {}; // from locales/*.js. keys are meaningless\n\n var allRawLocales = globalArray.concat( // globalArray is low prio\n hashValuesToArray(globalObject), // medium prio\n explicitRawLocales // highest prio\n );\n var rawLocaleMap = {\n en: RAW_EN_LOCALE // necessary?\n\n };\n\n for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) {\n var rawLocale = allRawLocales_1[_i];\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n\n return {\n map: rawLocaleMap,\n defaultCode: defaultCode\n };\n}\n\nfunction buildLocale(inputSingular, available) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n } else {\n return queryLocale(inputSingular, available);\n }\n}\n\nfunction queryLocale(codeArg, available) {\n var codes = [].concat(codeArg || []); // will convert to array\n\n var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n}\n\nfunction queryRawLocale(codes, available) {\n for (var i = 0; i < codes.length; i++) {\n var parts = codes[i].toLocaleLowerCase().split('-');\n\n for (var j = parts.length; j > 0; j--) {\n var simpleId = parts.slice(0, j).join('-');\n\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n\n return null;\n}\n\nfunction parseLocale(codeArg, codes, raw) {\n var merged = mergeProps([RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n\n var week = merged.week;\n delete merged.week;\n return {\n codeArg: codeArg,\n codes: codes,\n week: week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged\n };\n}\n\nvar OptionsManager =\n/** @class */\nfunction () {\n function OptionsManager(overrides) {\n this.overrides = __assign({}, overrides); // make a copy\n\n this.dynamicOverrides = {};\n this.compute();\n }\n\n OptionsManager.prototype.mutate = function (updates, removals, isDynamic) {\n if (!Object.keys(updates).length && !removals.length) {\n return;\n }\n\n var overrideHash = isDynamic ? this.dynamicOverrides : this.overrides;\n\n __assign(overrideHash, updates);\n\n for (var _i = 0, removals_1 = removals; _i < removals_1.length; _i++) {\n var propName = removals_1[_i];\n delete overrideHash[propName];\n }\n\n this.compute();\n }; // Computes the flattened options hash for the calendar and assigns to `this.options`.\n // Assumes this.overrides and this.dynamicOverrides have already been initialized.\n\n\n OptionsManager.prototype.compute = function () {\n // TODO: not a very efficient system\n var locales = firstDefined( // explicit locale option given?\n this.dynamicOverrides.locales, this.overrides.locales, globalDefaults.locales);\n var locale = firstDefined( // explicit locales option given?\n this.dynamicOverrides.locale, this.overrides.locale, globalDefaults.locale);\n var available = parseRawLocales(locales);\n var localeDefaults = buildLocale(locale || available.defaultCode, available.map).options;\n var dir = firstDefined( // based on options computed so far, is direction RTL?\n this.dynamicOverrides.dir, this.overrides.dir, localeDefaults.dir);\n var dirDefaults = dir === 'rtl' ? rtlDefaults : {};\n this.dirDefaults = dirDefaults;\n this.localeDefaults = localeDefaults;\n this.computed = mergeOptions([globalDefaults, dirDefaults, localeDefaults, this.overrides, this.dynamicOverrides]);\n };\n\n return OptionsManager;\n}();\n\nvar calendarSystemClassMap = {};\n\nfunction registerCalendarSystem(name, theClass) {\n calendarSystemClassMap[name] = theClass;\n}\n\nfunction createCalendarSystem(name) {\n return new calendarSystemClassMap[name]();\n}\n\nvar GregorianCalendarSystem =\n/** @class */\nfunction () {\n function GregorianCalendarSystem() {}\n\n GregorianCalendarSystem.prototype.getMarkerYear = function (d) {\n return d.getUTCFullYear();\n };\n\n GregorianCalendarSystem.prototype.getMarkerMonth = function (d) {\n return d.getUTCMonth();\n };\n\n GregorianCalendarSystem.prototype.getMarkerDay = function (d) {\n return d.getUTCDate();\n };\n\n GregorianCalendarSystem.prototype.arrayToMarker = function (arr) {\n return arrayToUtcDate(arr);\n };\n\n GregorianCalendarSystem.prototype.markerToArray = function (marker) {\n return dateToUtcArray(marker);\n };\n\n return GregorianCalendarSystem;\n}();\n\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\nvar ISO_RE = /^\\s*(\\d{4})(-(\\d{2})(-(\\d{2})([T ](\\d{2}):(\\d{2})(:(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\n\nfunction parse(str) {\n var m = ISO_RE.exec(str);\n\n if (m) {\n var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number('0.' + m[12]) * 1000 : 0));\n\n if (isValidDate(marker)) {\n var timeZoneOffset = null;\n\n if (m[13]) {\n timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 + Number(m[18] || 0));\n }\n\n return {\n marker: marker,\n isTimeUnspecified: !m[6],\n timeZoneOffset: timeZoneOffset\n };\n }\n }\n\n return null;\n}\n\nvar DateEnv =\n/** @class */\nfunction () {\n function DateEnv(settings) {\n var timeZone = this.timeZone = settings.timeZone;\n var isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n\n if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n }\n\n this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n this.locale = settings.locale;\n this.weekDow = settings.locale.week.dow;\n this.weekDoy = settings.locale.week.doy;\n\n if (settings.weekNumberCalculation === 'ISO') {\n this.weekDow = 1;\n this.weekDoy = 4;\n }\n\n if (typeof settings.firstDay === 'number') {\n this.weekDow = settings.firstDay;\n }\n\n if (typeof settings.weekNumberCalculation === 'function') {\n this.weekNumberFunc = settings.weekNumberCalculation;\n }\n\n this.weekLabel = settings.weekLabel != null ? settings.weekLabel : settings.locale.options.weekLabel;\n this.cmdFormatter = settings.cmdFormatter;\n } // Creating / Parsing\n\n\n DateEnv.prototype.createMarker = function (input) {\n var meta = this.createMarkerMeta(input);\n\n if (meta === null) {\n return null;\n }\n\n return meta.marker;\n };\n\n DateEnv.prototype.createNowMarker = function () {\n if (this.canComputeOffset) {\n return this.timestampToMarker(new Date().valueOf());\n } else {\n // if we can't compute the current date val for a timezone,\n // better to give the current local date vals than UTC\n return arrayToUtcDate(dateToLocalArray(new Date()));\n }\n };\n\n DateEnv.prototype.createMarkerMeta = function (input) {\n if (typeof input === 'string') {\n return this.parse(input);\n }\n\n var marker = null;\n\n if (typeof input === 'number') {\n marker = this.timestampToMarker(input);\n } else if (input instanceof Date) {\n input = input.valueOf();\n\n if (!isNaN(input)) {\n marker = this.timestampToMarker(input);\n }\n } else if (Array.isArray(input)) {\n marker = arrayToUtcDate(input);\n }\n\n if (marker === null || !isValidDate(marker)) {\n return null;\n }\n\n return {\n marker: marker,\n isTimeUnspecified: false,\n forcedTzo: null\n };\n };\n\n DateEnv.prototype.parse = function (s) {\n var parts = parse(s);\n\n if (parts === null) {\n return null;\n }\n\n var marker = parts.marker;\n var forcedTzo = null;\n\n if (parts.timeZoneOffset !== null) {\n if (this.canComputeOffset) {\n marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n } else {\n forcedTzo = parts.timeZoneOffset;\n }\n }\n\n return {\n marker: marker,\n isTimeUnspecified: parts.isTimeUnspecified,\n forcedTzo: forcedTzo\n };\n }; // Accessors\n\n\n DateEnv.prototype.getYear = function (marker) {\n return this.calendarSystem.getMarkerYear(marker);\n };\n\n DateEnv.prototype.getMonth = function (marker) {\n return this.calendarSystem.getMarkerMonth(marker);\n }; // Adding / Subtracting\n\n\n DateEnv.prototype.add = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += dur.years;\n a[1] += dur.months;\n a[2] += dur.days;\n a[6] += dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n\n DateEnv.prototype.subtract = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] -= dur.years;\n a[1] -= dur.months;\n a[2] -= dur.days;\n a[6] -= dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n\n DateEnv.prototype.addYears = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n\n DateEnv.prototype.addMonths = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[1] += n;\n return this.calendarSystem.arrayToMarker(a);\n }; // Diffing Whole Units\n\n\n DateEnv.prototype.diffWholeYears = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n\n if (timeAsMs(m0) === timeAsMs(m1) && calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) && calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n }\n\n return null;\n };\n\n DateEnv.prototype.diffWholeMonths = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n\n if (timeAsMs(m0) === timeAsMs(m1) && calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n return calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0) + (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n }\n\n return null;\n }; // Range / Duration\n\n\n DateEnv.prototype.greatestWholeUnit = function (m0, m1) {\n var n = this.diffWholeYears(m0, m1);\n\n if (n !== null) {\n return {\n unit: 'year',\n value: n\n };\n }\n\n n = this.diffWholeMonths(m0, m1);\n\n if (n !== null) {\n return {\n unit: 'month',\n value: n\n };\n }\n\n n = diffWholeWeeks(m0, m1);\n\n if (n !== null) {\n return {\n unit: 'week',\n value: n\n };\n }\n\n n = diffWholeDays(m0, m1);\n\n if (n !== null) {\n return {\n unit: 'day',\n value: n\n };\n }\n\n n = diffHours(m0, m1);\n\n if (isInt(n)) {\n return {\n unit: 'hour',\n value: n\n };\n }\n\n n = diffMinutes(m0, m1);\n\n if (isInt(n)) {\n return {\n unit: 'minute',\n value: n\n };\n }\n\n n = diffSeconds(m0, m1);\n\n if (isInt(n)) {\n return {\n unit: 'second',\n value: n\n };\n }\n\n return {\n unit: 'millisecond',\n value: m1.valueOf() - m0.valueOf()\n };\n };\n\n DateEnv.prototype.countDurationsBetween = function (m0, m1, d) {\n // TODO: can use greatestWholeUnit\n var diff;\n\n if (d.years) {\n diff = this.diffWholeYears(m0, m1);\n\n if (diff !== null) {\n return diff / asRoughYears(d);\n }\n }\n\n if (d.months) {\n diff = this.diffWholeMonths(m0, m1);\n\n if (diff !== null) {\n return diff / asRoughMonths(d);\n }\n }\n\n if (d.days) {\n diff = diffWholeDays(m0, m1);\n\n if (diff !== null) {\n return diff / asRoughDays(d);\n }\n }\n\n return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n }; // Start-Of\n\n\n DateEnv.prototype.startOf = function (m, unit) {\n if (unit === 'year') {\n return this.startOfYear(m);\n } else if (unit === 'month') {\n return this.startOfMonth(m);\n } else if (unit === 'week') {\n return this.startOfWeek(m);\n } else if (unit === 'day') {\n return startOfDay(m);\n } else if (unit === 'hour') {\n return startOfHour(m);\n } else if (unit === 'minute') {\n return startOfMinute(m);\n } else if (unit === 'second') {\n return startOfSecond(m);\n }\n };\n\n DateEnv.prototype.startOfYear = function (m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m)]);\n };\n\n DateEnv.prototype.startOfMonth = function (m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m), this.calendarSystem.getMarkerMonth(m)]);\n };\n\n DateEnv.prototype.startOfWeek = function (m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m), this.calendarSystem.getMarkerMonth(m), m.getUTCDate() - (m.getUTCDay() - this.weekDow + 7) % 7]);\n }; // Week Number\n\n\n DateEnv.prototype.computeWeekNumber = function (marker) {\n if (this.weekNumberFunc) {\n return this.weekNumberFunc(this.toDate(marker));\n } else {\n return weekOfYear(marker, this.weekDow, this.weekDoy);\n }\n }; // TODO: choke on timeZoneName: long\n\n\n DateEnv.prototype.format = function (marker, formatter, dateOptions) {\n if (dateOptions === void 0) {\n dateOptions = {};\n }\n\n return formatter.format({\n marker: marker,\n timeZoneOffset: dateOptions.forcedTzo != null ? dateOptions.forcedTzo : this.offsetForMarker(marker)\n }, this);\n };\n\n DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) {\n if (dateOptions === void 0) {\n dateOptions = {};\n }\n\n if (dateOptions.isEndExclusive) {\n end = addMs(end, -1);\n }\n\n return formatter.formatRange({\n marker: start,\n timeZoneOffset: dateOptions.forcedStartTzo != null ? dateOptions.forcedStartTzo : this.offsetForMarker(start)\n }, {\n marker: end,\n timeZoneOffset: dateOptions.forcedEndTzo != null ? dateOptions.forcedEndTzo : this.offsetForMarker(end)\n }, this);\n };\n\n DateEnv.prototype.formatIso = function (marker, extraOptions) {\n if (extraOptions === void 0) {\n extraOptions = {};\n }\n\n var timeZoneOffset = null;\n\n if (!extraOptions.omitTimeZoneOffset) {\n if (extraOptions.forcedTzo != null) {\n timeZoneOffset = extraOptions.forcedTzo;\n } else {\n timeZoneOffset = this.offsetForMarker(marker);\n }\n }\n\n return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n }; // TimeZone\n\n\n DateEnv.prototype.timestampToMarker = function (ms) {\n if (this.timeZone === 'local') {\n return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n } else if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n return new Date(ms);\n } else {\n return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n }\n };\n\n DateEnv.prototype.offsetForMarker = function (m) {\n if (this.timeZone === 'local') {\n return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n } else if (this.timeZone === 'UTC') {\n return 0;\n } else if (this.namedTimeZoneImpl) {\n return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n }\n\n return null;\n }; // Conversion\n\n\n DateEnv.prototype.toDate = function (m, forcedTzo) {\n if (this.timeZone === 'local') {\n return arrayToLocalDate(dateToUtcArray(m));\n } else if (this.timeZone === 'UTC') {\n return new Date(m.valueOf()); // make sure it's a copy\n } else if (!this.namedTimeZoneImpl) {\n return new Date(m.valueOf() - (forcedTzo || 0));\n } else {\n return new Date(m.valueOf() - this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60 // convert minutes -> ms\n );\n }\n };\n\n return DateEnv;\n}();\n\nvar SIMPLE_SOURCE_PROPS = {\n id: String,\n allDayDefault: Boolean,\n eventDataTransform: Function,\n success: Function,\n failure: Function\n};\nvar uid$2 = 0;\n\nfunction doesSourceNeedRange(eventSource, calendar) {\n var defs = calendar.pluginSystem.hooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction parseEventSource(raw, calendar) {\n var defs = calendar.pluginSystem.hooks.eventSourceDefs;\n\n for (var i = defs.length - 1; i >= 0; i--) {\n // later-added plugins take precedence\n var def = defs[i];\n var meta = def.parseMeta(raw);\n\n if (meta) {\n var res = parseEventSourceProps(typeof raw === 'object' ? raw : {}, meta, i, calendar);\n res._raw = raw;\n return res;\n }\n }\n\n return null;\n}\n\nfunction parseEventSourceProps(raw, meta, sourceDefId, calendar) {\n var leftovers0 = {};\n var props = refineProps(raw, SIMPLE_SOURCE_PROPS, {}, leftovers0);\n var leftovers1 = {};\n var ui = processUnscopedUiProps(leftovers0, calendar, leftovers1);\n props.isFetching = false;\n props.latestFetchId = '';\n props.fetchRange = null;\n props.publicId = String(raw.id || '');\n props.sourceId = String(uid$2++);\n props.sourceDefId = sourceDefId;\n props.meta = meta;\n props.ui = ui;\n props.extendedProps = leftovers1;\n return props;\n}\n\nfunction reduceEventSources(eventSources, action, dateProfile, calendar) {\n switch (action.type) {\n case 'ADD_EVENT_SOURCES':\n // already parsed\n return addSources(eventSources, action.sources, dateProfile ? dateProfile.activeRange : null, calendar);\n\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n\n case 'NEXT':\n case 'SET_DATE':\n case 'SET_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, dateProfile.activeRange, calendar);\n } else {\n return eventSources;\n }\n\n case 'FETCH_EVENT_SOURCES':\n case 'CHANGE_TIMEZONE':\n return fetchSourcesByIds(eventSources, action.sourceIds ? arrayToHash(action.sourceIds) : excludeStaticSources(eventSources, calendar), dateProfile ? dateProfile.activeRange : null, calendar);\n\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n\n default:\n return eventSources;\n }\n}\n\nvar uid$3 = 0;\n\nfunction addSources(eventSourceHash, sources, fetchRange, calendar) {\n var hash = {};\n\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\n var source = sources_1[_i];\n hash[source.sourceId] = source;\n }\n\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, calendar);\n }\n\n return __assign({}, eventSourceHash, hash);\n}\n\nfunction removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, function (eventSource) {\n return eventSource.sourceId !== sourceId;\n });\n}\n\nfunction fetchDirtySources(sourceHash, fetchRange, calendar) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) {\n return isSourceDirty(eventSource, fetchRange, calendar);\n }), fetchRange, calendar);\n}\n\nfunction isSourceDirty(eventSource, fetchRange, calendar) {\n if (!doesSourceNeedRange(eventSource, calendar)) {\n return !eventSource.latestFetchId;\n } else {\n return !calendar.opt('lazyFetching') || !eventSource.fetchRange || eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start || fetchRange.end > eventSource.fetchRange.end;\n }\n}\n\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, calendar) {\n var nextSources = {};\n\n for (var sourceId in prevSources) {\n var source = prevSources[sourceId];\n\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, calendar);\n } else {\n nextSources[sourceId] = source;\n }\n }\n\n return nextSources;\n}\n\nfunction fetchSource(eventSource, fetchRange, calendar) {\n var sourceDef = calendar.pluginSystem.hooks.eventSourceDefs[eventSource.sourceDefId];\n var fetchId = String(uid$3++);\n sourceDef.fetch({\n eventSource: eventSource,\n calendar: calendar,\n range: fetchRange\n }, function (res) {\n var rawEvents = res.rawEvents;\n var calSuccess = calendar.opt('eventSourceSuccess');\n var calSuccessRes;\n var sourceSuccessRes;\n\n if (eventSource.success) {\n sourceSuccessRes = eventSource.success(rawEvents, res.xhr);\n }\n\n if (calSuccess) {\n calSuccessRes = calSuccess(rawEvents, res.xhr);\n }\n\n rawEvents = sourceSuccessRes || calSuccessRes || rawEvents;\n calendar.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n rawEvents: rawEvents\n });\n }, function (error) {\n var callFailure = calendar.opt('eventSourceFailure');\n console.warn(error.message, error);\n\n if (eventSource.failure) {\n eventSource.failure(error);\n }\n\n if (callFailure) {\n callFailure(error);\n }\n\n calendar.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n error: error\n });\n });\n return __assign({}, eventSource, {\n isFetching: true,\n latestFetchId: fetchId\n });\n}\n\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n var _a;\n\n var eventSource = sourceHash[sourceId];\n\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId) {\n return __assign({}, sourceHash, (_a = {}, _a[sourceId] = __assign({}, eventSource, {\n isFetching: false,\n fetchRange: fetchRange // also serves as a marker that at least one fetch has completed\n\n }), _a));\n }\n\n return sourceHash;\n}\n\nfunction excludeStaticSources(eventSources, calendar) {\n return filterHash(eventSources, function (eventSource) {\n return doesSourceNeedRange(eventSource, calendar);\n });\n}\n\nvar DateProfileGenerator =\n/** @class */\nfunction () {\n function DateProfileGenerator(viewSpec, calendar) {\n this.viewSpec = viewSpec;\n this.options = viewSpec.options;\n this.dateEnv = calendar.dateEnv;\n this.calendar = calendar;\n this.initHiddenDays();\n }\n /* Date Range Computation\n ------------------------------------------------------------------------------------------------------------------*/\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n\n\n DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate) {\n var dateEnv = this.dateEnv;\n var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(prevDate, -1);\n }; // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n\n\n DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate) {\n var dateEnv = this.dateEnv;\n var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(nextDate, 1);\n }; // Builds a structure holding dates/ranges for rendering around the given date.\n // Optional direction param indicates whether the date is being incremented/decremented\n // from its previous value. decremented = -1, incremented = 1 (default).\n\n\n DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) {\n if (forceToValid === void 0) {\n forceToValid = false;\n }\n\n var validRange;\n var minTime = null;\n var maxTime = null;\n var currentInfo;\n var isRangeAllDay;\n var renderRange;\n var activeRange;\n var isValid;\n validRange = this.buildValidRange();\n validRange = this.trimHiddenDays(validRange);\n\n if (forceToValid) {\n currentDate = constrainMarkerToRange(currentDate, validRange);\n }\n\n currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n renderRange = this.trimHiddenDays(renderRange);\n activeRange = renderRange;\n\n if (!this.options.showNonCurrentDates) {\n activeRange = intersectRanges(activeRange, currentInfo.range);\n }\n\n minTime = createDuration(this.options.minTime);\n maxTime = createDuration(this.options.maxTime);\n activeRange = this.adjustActiveRange(activeRange, minTime, maxTime);\n activeRange = intersectRanges(activeRange, validRange); // might return null\n // it's invalid if the originally requested date is not contained,\n // or if the range is completely outside of the valid range.\n\n isValid = rangesIntersect(currentInfo.range, validRange);\n return {\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\n // an object with optional start and end properties.\n validRange: validRange,\n // range the view is formally responsible for.\n // for example, a month view might have 1st-31st, excluding padded dates\n currentRange: currentInfo.range,\n // name of largest unit being displayed, like \"month\" or \"week\"\n currentRangeUnit: currentInfo.unit,\n isRangeAllDay: isRangeAllDay,\n // dates that display events and accept drag-n-drop\n // will be `null` if no dates accept events\n activeRange: activeRange,\n // date range with a rendered skeleton\n // includes not-active days that need some sort of DOM\n renderRange: renderRange,\n // Duration object that denotes the first visible time of any given day\n minTime: minTime,\n // Duration object that denotes the exclusive visible end time of any given day\n maxTime: maxTime,\n isValid: isValid,\n // how far the current date will move for a prev/next operation\n dateIncrement: this.buildDateIncrement(currentInfo.duration) // pass a fallback (might be null) ^\n\n };\n }; // Builds an object with optional start/end properties.\n // Indicates the minimum/maximum dates to display.\n // not responsible for trimming hidden days.\n\n\n DateProfileGenerator.prototype.buildValidRange = function () {\n return this.getRangeOption('validRange', this.calendar.getNow()) || {\n start: null,\n end: null\n }; // completely open-ended\n }; // Builds a structure with info about the \"current\" range, the range that is\n // highlighted as being the current month for example.\n // See build() for a description of `direction`.\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n\n\n DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {\n var _a = this,\n viewSpec = _a.viewSpec,\n dateEnv = _a.dateEnv;\n\n var duration = null;\n var unit = null;\n var range = null;\n var dayCount;\n\n if (viewSpec.duration) {\n duration = viewSpec.duration;\n unit = viewSpec.durationUnit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n } else if (dayCount = this.options.dayCount) {\n unit = 'day';\n range = this.buildRangeFromDayCount(date, direction, dayCount);\n } else if (range = this.buildCustomVisibleRange(date)) {\n unit = dateEnv.greatestWholeUnit(range.start, range.end).unit;\n } else {\n duration = this.getFallbackDuration();\n unit = greatestDurationDenominator(duration).unit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n\n return {\n duration: duration,\n unit: unit,\n range: range\n };\n };\n\n DateProfileGenerator.prototype.getFallbackDuration = function () {\n return createDuration({\n day: 1\n });\n }; // Returns a new activeRange to have time values (un-ambiguate)\n // minTime or maxTime causes the range to expand.\n\n\n DateProfileGenerator.prototype.adjustActiveRange = function (range, minTime, maxTime) {\n var dateEnv = this.dateEnv;\n var start = range.start;\n var end = range.end;\n\n if (this.viewSpec.class.prototype.usesMinMaxTime) {\n // expand active range if minTime is negative (why not when positive?)\n if (asRoughDays(minTime) < 0) {\n start = startOfDay(start); // necessary?\n\n start = dateEnv.add(start, minTime);\n } // expand active range if maxTime is beyond one day (why not when positive?)\n\n\n if (asRoughDays(maxTime) > 1) {\n end = startOfDay(end); // necessary?\n\n end = addDays(end, -1);\n end = dateEnv.add(end, maxTime);\n }\n }\n\n return {\n start: start,\n end: end\n };\n }; // Builds the \"current\" range when it is specified as an explicit duration.\n // `unit` is the already-computed greatestDurationDenominator unit of duration.\n\n\n DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {\n var dateEnv = this.dateEnv;\n var alignment = this.options.dateAlignment;\n var dateIncrementInput;\n var dateIncrementDuration;\n var start;\n var end;\n var res; // compute what the alignment should be\n\n if (!alignment) {\n dateIncrementInput = this.options.dateIncrement;\n\n if (dateIncrementInput) {\n dateIncrementDuration = createDuration(dateIncrementInput); // use the smaller of the two units\n\n if (asRoughMs(dateIncrementDuration) < asRoughMs(duration)) {\n alignment = greatestDurationDenominator(dateIncrementDuration, !getWeeksFromInput(dateIncrementInput)).unit;\n } else {\n alignment = unit;\n }\n } else {\n alignment = unit;\n }\n } // if the view displays a single day or smaller\n\n\n if (asRoughDays(duration) <= 1) {\n if (this.isHiddenDay(start)) {\n start = this.skipHiddenDays(start, direction);\n start = startOfDay(start);\n }\n }\n\n function computeRes() {\n start = dateEnv.startOf(date, alignment);\n end = dateEnv.add(start, duration);\n res = {\n start: start,\n end: end\n };\n }\n\n computeRes(); // if range is completely enveloped by hidden days, go past the hidden days\n\n if (!this.trimHiddenDays(res)) {\n date = this.skipHiddenDays(date, direction);\n computeRes();\n }\n\n return res;\n }; // Builds the \"current\" range when a dayCount is specified.\n\n\n DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {\n var dateEnv = this.dateEnv;\n var customAlignment = this.options.dateAlignment;\n var runningCount = 0;\n var start = date;\n var end;\n\n if (customAlignment) {\n start = dateEnv.startOf(start, customAlignment);\n }\n\n start = startOfDay(start);\n start = this.skipHiddenDays(start, direction);\n end = start;\n\n do {\n end = addDays(end, 1);\n\n if (!this.isHiddenDay(end)) {\n runningCount++;\n }\n } while (runningCount < dayCount);\n\n return {\n start: start,\n end: end\n };\n }; // Builds a normalized range object for the \"visible\" range,\n // which is a way to define the currentRange and activeRange at the same time.\n\n\n DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {\n var dateEnv = this.dateEnv;\n var visibleRange = this.getRangeOption('visibleRange', dateEnv.toDate(date));\n\n if (visibleRange && (visibleRange.start == null || visibleRange.end == null)) {\n return null;\n }\n\n return visibleRange;\n }; // Computes the range that will represent the element/cells for *rendering*,\n // but which may have voided days/times.\n // not responsible for trimming hidden days.\n\n\n DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {\n return currentRange;\n }; // Compute the duration value that should be added/substracted to the current date\n // when a prev/next operation happens.\n\n\n DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {\n var dateIncrementInput = this.options.dateIncrement;\n var customAlignment;\n\n if (dateIncrementInput) {\n return createDuration(dateIncrementInput);\n } else if (customAlignment = this.options.dateAlignment) {\n return createDuration(1, customAlignment);\n } else if (fallback) {\n return fallback;\n } else {\n return createDuration({\n days: 1\n });\n }\n }; // Arguments after name will be forwarded to a hypothetical function value\n // WARNING: passed-in arguments will be given to generator functions as-is and can cause side-effects.\n // Always clone your objects if you fear mutation.\n\n\n DateProfileGenerator.prototype.getRangeOption = function (name) {\n var otherArgs = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n\n var val = this.options[name];\n\n if (typeof val === 'function') {\n val = val.apply(null, otherArgs);\n }\n\n if (val) {\n val = parseRange(val, this.dateEnv);\n }\n\n if (val) {\n val = computeVisibleDayRange(val);\n }\n\n return val;\n };\n /* Hidden Days\n ------------------------------------------------------------------------------------------------------------------*/\n // Initializes internal variables related to calculating hidden days-of-week\n\n\n DateProfileGenerator.prototype.initHiddenDays = function () {\n var hiddenDays = this.options.hiddenDays || []; // array of day-of-week indices that are hidden\n\n var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n\n var dayCnt = 0;\n var i;\n\n if (this.options.weekends === false) {\n hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n }\n\n for (i = 0; i < 7; i++) {\n if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n dayCnt++;\n }\n }\n\n if (!dayCnt) {\n throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n }\n\n this.isHiddenDayHash = isHiddenDayHash;\n }; // Remove days from the beginning and end of the range that are computed as hidden.\n // If the whole range is trimmed off, returns null\n\n\n DateProfileGenerator.prototype.trimHiddenDays = function (range) {\n var start = range.start;\n var end = range.end;\n\n if (start) {\n start = this.skipHiddenDays(start);\n }\n\n if (end) {\n end = this.skipHiddenDays(end, -1, true);\n }\n\n if (start == null || end == null || start < end) {\n return {\n start: start,\n end: end\n };\n }\n\n return null;\n }; // Is the current day hidden?\n // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n\n\n DateProfileGenerator.prototype.isHiddenDay = function (day) {\n if (day instanceof Date) {\n day = day.getUTCDay();\n }\n\n return this.isHiddenDayHash[day];\n }; // Incrementing the current day until it is no longer a hidden day, returning a copy.\n // DOES NOT CONSIDER validRange!\n // If the initial value of `date` is not a hidden day, don't do anything.\n // Pass `isExclusive` as `true` if you are dealing with an end date.\n // `inc` defaults to `1` (increment one day forward each time)\n\n\n DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) {\n if (inc === void 0) {\n inc = 1;\n }\n\n if (isExclusive === void 0) {\n isExclusive = false;\n }\n\n while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n date = addDays(date, inc);\n }\n\n return date;\n };\n\n return DateProfileGenerator;\n}(); // TODO: find a way to avoid comparing DateProfiles. it's tedious\n\n\nfunction isDateProfilesEqual(p0, p1) {\n return rangesEqual(p0.validRange, p1.validRange) && rangesEqual(p0.activeRange, p1.activeRange) && rangesEqual(p0.renderRange, p1.renderRange) && durationsEqual(p0.minTime, p1.minTime) && durationsEqual(p0.maxTime, p1.maxTime);\n /*\n TODO: compare more?\n currentRange: DateRange\n currentRangeUnit: string\n isRangeAllDay: boolean\n isValid: boolean\n dateIncrement: Duration\n */\n}\n\nfunction reduce(state, action, calendar) {\n var viewType = reduceViewType(state.viewType, action);\n var dateProfile = reduceDateProfile(state.dateProfile, action, state.currentDate, viewType, calendar);\n var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendar);\n\n var nextState = __assign({}, state, {\n viewType: viewType,\n dateProfile: dateProfile,\n currentDate: reduceCurrentDate(state.currentDate, action, dateProfile),\n eventSources: eventSources,\n eventStore: reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendar),\n dateSelection: reduceDateSelection(state.dateSelection, action, calendar),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action, eventSources, calendar),\n eventResize: reduceEventResize(state.eventResize, action, eventSources, calendar),\n eventSourceLoadingLevel: computeLoadingLevel(eventSources),\n loadingLevel: computeLoadingLevel(eventSources)\n });\n\n for (var _i = 0, _a = calendar.pluginSystem.hooks.reducers; _i < _a.length; _i++) {\n var reducerFunc = _a[_i];\n nextState = reducerFunc(nextState, action, calendar);\n } // console.log(action.type, nextState)\n\n\n return nextState;\n}\n\nfunction reduceViewType(currentViewType, action) {\n switch (action.type) {\n case 'SET_VIEW_TYPE':\n return action.viewType;\n\n default:\n return currentViewType;\n }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, viewType, calendar) {\n var newDateProfile;\n\n switch (action.type) {\n case 'PREV':\n newDateProfile = calendar.dateProfileGenerators[viewType].buildPrev(currentDateProfile, currentDate);\n break;\n\n case 'NEXT':\n newDateProfile = calendar.dateProfileGenerators[viewType].buildNext(currentDateProfile, currentDate);\n break;\n\n case 'SET_DATE':\n if (!currentDateProfile.activeRange || !rangeContainsMarker(currentDateProfile.currentRange, action.dateMarker)) {\n newDateProfile = calendar.dateProfileGenerators[viewType].build(action.dateMarker, undefined, true // forceToValid\n );\n }\n\n break;\n\n case 'SET_VIEW_TYPE':\n var generator = calendar.dateProfileGenerators[viewType];\n\n if (!generator) {\n throw new Error(viewType ? 'The FullCalendar view \"' + viewType + '\" does not exist. Make sure your plugins are loaded correctly.' : 'No available FullCalendar view plugins.');\n }\n\n newDateProfile = generator.build(action.dateMarker || currentDate, undefined, true // forceToValid\n );\n break;\n }\n\n if (newDateProfile && newDateProfile.isValid && !(currentDateProfile && isDateProfilesEqual(currentDateProfile, newDateProfile))) {\n return newDateProfile;\n } else {\n return currentDateProfile;\n }\n}\n\nfunction reduceCurrentDate(currentDate, action, dateProfile) {\n switch (action.type) {\n case 'PREV':\n case 'NEXT':\n if (!rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n return dateProfile.currentRange.start;\n } else {\n return currentDate;\n }\n\n case 'SET_DATE':\n case 'SET_VIEW_TYPE':\n var newDate = action.dateMarker || currentDate;\n\n if (dateProfile.activeRange && !rangeContainsMarker(dateProfile.activeRange, newDate)) {\n return dateProfile.currentRange.start;\n } else {\n return newDate;\n }\n\n default:\n return currentDate;\n }\n}\n\nfunction reduceDateSelection(currentSelection, action, calendar) {\n switch (action.type) {\n case 'SELECT_DATES':\n return action.selection;\n\n case 'UNSELECT_DATES':\n return null;\n\n default:\n return currentSelection;\n }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n\n case 'UNSELECT_EVENT':\n return '';\n\n default:\n return currentInstanceId;\n }\n}\n\nfunction reduceEventDrag(currentDrag, action, sources, calendar) {\n switch (action.type) {\n case 'SET_EVENT_DRAG':\n var newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n origSeg: newDrag.origSeg\n };\n\n case 'UNSET_EVENT_DRAG':\n return null;\n\n default:\n return currentDrag;\n }\n}\n\nfunction reduceEventResize(currentResize, action, sources, calendar) {\n switch (action.type) {\n case 'SET_EVENT_RESIZE':\n var newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n origSeg: newResize.origSeg\n };\n\n case 'UNSET_EVENT_RESIZE':\n return null;\n\n default:\n return currentResize;\n }\n}\n\nfunction computeLoadingLevel(eventSources) {\n var cnt = 0;\n\n for (var sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n cnt++;\n }\n }\n\n return cnt;\n}\n\nvar STANDARD_PROPS = {\n start: null,\n end: null,\n allDay: Boolean\n};\n\nfunction parseDateSpan(raw, dateEnv, defaultDuration) {\n var span = parseOpenDateSpan(raw, dateEnv);\n var range = span.range;\n\n if (!range.start) {\n return null;\n }\n\n if (!range.end) {\n if (defaultDuration == null) {\n return null;\n } else {\n range.end = dateEnv.add(range.start, defaultDuration);\n }\n }\n\n return span;\n}\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\n\n\nfunction parseOpenDateSpan(raw, dateEnv) {\n var leftovers = {};\n var standardProps = refineProps(raw, STANDARD_PROPS, {}, leftovers);\n var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n var allDay = standardProps.allDay;\n\n if (allDay == null) {\n allDay = startMeta && startMeta.isTimeUnspecified && (!endMeta || endMeta.isTimeUnspecified);\n } // use this leftover object as the selection object\n\n\n leftovers.range = {\n start: startMeta ? startMeta.marker : null,\n end: endMeta ? endMeta.marker : null\n };\n leftovers.allDay = allDay;\n return leftovers;\n}\n\nfunction isDateSpansEqual(span0, span1) {\n return rangesEqual(span0.range, span1.range) && span0.allDay === span1.allDay && isSpanPropsEqual(span0, span1);\n} // the NON-DATE-RELATED props\n\n\nfunction isSpanPropsEqual(span0, span1) {\n for (var propName in span1) {\n if (propName !== 'range' && propName !== 'allDay') {\n if (span0[propName] !== span1[propName]) {\n return false;\n }\n }\n } // are there any props that span0 has that span1 DOESN'T have?\n // both have range/allDay, so no need to special-case.\n\n\n for (var propName in span0) {\n if (!(propName in span1)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction buildDateSpanApi(span, dateEnv) {\n return {\n start: dateEnv.toDate(span.range.start),\n end: dateEnv.toDate(span.range.end),\n startStr: dateEnv.formatIso(span.range.start, {\n omitTime: span.allDay\n }),\n endStr: dateEnv.formatIso(span.range.end, {\n omitTime: span.allDay\n }),\n allDay: span.allDay\n };\n}\n\nfunction buildDatePointApi(span, dateEnv) {\n return {\n date: dateEnv.toDate(span.range.start),\n dateStr: dateEnv.formatIso(span.range.start, {\n omitTime: span.allDay\n }),\n allDay: span.allDay\n };\n}\n\nfunction fabricateEventRange(dateSpan, eventUiBases, calendar) {\n var def = parseEventDef({\n editable: false\n }, '', // sourceId\n dateSpan.allDay, true, // hasEnd\n calendar);\n return {\n def: def,\n ui: compileEventUi(def, eventUiBases),\n instance: createEventInstance(def.defId, dateSpan.range),\n range: dateSpan.range,\n isStart: true,\n isEnd: true\n };\n}\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n var hash = {};\n var viewType;\n\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n\n return hash;\n}\n\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n\n var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n\n return viewDef;\n}\n\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n var defaultConfig = defaultConfigs[viewType];\n var overrideConfig = overrideConfigs[viewType];\n\n var queryProp = function (name) {\n return defaultConfig && defaultConfig[name] !== null ? defaultConfig[name] : overrideConfig && overrideConfig[name] !== null ? overrideConfig[name] : null;\n };\n\n var theClass = queryProp('class');\n var superType = queryProp('superType');\n\n if (!superType && theClass) {\n superType = findViewNameBySubclass(theClass, overrideConfigs) || findViewNameBySubclass(theClass, defaultConfigs);\n }\n\n var superDef = null;\n\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n\n if (!theClass && superDef) {\n theClass = superDef.class;\n }\n\n if (!theClass) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n\n return {\n type: viewType,\n class: theClass,\n defaults: __assign({}, superDef ? superDef.defaults : {}, defaultConfig ? defaultConfig.options : {}),\n overrides: __assign({}, superDef ? superDef.overrides : {}, overrideConfig ? overrideConfig.options : {})\n };\n}\n\nfunction findViewNameBySubclass(viewSubclass, configs) {\n var superProto = Object.getPrototypeOf(viewSubclass.prototype);\n\n for (var viewType in configs) {\n var parsed = configs[viewType]; // need DIRECT subclass, so instanceof won't do it\n\n if (parsed.class && parsed.class.prototype === superProto) {\n return viewType;\n }\n }\n\n return '';\n}\n\nfunction parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n}\n\nvar VIEW_DEF_PROPS = {\n type: String,\n class: null\n};\n\nfunction parseViewConfig(input) {\n if (typeof input === 'function') {\n input = {\n class: input\n };\n }\n\n var options = {};\n var props = refineProps(input, VIEW_DEF_PROPS, {}, options);\n return {\n superType: props.type,\n class: props.class,\n options: options\n };\n}\n\nfunction buildViewSpecs(defaultInputs, optionsManager) {\n var defaultConfigs = parseViewConfigs(defaultInputs);\n var overrideConfigs = parseViewConfigs(optionsManager.overrides.views);\n var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, function (viewDef) {\n return buildViewSpec(viewDef, overrideConfigs, optionsManager);\n });\n}\n\nfunction buildViewSpec(viewDef, overrideConfigs, optionsManager) {\n var durationInput = viewDef.overrides.duration || viewDef.defaults.duration || optionsManager.dynamicOverrides.duration || optionsManager.overrides.duration;\n var duration = null;\n var durationUnit = '';\n var singleUnit = '';\n var singleUnitOverrides = {};\n\n if (durationInput) {\n duration = createDuration(durationInput);\n\n if (duration) {\n // valid?\n var denom = greatestDurationDenominator(duration, !getWeeksFromInput(durationInput));\n durationUnit = denom.unit;\n\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].options : {};\n }\n }\n }\n\n var queryButtonText = function (options) {\n var buttonTextMap = options.buttonText || {};\n var buttonTextKey = viewDef.defaults.buttonTextKey;\n\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n };\n\n return {\n type: viewDef.type,\n class: viewDef.class,\n duration: duration,\n durationUnit: durationUnit,\n singleUnit: singleUnit,\n options: __assign({}, globalDefaults, viewDef.defaults, optionsManager.dirDefaults, optionsManager.localeDefaults, optionsManager.overrides, singleUnitOverrides, viewDef.overrides, optionsManager.dynamicOverrides),\n buttonTextOverride: queryButtonText(optionsManager.dynamicOverrides) || queryButtonText(optionsManager.overrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(optionsManager.localeDefaults) || queryButtonText(optionsManager.dirDefaults) || viewDef.defaults.buttonText || queryButtonText(globalDefaults) || viewDef.type // fall back to given view name\n\n };\n}\n\nvar Toolbar =\n/** @class */\nfunction (_super) {\n __extends(Toolbar, _super);\n\n function Toolbar(extraClassName) {\n var _this = _super.call(this) || this;\n\n _this._renderLayout = memoizeRendering(_this.renderLayout, _this.unrenderLayout);\n _this._updateTitle = memoizeRendering(_this.updateTitle, null, [_this._renderLayout]);\n _this._updateActiveButton = memoizeRendering(_this.updateActiveButton, null, [_this._renderLayout]);\n _this._updateToday = memoizeRendering(_this.updateToday, null, [_this._renderLayout]);\n _this._updatePrev = memoizeRendering(_this.updatePrev, null, [_this._renderLayout]);\n _this._updateNext = memoizeRendering(_this.updateNext, null, [_this._renderLayout]);\n _this.el = createElement('div', {\n className: 'fc-toolbar ' + extraClassName\n });\n return _this;\n }\n\n Toolbar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n\n this._renderLayout.unrender(); // should unrender everything else\n\n\n removeElement(this.el);\n };\n\n Toolbar.prototype.render = function (props) {\n this._renderLayout(props.layout);\n\n this._updateTitle(props.title);\n\n this._updateActiveButton(props.activeButton);\n\n this._updateToday(props.isTodayEnabled);\n\n this._updatePrev(props.isPrevEnabled);\n\n this._updateNext(props.isNextEnabled);\n };\n\n Toolbar.prototype.renderLayout = function (layout) {\n var el = this.el;\n this.viewsWithButtons = [];\n appendToElement(el, this.renderSection('left', layout.left));\n appendToElement(el, this.renderSection('center', layout.center));\n appendToElement(el, this.renderSection('right', layout.right));\n };\n\n Toolbar.prototype.unrenderLayout = function () {\n this.el.innerHTML = '';\n };\n\n Toolbar.prototype.renderSection = function (position, buttonStr) {\n var _this = this;\n\n var _a = this.context,\n theme = _a.theme,\n calendar = _a.calendar;\n var optionsManager = calendar.optionsManager;\n var viewSpecs = calendar.viewSpecs;\n var sectionEl = createElement('div', {\n className: 'fc-' + position\n });\n var calendarCustomButtons = optionsManager.computed.customButtons || {};\n var calendarButtonTextOverrides = optionsManager.overrides.buttonText || {};\n var calendarButtonText = optionsManager.computed.buttonText || {};\n\n if (buttonStr) {\n buttonStr.split(' ').forEach(function (buttonGroupStr, i) {\n var groupChildren = [];\n var isOnlyButtons = true;\n var groupEl;\n buttonGroupStr.split(',').forEach(function (buttonName, j) {\n var customButtonProps;\n var viewSpec;\n var buttonClick;\n var buttonIcon; // only one of these will be set\n\n var buttonText; // \"\n\n var buttonInnerHtml;\n var buttonClasses;\n var buttonEl;\n var buttonAriaAttr;\n\n if (buttonName === 'title') {\n groupChildren.push(htmlToElement('

 

')); // we always want it to take up height\n\n isOnlyButtons = false;\n } else {\n if (customButtonProps = calendarCustomButtons[buttonName]) {\n buttonClick = function (ev) {\n if (customButtonProps.click) {\n customButtonProps.click.call(buttonEl, ev);\n }\n };\n\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) || (buttonIcon = theme.getIconClass(buttonName)) || (buttonText = customButtonProps.text);\n } else if (viewSpec = viewSpecs[buttonName]) {\n _this.viewsWithButtons.push(buttonName);\n\n buttonClick = function () {\n calendar.changeView(buttonName);\n };\n\n (buttonText = viewSpec.buttonTextOverride) || (buttonIcon = theme.getIconClass(buttonName)) || (buttonText = viewSpec.buttonTextDefault);\n } else if (calendar[buttonName]) {\n // a calendar method\n buttonClick = function () {\n calendar[buttonName]();\n };\n\n (buttonText = calendarButtonTextOverrides[buttonName]) || (buttonIcon = theme.getIconClass(buttonName)) || (buttonText = calendarButtonText[buttonName]); // ^ everything else is considered default\n }\n\n if (buttonClick) {\n buttonClasses = ['fc-' + buttonName + '-button', theme.getClass('button')];\n\n if (buttonText) {\n buttonInnerHtml = htmlEscape(buttonText);\n buttonAriaAttr = '';\n } else if (buttonIcon) {\n buttonInnerHtml = \"\";\n buttonAriaAttr = ' aria-label=\"' + buttonName + '\"';\n }\n\n buttonEl = htmlToElement( // type=\"button\" so that it doesn't submit a form\n '');\n buttonEl.addEventListener('click', buttonClick);\n groupChildren.push(buttonEl);\n }\n }\n });\n\n if (groupChildren.length > 1) {\n groupEl = document.createElement('div');\n var buttonGroupClassName = theme.getClass('buttonGroup');\n\n if (isOnlyButtons && buttonGroupClassName) {\n groupEl.classList.add(buttonGroupClassName);\n }\n\n appendToElement(groupEl, groupChildren);\n sectionEl.appendChild(groupEl);\n } else {\n appendToElement(sectionEl, groupChildren); // 1 or 0 children\n }\n });\n }\n\n return sectionEl;\n };\n\n Toolbar.prototype.updateToday = function (isTodayEnabled) {\n this.toggleButtonEnabled('today', isTodayEnabled);\n };\n\n Toolbar.prototype.updatePrev = function (isPrevEnabled) {\n this.toggleButtonEnabled('prev', isPrevEnabled);\n };\n\n Toolbar.prototype.updateNext = function (isNextEnabled) {\n this.toggleButtonEnabled('next', isNextEnabled);\n };\n\n Toolbar.prototype.updateTitle = function (text) {\n findElements(this.el, 'h2').forEach(function (titleEl) {\n titleEl.innerText = text;\n });\n };\n\n Toolbar.prototype.updateActiveButton = function (buttonName) {\n var theme = this.context.theme;\n var className = theme.getClass('buttonActive');\n findElements(this.el, 'button').forEach(function (buttonEl) {\n if (buttonName && buttonEl.classList.contains('fc-' + buttonName + '-button')) {\n buttonEl.classList.add(className);\n } else {\n buttonEl.classList.remove(className);\n }\n });\n };\n\n Toolbar.prototype.toggleButtonEnabled = function (buttonName, bool) {\n findElements(this.el, '.fc-' + buttonName + '-button').forEach(function (buttonEl) {\n buttonEl.disabled = !bool;\n });\n };\n\n return Toolbar;\n}(Component);\n\nvar CalendarComponent =\n/** @class */\nfunction (_super) {\n __extends(CalendarComponent, _super);\n\n function CalendarComponent(el) {\n var _this = _super.call(this) || this;\n\n _this.elClassNames = [];\n _this.renderSkeleton = memoizeRendering(_this._renderSkeleton, _this._unrenderSkeleton);\n _this.renderToolbars = memoizeRendering(_this._renderToolbars, _this._unrenderToolbars, [_this.renderSkeleton]);\n _this.buildComponentContext = memoize(buildComponentContext);\n _this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n _this.el = el;\n _this.computeTitle = memoize(computeTitle);\n _this.parseBusinessHours = memoize(function (input) {\n return parseBusinessHours(input, _this.context.calendar);\n });\n return _this;\n }\n\n CalendarComponent.prototype.render = function (props, context) {\n this.freezeHeight();\n var title = this.computeTitle(props.dateProfile, props.viewSpec.options);\n this.renderSkeleton(context);\n this.renderToolbars(props.viewSpec, props.dateProfile, props.currentDate, title);\n this.renderView(props, title);\n this.updateSize();\n this.thawHeight();\n };\n\n CalendarComponent.prototype.destroy = function () {\n if (this.header) {\n this.header.destroy();\n }\n\n if (this.footer) {\n this.footer.destroy();\n }\n\n this.renderSkeleton.unrender(); // will call destroyView\n\n _super.prototype.destroy.call(this);\n };\n\n CalendarComponent.prototype._renderSkeleton = function (context) {\n this.updateElClassNames(context);\n prependToElement(this.el, this.contentEl = createElement('div', {\n className: 'fc-view-container'\n }));\n var calendar = context.calendar;\n\n for (var _i = 0, _a = calendar.pluginSystem.hooks.viewContainerModifiers; _i < _a.length; _i++) {\n var modifyViewContainer = _a[_i];\n modifyViewContainer(this.contentEl, calendar);\n }\n };\n\n CalendarComponent.prototype._unrenderSkeleton = function () {\n // weird to have this here\n if (this.view) {\n this.savedScroll = this.view.queryScroll();\n this.view.destroy();\n this.view = null;\n }\n\n removeElement(this.contentEl);\n this.removeElClassNames();\n };\n\n CalendarComponent.prototype.removeElClassNames = function () {\n var classList = this.el.classList;\n\n for (var _i = 0, _a = this.elClassNames; _i < _a.length; _i++) {\n var className = _a[_i];\n classList.remove(className);\n }\n\n this.elClassNames = [];\n };\n\n CalendarComponent.prototype.updateElClassNames = function (context) {\n this.removeElClassNames();\n var theme = context.theme,\n options = context.options;\n this.elClassNames = ['fc', 'fc-' + options.dir, theme.getClass('widget')];\n var classList = this.el.classList;\n\n for (var _i = 0, _a = this.elClassNames; _i < _a.length; _i++) {\n var className = _a[_i];\n classList.add(className);\n }\n };\n\n CalendarComponent.prototype._renderToolbars = function (viewSpec, dateProfile, currentDate, title) {\n var _a = this,\n context = _a.context,\n header = _a.header,\n footer = _a.footer;\n\n var options = context.options,\n calendar = context.calendar;\n var headerLayout = options.header;\n var footerLayout = options.footer;\n var dateProfileGenerator = this.props.dateProfileGenerator;\n var now = calendar.getNow();\n var todayInfo = dateProfileGenerator.build(now);\n var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate);\n var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate);\n var toolbarProps = {\n title: title,\n activeButton: viewSpec.type,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid\n };\n\n if (headerLayout) {\n if (!header) {\n header = this.header = new Toolbar('fc-header-toolbar');\n prependToElement(this.el, header.el);\n }\n\n header.receiveProps(__assign({\n layout: headerLayout\n }, toolbarProps), context);\n } else if (header) {\n header.destroy();\n header = this.header = null;\n }\n\n if (footerLayout) {\n if (!footer) {\n footer = this.footer = new Toolbar('fc-footer-toolbar');\n appendToElement(this.el, footer.el);\n }\n\n footer.receiveProps(__assign({\n layout: footerLayout\n }, toolbarProps), context);\n } else if (footer) {\n footer.destroy();\n footer = this.footer = null;\n }\n };\n\n CalendarComponent.prototype._unrenderToolbars = function () {\n if (this.header) {\n this.header.destroy();\n this.header = null;\n }\n\n if (this.footer) {\n this.footer.destroy();\n this.footer = null;\n }\n };\n\n CalendarComponent.prototype.renderView = function (props, title) {\n var view = this.view;\n var _a = this.context,\n calendar = _a.calendar,\n options = _a.options;\n var viewSpec = props.viewSpec,\n dateProfileGenerator = props.dateProfileGenerator;\n\n if (!view || view.viewSpec !== viewSpec) {\n if (view) {\n view.destroy();\n }\n\n view = this.view = new viewSpec['class'](viewSpec, this.contentEl);\n\n if (this.savedScroll) {\n view.addScroll(this.savedScroll, true);\n this.savedScroll = null;\n }\n }\n\n view.title = title; // for the API\n\n var viewProps = {\n dateProfileGenerator: dateProfileGenerator,\n dateProfile: props.dateProfile,\n businessHours: this.parseBusinessHours(viewSpec.options.businessHours),\n eventStore: props.eventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize\n };\n var transformers = this.buildViewPropTransformers(calendar.pluginSystem.hooks.viewPropsTransformers);\n\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n\n __assign(viewProps, transformer.transform(viewProps, viewSpec, props, options));\n }\n\n view.receiveProps(viewProps, this.buildComponentContext(this.context, viewSpec, view));\n }; // Sizing\n // -----------------------------------------------------------------------------------------------------------------\n\n\n CalendarComponent.prototype.updateSize = function (isResize) {\n if (isResize === void 0) {\n isResize = false;\n }\n\n var view = this.view;\n\n if (!view) {\n return; // why?\n }\n\n if (isResize || this.isHeightAuto == null) {\n this.computeHeightVars();\n }\n\n view.updateSize(isResize, this.viewHeight, this.isHeightAuto);\n view.updateNowIndicator(); // we need to guarantee this will run after updateSize\n\n view.popScroll(isResize);\n };\n\n CalendarComponent.prototype.computeHeightVars = function () {\n var calendar = this.context.calendar; // yuck. need to handle dynamic options\n\n var heightInput = calendar.opt('height');\n var contentHeightInput = calendar.opt('contentHeight');\n this.isHeightAuto = heightInput === 'auto' || contentHeightInput === 'auto';\n\n if (typeof contentHeightInput === 'number') {\n // exists and not 'auto'\n this.viewHeight = contentHeightInput;\n } else if (typeof contentHeightInput === 'function') {\n // exists and is a function\n this.viewHeight = contentHeightInput();\n } else if (typeof heightInput === 'number') {\n // exists and not 'auto'\n this.viewHeight = heightInput - this.queryToolbarsHeight();\n } else if (typeof heightInput === 'function') {\n // exists and is a function\n this.viewHeight = heightInput() - this.queryToolbarsHeight();\n } else if (heightInput === 'parent') {\n // set to height of parent element\n var parentEl = this.el.parentNode;\n this.viewHeight = parentEl.getBoundingClientRect().height - this.queryToolbarsHeight();\n } else {\n this.viewHeight = Math.round(this.contentEl.getBoundingClientRect().width / Math.max(calendar.opt('aspectRatio'), .5));\n }\n };\n\n CalendarComponent.prototype.queryToolbarsHeight = function () {\n var height = 0;\n\n if (this.header) {\n height += computeHeightAndMargins(this.header.el);\n }\n\n if (this.footer) {\n height += computeHeightAndMargins(this.footer.el);\n }\n\n return height;\n }; // Height \"Freezing\"\n // -----------------------------------------------------------------------------------------------------------------\n\n\n CalendarComponent.prototype.freezeHeight = function () {\n applyStyle(this.el, {\n height: this.el.getBoundingClientRect().height,\n overflow: 'hidden'\n });\n };\n\n CalendarComponent.prototype.thawHeight = function () {\n applyStyle(this.el, {\n height: '',\n overflow: ''\n });\n };\n\n return CalendarComponent;\n}(Component); // Title and Date Formatting\n// -----------------------------------------------------------------------------------------------------------------\n// Computes what the title at the top of the calendar should be for this view\n\n\nfunction computeTitle(dateProfile, viewOptions) {\n var range; // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n } else {\n // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n\n return this.context.dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || computeTitleFormat(dateProfile), viewOptions.titleRangeSeparator), {\n isEndExclusive: dateProfile.isRangeAllDay\n });\n} // Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\n\n\nfunction computeTitleFormat(dateProfile) {\n var currentRangeUnit = dateProfile.currentRangeUnit;\n\n if (currentRangeUnit === 'year') {\n return {\n year: 'numeric'\n };\n } else if (currentRangeUnit === 'month') {\n return {\n year: 'numeric',\n month: 'long'\n }; // like \"September 2014\"\n } else {\n var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n };\n } else {\n // one day. longer, like \"September 9 2014\"\n return {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n }\n }\n} // build a context scoped to the view\n\n\nfunction buildComponentContext(context, viewSpec, view) {\n return context.extend(viewSpec.options, view);\n} // Plugin\n// -----------------------------------------------------------------------------------------------------------------\n\n\nfunction buildViewPropTransformers(theClasses) {\n return theClasses.map(function (theClass) {\n return new theClass();\n });\n}\n\nvar Interaction =\n/** @class */\nfunction () {\n function Interaction(settings) {\n this.component = settings.component;\n }\n\n Interaction.prototype.destroy = function () {};\n\n return Interaction;\n}();\n\nfunction parseInteractionSettings(component, input) {\n return {\n component: component,\n el: input.el,\n useEventCenter: input.useEventCenter != null ? input.useEventCenter : true\n };\n}\n\nfunction interactionSettingsToStore(settings) {\n var _a;\n\n return _a = {}, _a[settings.component.uid] = settings, _a;\n} // global state\n\n\nvar interactionSettingsStore = {};\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\n\nvar EventClicking =\n/** @class */\nfunction (_super) {\n __extends(EventClicking, _super);\n\n function EventClicking(settings) {\n var _this = _super.call(this, settings) || this;\n\n _this.handleSegClick = function (ev, segEl) {\n var component = _this.component;\n var _a = component.context,\n calendar = _a.calendar,\n view = _a.view;\n var seg = getElSeg(segEl);\n\n if (seg && // might be the
surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n var hasUrlContainer = elementClosest(ev.target, '.fc-has-url');\n var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n calendar.publiclyTrigger('eventClick', [{\n el: segEl,\n event: new EventApi(component.context.calendar, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: view\n }]);\n\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n\n var component = settings.component;\n _this.destroy = listenBySelector(component.el, 'click', component.fgSegSelector + ',' + component.bgSegSelector, _this.handleSegClick);\n return _this;\n }\n\n return EventClicking;\n}(Interaction);\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\n\n\nvar EventHovering =\n/** @class */\nfunction (_super) {\n __extends(EventHovering, _super);\n\n function EventHovering(settings) {\n var _this = _super.call(this, settings) || this; // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n\n\n _this.handleEventElRemove = function (el) {\n if (el === _this.currentSegEl) {\n _this.handleSegLeave(null, _this.currentSegEl);\n }\n };\n\n _this.handleSegEnter = function (ev, segEl) {\n if (getElSeg(segEl)) {\n // TODO: better way to make sure not hovering over more+ link or its wrapper\n segEl.classList.add('fc-allow-mouse-resize');\n _this.currentSegEl = segEl;\n\n _this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n\n _this.handleSegLeave = function (ev, segEl) {\n if (_this.currentSegEl) {\n segEl.classList.remove('fc-allow-mouse-resize');\n _this.currentSegEl = null;\n\n _this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n\n var component = settings.component;\n _this.removeHoverListeners = listenToHoverBySelector(component.el, component.fgSegSelector + ',' + component.bgSegSelector, _this.handleSegEnter, _this.handleSegLeave); // how to make sure component already has context?\n\n component.context.calendar.on('eventElRemove', _this.handleEventElRemove);\n return _this;\n }\n\n EventHovering.prototype.destroy = function () {\n this.removeHoverListeners();\n this.component.context.calendar.off('eventElRemove', this.handleEventElRemove);\n };\n\n EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) {\n var component = this.component;\n var _a = component.context,\n calendar = _a.calendar,\n view = _a.view;\n var seg = getElSeg(segEl);\n\n if (!ev || component.isValidSegDownEl(ev.target)) {\n calendar.publiclyTrigger(publicEvName, [{\n el: segEl,\n event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: view\n }]);\n }\n };\n\n return EventHovering;\n}(Interaction);\n\nvar StandardTheme =\n/** @class */\nfunction (_super) {\n __extends(StandardTheme, _super);\n\n function StandardTheme() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return StandardTheme;\n}(Theme);\n\nStandardTheme.prototype.classes = {\n widget: 'fc-unthemed',\n widgetHeader: 'fc-widget-header',\n widgetContent: 'fc-widget-content',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n popoverHeader: 'fc-widget-header',\n popoverContent: 'fc-widget-content',\n // day grid\n headerRow: 'fc-widget-header',\n dayRow: 'fc-widget-content',\n // list view\n listView: 'fc-widget-content'\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right'\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons';\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nvar Calendar =\n/** @class */\nfunction () {\n function Calendar(el, overrides) {\n var _this = this;\n\n this.buildComponentContext = memoize(buildComponentContext$1);\n this.parseRawLocales = memoize(parseRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildDateEnv = memoize(buildDateEnv);\n this.buildTheme = memoize(buildTheme);\n this.buildEventUiSingleBase = memoize(this._buildEventUiSingleBase);\n this.buildSelectionConfig = memoize(this._buildSelectionConfig);\n this.buildEventUiBySource = memoizeOutput(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.interactionsStore = {};\n this.actionQueue = [];\n this.isReducing = false; // isDisplaying: boolean = false // installed in DOM? accepting renders?\n\n this.needsRerender = false; // needs a render?\n\n this.isRendering = false; // currently in the executeRender function?\n\n this.renderingPauseDepth = 0;\n this.buildDelayedRerender = memoize(buildDelayedRerender);\n this.afterSizingTriggers = {};\n this.isViewUpdated = false;\n this.isDatesUpdated = false;\n this.isEventsUpdated = false;\n this.el = el;\n this.optionsManager = new OptionsManager(overrides || {});\n this.pluginSystem = new PluginSystem(); // only do once. don't do in handleOptions. because can't remove plugins\n\n this.addPluginInputs(this.optionsManager.computed.plugins || []);\n this.handleOptions(this.optionsManager.computed);\n this.publiclyTrigger('_init'); // for tests\n\n this.hydrate();\n this.calendarInteractions = this.pluginSystem.hooks.calendarInteractions.map(function (calendarInteractionClass) {\n return new calendarInteractionClass(_this);\n });\n }\n\n Calendar.prototype.addPluginInputs = function (pluginInputs) {\n var pluginDefs = refinePluginDefs(pluginInputs);\n\n for (var _i = 0, pluginDefs_1 = pluginDefs; _i < pluginDefs_1.length; _i++) {\n var pluginDef = pluginDefs_1[_i];\n this.pluginSystem.add(pluginDef);\n }\n };\n\n Object.defineProperty(Calendar.prototype, \"view\", {\n // public API\n get: function () {\n return this.component ? this.component.view : null;\n },\n enumerable: true,\n configurable: true\n }); // Public API for rendering\n // -----------------------------------------------------------------------------------------------------------------\n\n Calendar.prototype.render = function () {\n if (!this.component) {\n this.component = new CalendarComponent(this.el);\n this.renderableEventStore = createEmptyEventStore();\n this.bindHandlers();\n this.executeRender();\n } else {\n this.requestRerender();\n }\n };\n\n Calendar.prototype.destroy = function () {\n if (this.component) {\n this.unbindHandlers();\n this.component.destroy(); // don't null-out. in case API needs access\n\n this.component = null; // umm ???\n\n for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) {\n var interaction = _a[_i];\n interaction.destroy();\n }\n\n this.publiclyTrigger('_destroyed');\n }\n }; // Handlers\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.bindHandlers = function () {\n var _this = this; // event delegation for nav links\n\n\n this.removeNavLinkListener = listenBySelector(this.el, 'click', 'a[data-goto]', function (ev, anchorEl) {\n var gotoOptions = anchorEl.getAttribute('data-goto');\n gotoOptions = gotoOptions ? JSON.parse(gotoOptions) : {};\n var dateEnv = _this.dateEnv;\n var dateMarker = dateEnv.createMarker(gotoOptions.date);\n var viewType = gotoOptions.type; // property like \"navLinkDayClick\". might be a string or a function\n\n var customAction = _this.viewOpt('navLink' + capitaliseFirstLetter(viewType) + 'Click');\n\n if (typeof customAction === 'function') {\n customAction(dateEnv.toDate(dateMarker), ev);\n } else {\n if (typeof customAction === 'string') {\n viewType = customAction;\n }\n\n _this.zoomTo(dateMarker, viewType);\n }\n });\n\n if (this.opt('handleWindowResize')) {\n window.addEventListener('resize', this.windowResizeProxy = debounce( // prevents rapid calls\n this.windowResize.bind(this), this.opt('windowResizeDelay')));\n }\n };\n\n Calendar.prototype.unbindHandlers = function () {\n this.removeNavLinkListener();\n\n if (this.windowResizeProxy) {\n window.removeEventListener('resize', this.windowResizeProxy);\n this.windowResizeProxy = null;\n }\n }; // Dispatcher\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.hydrate = function () {\n var _this = this;\n\n this.state = this.buildInitialState();\n var rawSources = this.opt('eventSources') || [];\n var singleRawSource = this.opt('events');\n var sources = []; // parsed\n\n if (singleRawSource) {\n rawSources.unshift(singleRawSource);\n }\n\n for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) {\n var rawSource = rawSources_1[_i];\n var source = parseEventSource(rawSource, this);\n\n if (source) {\n sources.push(source);\n }\n }\n\n this.batchRendering(function () {\n _this.dispatch({\n type: 'INIT'\n }); // pass in sources here?\n\n\n _this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: sources\n });\n\n _this.dispatch({\n type: 'SET_VIEW_TYPE',\n viewType: _this.opt('defaultView') || _this.pluginSystem.hooks.defaultView\n });\n });\n };\n\n Calendar.prototype.buildInitialState = function () {\n return {\n viewType: null,\n loadingLevel: 0,\n eventSourceLoadingLevel: 0,\n currentDate: this.getInitialDate(),\n dateProfile: null,\n eventSources: {},\n eventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null\n };\n };\n\n Calendar.prototype.dispatch = function (action) {\n this.actionQueue.push(action);\n\n if (!this.isReducing) {\n this.isReducing = true;\n var oldState = this.state;\n\n while (this.actionQueue.length) {\n this.state = this.reduce(this.state, this.actionQueue.shift(), this);\n }\n\n var newState = this.state;\n this.isReducing = false;\n\n if (!oldState.loadingLevel && newState.loadingLevel) {\n this.publiclyTrigger('loading', [true]);\n } else if (oldState.loadingLevel && !newState.loadingLevel) {\n this.publiclyTrigger('loading', [false]);\n }\n\n var view = this.component && this.component.view;\n\n if (oldState.eventStore !== newState.eventStore) {\n if (oldState.eventStore) {\n this.isEventsUpdated = true;\n }\n }\n\n if (oldState.dateProfile !== newState.dateProfile) {\n if (oldState.dateProfile && view) {\n // why would view be null!?\n this.publiclyTrigger('datesDestroy', [{\n view: view,\n el: view.el\n }]);\n }\n\n this.isDatesUpdated = true;\n }\n\n if (oldState.viewType !== newState.viewType) {\n if (oldState.viewType && view) {\n // why would view be null!?\n this.publiclyTrigger('viewSkeletonDestroy', [{\n view: view,\n el: view.el\n }]);\n }\n\n this.isViewUpdated = true;\n }\n\n this.requestRerender();\n }\n };\n\n Calendar.prototype.reduce = function (state, action, calendar) {\n return reduce(state, action, calendar);\n }; // Render Queue\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.requestRerender = function () {\n this.needsRerender = true;\n this.delayedRerender(); // will call a debounced-version of tryRerender\n };\n\n Calendar.prototype.tryRerender = function () {\n if (this.component && // must be accepting renders\n this.needsRerender && // indicates that a rerender was requested\n !this.renderingPauseDepth && // not paused\n !this.isRendering // not currently in the render loop\n ) {\n this.executeRender();\n }\n };\n\n Calendar.prototype.batchRendering = function (func) {\n this.renderingPauseDepth++;\n func();\n this.renderingPauseDepth--;\n\n if (this.needsRerender) {\n this.requestRerender();\n }\n }; // Rendering\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.executeRender = function () {\n // clear these BEFORE the render so that new values will accumulate during render\n this.needsRerender = false;\n this.isRendering = true;\n this.renderComponent();\n this.isRendering = false; // received a rerender request while rendering\n\n if (this.needsRerender) {\n this.delayedRerender();\n }\n };\n /*\n don't call this directly. use executeRender instead\n */\n\n\n Calendar.prototype.renderComponent = function () {\n var _a = this,\n state = _a.state,\n component = _a.component;\n\n var viewType = state.viewType;\n var viewSpec = this.viewSpecs[viewType];\n\n if (!viewSpec) {\n throw new Error(\"View type \\\"\" + viewType + \"\\\" is not valid\");\n } // if event sources are still loading and progressive rendering hasn't been enabled,\n // keep rendering the last fully loaded set of events\n\n\n var renderableEventStore = this.renderableEventStore = state.eventSourceLoadingLevel && !this.opt('progressiveEventRendering') ? this.renderableEventStore : state.eventStore;\n var eventUiSingleBase = this.buildEventUiSingleBase(viewSpec.options);\n var eventUiBySource = this.buildEventUiBySource(state.eventSources);\n var eventUiBases = this.eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n component.receiveProps(__assign({}, state, {\n viewSpec: viewSpec,\n dateProfileGenerator: this.dateProfileGenerators[viewType],\n dateProfile: state.dateProfile,\n eventStore: renderableEventStore,\n eventUiBases: eventUiBases,\n dateSelection: state.dateSelection,\n eventSelection: state.eventSelection,\n eventDrag: state.eventDrag,\n eventResize: state.eventResize\n }), this.buildComponentContext(this.theme, this.dateEnv, this.optionsManager.computed));\n\n if (this.isViewUpdated) {\n this.isViewUpdated = false;\n this.publiclyTrigger('viewSkeletonRender', [{\n view: component.view,\n el: component.view.el\n }]);\n }\n\n if (this.isDatesUpdated) {\n this.isDatesUpdated = false;\n this.publiclyTrigger('datesRender', [{\n view: component.view,\n el: component.view.el\n }]);\n }\n\n if (this.isEventsUpdated) {\n this.isEventsUpdated = false;\n }\n\n this.releaseAfterSizingTriggers();\n }; // Options\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.setOption = function (name, val) {\n var _a;\n\n this.mutateOptions((_a = {}, _a[name] = val, _a), [], true);\n };\n\n Calendar.prototype.getOption = function (name) {\n return this.optionsManager.computed[name];\n };\n\n Calendar.prototype.opt = function (name) {\n return this.optionsManager.computed[name];\n };\n\n Calendar.prototype.viewOpt = function (name) {\n return this.viewOpts()[name];\n };\n\n Calendar.prototype.viewOpts = function () {\n return this.viewSpecs[this.state.viewType].options;\n };\n /*\n handles option changes (like a diff)\n */\n\n\n Calendar.prototype.mutateOptions = function (updates, removals, isDynamic, deepEqual) {\n var _this = this;\n\n var changeHandlers = this.pluginSystem.hooks.optionChangeHandlers;\n var normalUpdates = {};\n var specialUpdates = {};\n var oldDateEnv = this.dateEnv; // do this before handleOptions\n\n var isTimeZoneDirty = false;\n var isSizeDirty = false;\n var anyDifficultOptions = Boolean(removals.length);\n\n for (var name_1 in updates) {\n if (changeHandlers[name_1]) {\n specialUpdates[name_1] = updates[name_1];\n } else {\n normalUpdates[name_1] = updates[name_1];\n }\n }\n\n for (var name_2 in normalUpdates) {\n if (/^(height|contentHeight|aspectRatio)$/.test(name_2)) {\n isSizeDirty = true;\n } else if (/^(defaultDate|defaultView)$/.test(name_2)) ;else {\n anyDifficultOptions = true;\n\n if (name_2 === 'timeZone') {\n isTimeZoneDirty = true;\n }\n }\n }\n\n this.optionsManager.mutate(normalUpdates, removals, isDynamic);\n\n if (anyDifficultOptions) {\n this.handleOptions(this.optionsManager.computed);\n }\n\n this.batchRendering(function () {\n if (anyDifficultOptions) {\n if (isTimeZoneDirty) {\n _this.dispatch({\n type: 'CHANGE_TIMEZONE',\n oldDateEnv: oldDateEnv\n });\n }\n /* HACK\n has the same effect as calling this.requestRerender()\n but recomputes the state's dateProfile\n */\n\n\n _this.dispatch({\n type: 'SET_VIEW_TYPE',\n viewType: _this.state.viewType\n });\n } else if (isSizeDirty) {\n _this.updateSize();\n } // special updates\n\n\n if (deepEqual) {\n for (var name_3 in specialUpdates) {\n changeHandlers[name_3](specialUpdates[name_3], _this, deepEqual);\n }\n }\n });\n };\n /*\n rebuilds things based off of a complete set of refined options\n */\n\n\n Calendar.prototype.handleOptions = function (options) {\n var _this = this;\n\n var pluginHooks = this.pluginSystem.hooks;\n this.defaultAllDayEventDuration = createDuration(options.defaultAllDayEventDuration);\n this.defaultTimedEventDuration = createDuration(options.defaultTimedEventDuration);\n this.delayedRerender = this.buildDelayedRerender(options.rerenderDelay);\n this.theme = this.buildTheme(options);\n var available = this.parseRawLocales(options.locales);\n this.availableRawLocales = available.map;\n var locale = this.buildLocale(options.locale || available.defaultCode, available.map);\n this.dateEnv = this.buildDateEnv(locale, options.timeZone, pluginHooks.namedTimeZonedImpl, options.firstDay, options.weekNumberCalculation, options.weekLabel, pluginHooks.cmdFormatter);\n this.selectionConfig = this.buildSelectionConfig(options); // needs dateEnv. do after :(\n // ineffecient to do every time?\n\n this.viewSpecs = buildViewSpecs(pluginHooks.views, this.optionsManager); // ineffecient to do every time?\n\n this.dateProfileGenerators = mapHash(this.viewSpecs, function (viewSpec) {\n return new viewSpec.class.prototype.dateProfileGeneratorClass(viewSpec, _this);\n });\n };\n\n Calendar.prototype.getAvailableLocaleCodes = function () {\n return Object.keys(this.availableRawLocales);\n };\n\n Calendar.prototype._buildSelectionConfig = function (rawOpts) {\n return processScopedUiProps('select', rawOpts, this);\n };\n\n Calendar.prototype._buildEventUiSingleBase = function (rawOpts) {\n if (rawOpts.editable) {\n // so 'editable' affected events\n rawOpts = __assign({}, rawOpts, {\n eventEditable: true\n });\n }\n\n return processScopedUiProps('event', rawOpts, this);\n }; // Trigger\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.hasPublicHandlers = function (name) {\n return this.hasHandlers(name) || this.opt(name); // handler specified in options\n };\n\n Calendar.prototype.publiclyTrigger = function (name, args) {\n var optHandler = this.opt(name);\n this.triggerWith(name, this, args);\n\n if (optHandler) {\n return optHandler.apply(this, args);\n }\n };\n\n Calendar.prototype.publiclyTriggerAfterSizing = function (name, args) {\n var afterSizingTriggers = this.afterSizingTriggers;\n (afterSizingTriggers[name] || (afterSizingTriggers[name] = [])).push(args);\n };\n\n Calendar.prototype.releaseAfterSizingTriggers = function () {\n var afterSizingTriggers = this.afterSizingTriggers;\n\n for (var name_4 in afterSizingTriggers) {\n for (var _i = 0, _a = afterSizingTriggers[name_4]; _i < _a.length; _i++) {\n var args = _a[_i];\n this.publiclyTrigger(name_4, args);\n }\n }\n\n this.afterSizingTriggers = {};\n }; // View\n // -----------------------------------------------------------------------------------------------------------------\n // Returns a boolean about whether the view is okay to instantiate at some point\n\n\n Calendar.prototype.isValidViewType = function (viewType) {\n return Boolean(this.viewSpecs[viewType]);\n };\n\n Calendar.prototype.changeView = function (viewType, dateOrRange) {\n var dateMarker = null;\n\n if (dateOrRange) {\n if (dateOrRange.start && dateOrRange.end) {\n // a range\n this.optionsManager.mutate({\n visibleRange: dateOrRange\n }, []); // will not rerender\n\n this.handleOptions(this.optionsManager.computed); // ...but yuck\n } else {\n // a date\n dateMarker = this.dateEnv.createMarker(dateOrRange); // just like gotoDate\n }\n }\n\n this.unselect();\n this.dispatch({\n type: 'SET_VIEW_TYPE',\n viewType: viewType,\n dateMarker: dateMarker\n });\n }; // Forces navigation to a view for the given date.\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n // needs to change\n\n\n Calendar.prototype.zoomTo = function (dateMarker, viewType) {\n var spec;\n viewType = viewType || 'day'; // day is default zoom\n\n spec = this.viewSpecs[viewType] || this.getUnitViewSpec(viewType);\n this.unselect();\n\n if (spec) {\n this.dispatch({\n type: 'SET_VIEW_TYPE',\n viewType: spec.type,\n dateMarker: dateMarker\n });\n } else {\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: dateMarker\n });\n }\n }; // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n // Preference is given to views that have corresponding buttons.\n\n\n Calendar.prototype.getUnitViewSpec = function (unit) {\n var component = this.component;\n var viewTypes = [];\n var i;\n var spec; // put views that have buttons first. there will be duplicates, but oh\n\n if (component.header) {\n viewTypes.push.apply(viewTypes, component.header.viewsWithButtons);\n }\n\n if (component.footer) {\n viewTypes.push.apply(viewTypes, component.footer.viewsWithButtons);\n }\n\n for (var viewType in this.viewSpecs) {\n viewTypes.push(viewType);\n }\n\n for (i = 0; i < viewTypes.length; i++) {\n spec = this.viewSpecs[viewTypes[i]];\n\n if (spec) {\n if (spec.singleUnit === unit) {\n return spec;\n }\n }\n }\n }; // Current Date\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.getInitialDate = function () {\n var defaultDateInput = this.opt('defaultDate'); // compute the initial ambig-timezone date\n\n if (defaultDateInput != null) {\n return this.dateEnv.createMarker(defaultDateInput);\n } else {\n return this.getNow(); // getNow already returns unzoned\n }\n };\n\n Calendar.prototype.prev = function () {\n this.unselect();\n this.dispatch({\n type: 'PREV'\n });\n };\n\n Calendar.prototype.next = function () {\n this.unselect();\n this.dispatch({\n type: 'NEXT'\n });\n };\n\n Calendar.prototype.prevYear = function () {\n this.unselect();\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: this.dateEnv.addYears(this.state.currentDate, -1)\n });\n };\n\n Calendar.prototype.nextYear = function () {\n this.unselect();\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: this.dateEnv.addYears(this.state.currentDate, 1)\n });\n };\n\n Calendar.prototype.today = function () {\n this.unselect();\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: this.getNow()\n });\n };\n\n Calendar.prototype.gotoDate = function (zonedDateInput) {\n this.unselect();\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: this.dateEnv.createMarker(zonedDateInput)\n });\n };\n\n Calendar.prototype.incrementDate = function (deltaInput) {\n var delta = createDuration(deltaInput);\n\n if (delta) {\n // else, warn about invalid input?\n this.unselect();\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: this.dateEnv.add(this.state.currentDate, delta)\n });\n }\n }; // for external API\n\n\n Calendar.prototype.getDate = function () {\n return this.dateEnv.toDate(this.state.currentDate);\n }; // Date Formatting Utils\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.formatDate = function (d, formatter) {\n var dateEnv = this.dateEnv;\n return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n }; // `settings` is for formatter AND isEndExclusive\n\n\n Calendar.prototype.formatRange = function (d0, d1, settings) {\n var dateEnv = this.dateEnv;\n return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings, this.opt('defaultRangeSeparator')), settings);\n };\n\n Calendar.prototype.formatIso = function (d, omitTime) {\n var dateEnv = this.dateEnv;\n return dateEnv.formatIso(dateEnv.createMarker(d), {\n omitTime: omitTime\n });\n }; // Sizing\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.windowResize = function (ev) {\n if (!this.isHandlingWindowResize && this.component && // why?\n ev.target === window // not a jqui resize event\n ) {\n this.isHandlingWindowResize = true;\n this.updateSize();\n this.publiclyTrigger('windowResize', [this.view]);\n this.isHandlingWindowResize = false;\n }\n };\n\n Calendar.prototype.updateSize = function () {\n if (this.component) {\n // when?\n this.component.updateSize(true);\n }\n }; // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.registerInteractiveComponent = function (component, settingsInput) {\n var settings = parseInteractionSettings(component, settingsInput);\n var DEFAULT_INTERACTIONS = [EventClicking, EventHovering];\n var interactionClasses = DEFAULT_INTERACTIONS.concat(this.pluginSystem.hooks.componentInteractions);\n var interactions = interactionClasses.map(function (interactionClass) {\n return new interactionClass(settings);\n });\n this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n\n Calendar.prototype.unregisterInteractiveComponent = function (component) {\n for (var _i = 0, _a = this.interactionsStore[component.uid]; _i < _a.length; _i++) {\n var listener = _a[_i];\n listener.destroy();\n }\n\n delete this.interactionsStore[component.uid];\n delete interactionSettingsStore[component.uid];\n }; // Date Selection / Event Selection / DayClick\n // -----------------------------------------------------------------------------------------------------------------\n // this public method receives start/end dates in any format, with any timezone\n // NOTE: args were changed from v3\n\n\n Calendar.prototype.select = function (dateOrObj, endDate) {\n var selectionInput;\n\n if (endDate == null) {\n if (dateOrObj.start != null) {\n selectionInput = dateOrObj;\n } else {\n selectionInput = {\n start: dateOrObj,\n end: null\n };\n }\n } else {\n selectionInput = {\n start: dateOrObj,\n end: endDate\n };\n }\n\n var selection = parseDateSpan(selectionInput, this.dateEnv, createDuration({\n days: 1\n }) // TODO: cache this?\n );\n\n if (selection) {\n // throw parse error otherwise?\n this.dispatch({\n type: 'SELECT_DATES',\n selection: selection\n });\n this.triggerDateSelect(selection);\n }\n }; // public method\n\n\n Calendar.prototype.unselect = function (pev) {\n if (this.state.dateSelection) {\n this.dispatch({\n type: 'UNSELECT_DATES'\n });\n this.triggerDateUnselect(pev);\n }\n };\n\n Calendar.prototype.triggerDateSelect = function (selection, pev) {\n var arg = __assign({}, this.buildDateSpanApi(selection), {\n jsEvent: pev ? pev.origEvent : null,\n view: this.view\n });\n\n this.publiclyTrigger('select', [arg]);\n };\n\n Calendar.prototype.triggerDateUnselect = function (pev) {\n this.publiclyTrigger('unselect', [{\n jsEvent: pev ? pev.origEvent : null,\n view: this.view\n }]);\n }; // TODO: receive pev?\n\n\n Calendar.prototype.triggerDateClick = function (dateSpan, dayEl, view, ev) {\n var arg = __assign({}, this.buildDatePointApi(dateSpan), {\n dayEl: dayEl,\n jsEvent: ev,\n // Is this always a mouse event? See #4655\n view: view\n });\n\n this.publiclyTrigger('dateClick', [arg]);\n };\n\n Calendar.prototype.buildDatePointApi = function (dateSpan) {\n var props = {};\n\n for (var _i = 0, _a = this.pluginSystem.hooks.datePointTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n\n __assign(props, transform(dateSpan, this));\n }\n\n __assign(props, buildDatePointApi(dateSpan, this.dateEnv));\n\n return props;\n };\n\n Calendar.prototype.buildDateSpanApi = function (dateSpan) {\n var props = {};\n\n for (var _i = 0, _a = this.pluginSystem.hooks.dateSpanTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n\n __assign(props, transform(dateSpan, this));\n }\n\n __assign(props, buildDateSpanApi(dateSpan, this.dateEnv));\n\n return props;\n }; // Date Utils\n // -----------------------------------------------------------------------------------------------------------------\n // Returns a DateMarker for the current date, as defined by the client's computer or from the `now` option\n\n\n Calendar.prototype.getNow = function () {\n var now = this.opt('now');\n\n if (typeof now === 'function') {\n now = now();\n }\n\n if (now == null) {\n return this.dateEnv.createNowMarker();\n }\n\n return this.dateEnv.createMarker(now);\n }; // Event-Date Utilities\n // -----------------------------------------------------------------------------------------------------------------\n // Given an event's allDay status and start date, return what its fallback end date should be.\n // TODO: rename to computeDefaultEventEnd\n\n\n Calendar.prototype.getDefaultEventEnd = function (allDay, marker) {\n var end = marker;\n\n if (allDay) {\n end = startOfDay(end);\n end = this.dateEnv.add(end, this.defaultAllDayEventDuration);\n } else {\n end = this.dateEnv.add(end, this.defaultTimedEventDuration);\n }\n\n return end;\n }; // Public Events API\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.addEvent = function (eventInput, sourceInput) {\n if (eventInput instanceof EventApi) {\n var def = eventInput._def;\n var instance = eventInput._instance; // not already present? don't want to add an old snapshot\n\n if (!this.state.eventStore.defs[def.defId]) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore({\n def: def,\n instance: instance\n }) // TODO: better util for two args?\n\n });\n }\n\n return eventInput;\n }\n\n var sourceId;\n\n if (sourceInput instanceof EventSourceApi) {\n sourceId = sourceInput.internalEventSource.sourceId;\n } else if (sourceInput != null) {\n var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n\n if (!sourceApi) {\n console.warn('Could not find an event source with ID \"' + sourceInput + '\"'); // TODO: test\n\n return null;\n } else {\n sourceId = sourceApi.internalEventSource.sourceId;\n }\n }\n\n var tuple = parseEvent(eventInput, sourceId, this);\n\n if (tuple) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore(tuple)\n });\n return new EventApi(this, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n }\n\n return null;\n }; // TODO: optimize\n\n\n Calendar.prototype.getEventById = function (id) {\n var _a = this.state.eventStore,\n defs = _a.defs,\n instances = _a.instances;\n id = String(id);\n\n for (var defId in defs) {\n var def = defs[defId];\n\n if (def.publicId === id) {\n if (def.recurringDef) {\n return new EventApi(this, def, null);\n } else {\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n\n if (instance.defId === def.defId) {\n return new EventApi(this, def, instance);\n }\n }\n }\n }\n }\n\n return null;\n };\n\n Calendar.prototype.getEvents = function () {\n var _a = this.state.eventStore,\n defs = _a.defs,\n instances = _a.instances;\n var eventApis = [];\n\n for (var id in instances) {\n var instance = instances[id];\n var def = defs[instance.defId];\n eventApis.push(new EventApi(this, def, instance));\n }\n\n return eventApis;\n };\n\n Calendar.prototype.removeAllEvents = function () {\n this.dispatch({\n type: 'REMOVE_ALL_EVENTS'\n });\n };\n\n Calendar.prototype.rerenderEvents = function () {\n this.dispatch({\n type: 'RESET_EVENTS'\n });\n }; // Public Event Sources API\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.getEventSources = function () {\n var sourceHash = this.state.eventSources;\n var sourceApis = [];\n\n for (var internalId in sourceHash) {\n sourceApis.push(new EventSourceApi(this, sourceHash[internalId]));\n }\n\n return sourceApis;\n };\n\n Calendar.prototype.getEventSourceById = function (id) {\n var sourceHash = this.state.eventSources;\n id = String(id);\n\n for (var sourceId in sourceHash) {\n if (sourceHash[sourceId].publicId === id) {\n return new EventSourceApi(this, sourceHash[sourceId]);\n }\n }\n\n return null;\n };\n\n Calendar.prototype.addEventSource = function (sourceInput) {\n if (sourceInput instanceof EventSourceApi) {\n // not already present? don't want to add an old snapshot\n if (!this.state.eventSources[sourceInput.internalEventSource.sourceId]) {\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [sourceInput.internalEventSource]\n });\n }\n\n return sourceInput;\n }\n\n var eventSource = parseEventSource(sourceInput, this);\n\n if (eventSource) {\n // TODO: error otherwise?\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [eventSource]\n });\n return new EventSourceApi(this, eventSource);\n }\n\n return null;\n };\n\n Calendar.prototype.removeAllEventSources = function () {\n this.dispatch({\n type: 'REMOVE_ALL_EVENT_SOURCES'\n });\n };\n\n Calendar.prototype.refetchEvents = function () {\n this.dispatch({\n type: 'FETCH_EVENT_SOURCES'\n });\n }; // Scroll\n // -----------------------------------------------------------------------------------------------------------------\n\n\n Calendar.prototype.scrollToTime = function (timeInput) {\n var duration = createDuration(timeInput);\n\n if (duration) {\n this.component.view.scrollToDuration(duration);\n }\n };\n\n return Calendar;\n}();\n\nEmitterMixin.mixInto(Calendar); // for memoizers\n// -----------------------------------------------------------------------------------------------------------------\n\nfunction buildComponentContext$1(theme, dateEnv, options) {\n return new ComponentContext(this, theme, dateEnv, options, null);\n}\n\nfunction buildDateEnv(locale, timeZone, namedTimeZoneImpl, firstDay, weekNumberCalculation, weekLabel, cmdFormatter) {\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone: timeZone,\n namedTimeZoneImpl: namedTimeZoneImpl,\n locale: locale,\n weekNumberCalculation: weekNumberCalculation,\n firstDay: firstDay,\n weekLabel: weekLabel,\n cmdFormatter: cmdFormatter\n });\n}\n\nfunction buildTheme(calendarOptions) {\n var themeClass = this.pluginSystem.hooks.themeClasses[calendarOptions.themeSystem] || StandardTheme;\n return new themeClass(calendarOptions);\n}\n\nfunction buildDelayedRerender(wait) {\n var func = this.tryRerender.bind(this);\n\n if (wait != null) {\n func = debounce(func, wait);\n }\n\n return func;\n}\n\nfunction buildEventUiBySource(eventSources) {\n return mapHash(eventSources, function (eventSource) {\n return eventSource.ui;\n });\n}\n\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n var eventUiBases = {\n '': eventUiSingleBase\n };\n\n for (var defId in eventDefs) {\n var def = eventDefs[defId];\n\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n\n return eventUiBases;\n}\n\nvar View =\n/** @class */\nfunction (_super) {\n __extends(View, _super);\n\n function View(viewSpec, parentEl) {\n var _this = _super.call(this, createElement('div', {\n className: 'fc-view fc-' + viewSpec.type + '-view'\n })) || this;\n\n _this.renderDatesMem = memoizeRendering(_this.renderDatesWrap, _this.unrenderDatesWrap);\n _this.renderBusinessHoursMem = memoizeRendering(_this.renderBusinessHours, _this.unrenderBusinessHours, [_this.renderDatesMem]);\n _this.renderDateSelectionMem = memoizeRendering(_this.renderDateSelectionWrap, _this.unrenderDateSelectionWrap, [_this.renderDatesMem]);\n _this.renderEventsMem = memoizeRendering(_this.renderEvents, _this.unrenderEvents, [_this.renderDatesMem]);\n _this.renderEventSelectionMem = memoizeRendering(_this.renderEventSelectionWrap, _this.unrenderEventSelectionWrap, [_this.renderEventsMem]);\n _this.renderEventDragMem = memoizeRendering(_this.renderEventDragWrap, _this.unrenderEventDragWrap, [_this.renderDatesMem]);\n _this.renderEventResizeMem = memoizeRendering(_this.renderEventResizeWrap, _this.unrenderEventResizeWrap, [_this.renderDatesMem]);\n _this.viewSpec = viewSpec;\n _this.type = viewSpec.type;\n parentEl.appendChild(_this.el);\n\n _this.initialize();\n\n return _this;\n }\n\n View.prototype.initialize = function () {};\n\n Object.defineProperty(View.prototype, \"activeStart\", {\n // Date Setting/Unsetting\n // -----------------------------------------------------------------------------------------------------------------\n get: function () {\n return this.context.dateEnv.toDate(this.props.dateProfile.activeRange.start);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"activeEnd\", {\n get: function () {\n return this.context.dateEnv.toDate(this.props.dateProfile.activeRange.end);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"currentStart\", {\n get: function () {\n return this.context.dateEnv.toDate(this.props.dateProfile.currentRange.start);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"currentEnd\", {\n get: function () {\n return this.context.dateEnv.toDate(this.props.dateProfile.currentRange.end);\n },\n enumerable: true,\n configurable: true\n }); // General Rendering\n // -----------------------------------------------------------------------------------------------------------------\n\n View.prototype.render = function (props, context) {\n this.renderDatesMem(props.dateProfile);\n this.renderBusinessHoursMem(props.businessHours);\n this.renderDateSelectionMem(props.dateSelection);\n this.renderEventsMem(props.eventStore);\n this.renderEventSelectionMem(props.eventSelection);\n this.renderEventDragMem(props.eventDrag);\n this.renderEventResizeMem(props.eventResize);\n };\n\n View.prototype.beforeUpdate = function () {\n this.addScroll(this.queryScroll());\n };\n\n View.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n\n this.renderDatesMem.unrender(); // should unrender everything else\n }; // Sizing\n // -----------------------------------------------------------------------------------------------------------------\n\n\n View.prototype.updateSize = function (isResize, viewHeight, isAuto) {\n var calendar = this.context.calendar;\n\n if (isResize) {\n this.addScroll(this.queryScroll()); // NOTE: same code as in beforeUpdate\n }\n\n if (isResize || // HACKS...\n calendar.isViewUpdated || calendar.isDatesUpdated || calendar.isEventsUpdated) {\n // sort of the catch-all sizing\n // anything that might cause dimension changes\n this.updateBaseSize(isResize, viewHeight, isAuto);\n } // NOTE: popScroll is called by CalendarComponent\n\n };\n\n View.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) {}; // Date Rendering\n // -----------------------------------------------------------------------------------------------------------------\n\n\n View.prototype.renderDatesWrap = function (dateProfile) {\n this.renderDates(dateProfile);\n this.addScroll({\n duration: createDuration(this.context.options.scrollTime)\n });\n };\n\n View.prototype.unrenderDatesWrap = function () {\n this.stopNowIndicator();\n this.unrenderDates();\n };\n\n View.prototype.renderDates = function (dateProfile) {};\n\n View.prototype.unrenderDates = function () {}; // Business Hours\n // -----------------------------------------------------------------------------------------------------------------\n\n\n View.prototype.renderBusinessHours = function (businessHours) {};\n\n View.prototype.unrenderBusinessHours = function () {}; // Date Selection\n // -----------------------------------------------------------------------------------------------------------------\n\n\n View.prototype.renderDateSelectionWrap = function (selection) {\n if (selection) {\n this.renderDateSelection(selection);\n }\n };\n\n View.prototype.unrenderDateSelectionWrap = function (selection) {\n if (selection) {\n this.unrenderDateSelection(selection);\n }\n };\n\n View.prototype.renderDateSelection = function (selection) {};\n\n View.prototype.unrenderDateSelection = function (selection) {}; // Event Rendering\n // -----------------------------------------------------------------------------------------------------------------\n\n\n View.prototype.renderEvents = function (eventStore) {};\n\n View.prototype.unrenderEvents = function () {}; // util for subclasses\n\n\n View.prototype.sliceEvents = function (eventStore, allDay) {\n var props = this.props;\n return sliceEventStore(eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? this.context.nextDayThreshold : null).fg;\n }; // Event Selection\n // -----------------------------------------------------------------------------------------------------------------\n\n\n View.prototype.renderEventSelectionWrap = function (instanceId) {\n if (instanceId) {\n this.renderEventSelection(instanceId);\n }\n };\n\n View.prototype.unrenderEventSelectionWrap = function (instanceId) {\n if (instanceId) {\n this.unrenderEventSelection(instanceId);\n }\n };\n\n View.prototype.renderEventSelection = function (instanceId) {};\n\n View.prototype.unrenderEventSelection = function (instanceId) {}; // Event Drag\n // -----------------------------------------------------------------------------------------------------------------\n\n\n View.prototype.renderEventDragWrap = function (state) {\n if (state) {\n this.renderEventDrag(state);\n }\n };\n\n View.prototype.unrenderEventDragWrap = function (state) {\n if (state) {\n this.unrenderEventDrag(state);\n }\n };\n\n View.prototype.renderEventDrag = function (state) {};\n\n View.prototype.unrenderEventDrag = function (state) {}; // Event Resize\n // -----------------------------------------------------------------------------------------------------------------\n\n\n View.prototype.renderEventResizeWrap = function (state) {\n if (state) {\n this.renderEventResize(state);\n }\n };\n\n View.prototype.unrenderEventResizeWrap = function (state) {\n if (state) {\n this.unrenderEventResize(state);\n }\n };\n\n View.prototype.renderEventResize = function (state) {};\n\n View.prototype.unrenderEventResize = function (state) {};\n /* Now Indicator\n ------------------------------------------------------------------------------------------------------------------*/\n // Immediately render the current time indicator and begins re-rendering it at an interval,\n // which is defined by this.getNowIndicatorUnit().\n // TODO: somehow do this for the current whole day's background too\n // USAGE: must be called manually from subclasses' render methods! don't need to call stopNowIndicator tho\n\n\n View.prototype.startNowIndicator = function (dateProfile, dateProfileGenerator) {\n var _this = this;\n\n var _a = this.context,\n calendar = _a.calendar,\n dateEnv = _a.dateEnv,\n options = _a.options;\n var unit;\n var update;\n var delay; // ms wait value\n\n if (options.nowIndicator && !this.initialNowDate) {\n unit = this.getNowIndicatorUnit(dateProfile, dateProfileGenerator);\n\n if (unit) {\n update = this.updateNowIndicator.bind(this);\n this.initialNowDate = calendar.getNow();\n this.initialNowQueriedMs = new Date().valueOf(); // wait until the beginning of the next interval\n\n delay = dateEnv.add(dateEnv.startOf(this.initialNowDate, unit), createDuration(1, unit)).valueOf() - this.initialNowDate.valueOf(); // TODO: maybe always use setTimeout, waiting until start of next unit\n\n this.nowIndicatorTimeoutID = setTimeout(function () {\n _this.nowIndicatorTimeoutID = null;\n update();\n\n if (unit === 'second') {\n delay = 1000; // every second\n } else {\n delay = 1000 * 60; // otherwise, every minute\n }\n\n _this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval\n }, delay);\n } // rendering will be initiated in updateSize\n\n }\n }; // rerenders the now indicator, computing the new current time from the amount of time that has passed\n // since the initial getNow call.\n\n\n View.prototype.updateNowIndicator = function () {\n if (this.props.dateProfile && // a way to determine if dates were rendered yet\n this.initialNowDate // activated before?\n ) {\n this.unrenderNowIndicator(); // won't unrender if unnecessary\n\n this.renderNowIndicator(addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs));\n this.isNowIndicatorRendered = true;\n }\n }; // Immediately unrenders the view's current time indicator and stops any re-rendering timers.\n // Won't cause side effects if indicator isn't rendered.\n\n\n View.prototype.stopNowIndicator = function () {\n if (this.nowIndicatorTimeoutID) {\n clearTimeout(this.nowIndicatorTimeoutID);\n this.nowIndicatorTimeoutID = null;\n }\n\n if (this.nowIndicatorIntervalID) {\n clearInterval(this.nowIndicatorIntervalID);\n this.nowIndicatorIntervalID = null;\n }\n\n if (this.isNowIndicatorRendered) {\n this.unrenderNowIndicator();\n this.isNowIndicatorRendered = false;\n }\n };\n\n View.prototype.getNowIndicatorUnit = function (dateProfile, dateProfileGenerator) {// subclasses should implement\n }; // Renders a current time indicator at the given datetime\n\n\n View.prototype.renderNowIndicator = function (date) {// SUBCLASSES MUST PASS TO CHILDREN!\n }; // Undoes the rendering actions from renderNowIndicator\n\n\n View.prototype.unrenderNowIndicator = function () {// SUBCLASSES MUST PASS TO CHILDREN!\n };\n /* Scroller\n ------------------------------------------------------------------------------------------------------------------*/\n\n\n View.prototype.addScroll = function (scroll, isForced) {\n if (isForced) {\n scroll.isForced = isForced;\n }\n\n __assign(this.queuedScroll || (this.queuedScroll = {}), scroll);\n };\n\n View.prototype.popScroll = function (isResize) {\n this.applyQueuedScroll(isResize);\n this.queuedScroll = null;\n };\n\n View.prototype.applyQueuedScroll = function (isResize) {\n if (this.queuedScroll) {\n this.applyScroll(this.queuedScroll, isResize);\n }\n };\n\n View.prototype.queryScroll = function () {\n var scroll = {};\n\n if (this.props.dateProfile) {\n // dates rendered yet?\n __assign(scroll, this.queryDateScroll());\n }\n\n return scroll;\n };\n\n View.prototype.applyScroll = function (scroll, isResize) {\n var duration = scroll.duration,\n isForced = scroll.isForced;\n\n if (duration != null && !isForced) {\n delete scroll.duration;\n\n if (this.props.dateProfile) {\n // dates rendered yet?\n __assign(scroll, this.computeDateScroll(duration));\n }\n }\n\n if (this.props.dateProfile) {\n // dates rendered yet?\n this.applyDateScroll(scroll);\n }\n };\n\n View.prototype.computeDateScroll = function (duration) {\n return {}; // subclasses must implement\n };\n\n View.prototype.queryDateScroll = function () {\n return {}; // subclasses must implement\n };\n\n View.prototype.applyDateScroll = function (scroll) {// subclasses must implement\n }; // for API\n\n\n View.prototype.scrollToDuration = function (duration) {\n this.applyScroll({\n duration: duration\n }, false);\n };\n\n return View;\n}(DateComponent);\n\nEmitterMixin.mixInto(View);\nView.prototype.usesMinMaxTime = false;\nView.prototype.dateProfileGeneratorClass = DateProfileGenerator;\n\nvar FgEventRenderer =\n/** @class */\nfunction () {\n function FgEventRenderer() {\n this.segs = [];\n this.isSizeDirty = false;\n }\n\n FgEventRenderer.prototype.renderSegs = function (context, segs, mirrorInfo) {\n this.context = context;\n this.rangeUpdated(); // called too frequently :(\n // render an `.el` on each seg\n // returns a subset of the segs. segs that were actually rendered\n\n segs = this.renderSegEls(segs, mirrorInfo);\n this.segs = segs;\n this.attachSegs(segs, mirrorInfo);\n this.isSizeDirty = true;\n triggerRenderedSegs(this.context, this.segs, Boolean(mirrorInfo));\n };\n\n FgEventRenderer.prototype.unrender = function (context, _segs, mirrorInfo) {\n triggerWillRemoveSegs(this.context, this.segs, Boolean(mirrorInfo));\n this.detachSegs(this.segs);\n this.segs = [];\n }; // Updates values that rely on options and also relate to range\n\n\n FgEventRenderer.prototype.rangeUpdated = function () {\n var options = this.context.options;\n var displayEventTime;\n var displayEventEnd;\n this.eventTimeFormat = createFormatter(options.eventTimeFormat || this.computeEventTimeFormat(), options.defaultRangeSeparator);\n displayEventTime = options.displayEventTime;\n\n if (displayEventTime == null) {\n displayEventTime = this.computeDisplayEventTime(); // might be based off of range\n }\n\n displayEventEnd = options.displayEventEnd;\n\n if (displayEventEnd == null) {\n displayEventEnd = this.computeDisplayEventEnd(); // might be based off of range\n }\n\n this.displayEventTime = displayEventTime;\n this.displayEventEnd = displayEventEnd;\n }; // Renders and assigns an `el` property for each foreground event segment.\n // Only returns segments that successfully rendered.\n\n\n FgEventRenderer.prototype.renderSegEls = function (segs, mirrorInfo) {\n var html = '';\n var i;\n\n if (segs.length) {\n // don't build an empty html string\n // build a large concatenation of event segment HTML\n for (i = 0; i < segs.length; i++) {\n html += this.renderSegHtml(segs[i], mirrorInfo);\n } // Grab individual elements from the combined HTML string. Use each as the default rendering.\n // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.\n\n\n htmlToElements(html).forEach(function (el, i) {\n var seg = segs[i];\n\n if (el) {\n seg.el = el;\n }\n });\n segs = filterSegsViaEls(this.context, segs, Boolean(mirrorInfo));\n }\n\n return segs;\n }; // Generic utility for generating the HTML classNames for an event segment's element\n\n\n FgEventRenderer.prototype.getSegClasses = function (seg, isDraggable, isResizable, mirrorInfo) {\n var classes = ['fc-event', seg.isStart ? 'fc-start' : 'fc-not-start', seg.isEnd ? 'fc-end' : 'fc-not-end'].concat(seg.eventRange.ui.classNames);\n\n if (isDraggable) {\n classes.push('fc-draggable');\n }\n\n if (isResizable) {\n classes.push('fc-resizable');\n }\n\n if (mirrorInfo) {\n classes.push('fc-mirror');\n\n if (mirrorInfo.isDragging) {\n classes.push('fc-dragging');\n }\n\n if (mirrorInfo.isResizing) {\n classes.push('fc-resizing');\n }\n }\n\n return classes;\n }; // Compute the text that should be displayed on an event's element.\n // `range` can be the Event object itself, or something range-like, with at least a `start`.\n // If event times are disabled, or the event has no time, will return a blank string.\n // If not specified, formatter will default to the eventTimeFormat setting,\n // and displayEnd will default to the displayEventEnd setting.\n\n\n FgEventRenderer.prototype.getTimeText = function (eventRange, formatter, displayEnd) {\n var def = eventRange.def,\n instance = eventRange.instance;\n return this._getTimeText(instance.range.start, def.hasEnd ? instance.range.end : null, def.allDay, formatter, displayEnd, instance.forcedStartTzo, instance.forcedEndTzo);\n };\n\n FgEventRenderer.prototype._getTimeText = function (start, end, allDay, formatter, displayEnd, forcedStartTzo, forcedEndTzo) {\n var dateEnv = this.context.dateEnv;\n\n if (formatter == null) {\n formatter = this.eventTimeFormat;\n }\n\n if (displayEnd == null) {\n displayEnd = this.displayEventEnd;\n }\n\n if (this.displayEventTime && !allDay) {\n if (displayEnd && end) {\n return dateEnv.formatRange(start, end, formatter, {\n forcedStartTzo: forcedStartTzo,\n forcedEndTzo: forcedEndTzo\n });\n } else {\n return dateEnv.format(start, formatter, {\n forcedTzo: forcedStartTzo\n });\n }\n }\n\n return '';\n };\n\n FgEventRenderer.prototype.computeEventTimeFormat = function () {\n return {\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true\n };\n };\n\n FgEventRenderer.prototype.computeDisplayEventTime = function () {\n return true;\n };\n\n FgEventRenderer.prototype.computeDisplayEventEnd = function () {\n return true;\n }; // Utility for generating event skin-related CSS properties\n\n\n FgEventRenderer.prototype.getSkinCss = function (ui) {\n return {\n 'background-color': ui.backgroundColor,\n 'border-color': ui.borderColor,\n color: ui.textColor\n };\n };\n\n FgEventRenderer.prototype.sortEventSegs = function (segs) {\n var specs = this.context.eventOrderSpecs;\n var objs = segs.map(buildSegCompareObj);\n objs.sort(function (obj0, obj1) {\n return compareByFieldSpecs(obj0, obj1, specs);\n });\n return objs.map(function (c) {\n return c._seg;\n });\n };\n\n FgEventRenderer.prototype.computeSizes = function (force) {\n if (force || this.isSizeDirty) {\n this.computeSegSizes(this.segs);\n }\n };\n\n FgEventRenderer.prototype.assignSizes = function (force) {\n if (force || this.isSizeDirty) {\n this.assignSegSizes(this.segs);\n this.isSizeDirty = false;\n }\n };\n\n FgEventRenderer.prototype.computeSegSizes = function (segs) {};\n\n FgEventRenderer.prototype.assignSegSizes = function (segs) {}; // Manipulation on rendered segs\n\n\n FgEventRenderer.prototype.hideByHash = function (hash) {\n if (hash) {\n for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n\n if (hash[seg.eventRange.instance.instanceId]) {\n seg.el.style.visibility = 'hidden';\n }\n }\n }\n };\n\n FgEventRenderer.prototype.showByHash = function (hash) {\n if (hash) {\n for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n\n if (hash[seg.eventRange.instance.instanceId]) {\n seg.el.style.visibility = '';\n }\n }\n }\n };\n\n FgEventRenderer.prototype.selectByInstanceId = function (instanceId) {\n if (instanceId) {\n for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n var eventInstance = seg.eventRange.instance;\n\n if (eventInstance && eventInstance.instanceId === instanceId && seg.el // necessary?\n ) {\n seg.el.classList.add('fc-selected');\n }\n }\n }\n };\n\n FgEventRenderer.prototype.unselectByInstanceId = function (instanceId) {\n if (instanceId) {\n for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n\n if (seg.el) {\n // necessary?\n seg.el.classList.remove('fc-selected');\n }\n }\n }\n };\n\n return FgEventRenderer;\n}(); // returns a object with all primitive props that can be compared\n\n\nfunction buildSegCompareObj(seg) {\n var eventDef = seg.eventRange.def;\n var range = seg.eventRange.instance.range;\n var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n\n var end = range.end ? range.end.valueOf() : 0; // \"\n\n return __assign({}, eventDef.extendedProps, eventDef, {\n id: eventDef.publicId,\n start: start,\n end: end,\n duration: end - start,\n allDay: Number(eventDef.allDay),\n _seg: seg // for later retrieval\n\n });\n}\n/*\nTODO: when refactoring this class, make a new FillRenderer instance for each `type`\n*/\n\n\nvar FillRenderer =\n/** @class */\nfunction () {\n function FillRenderer() {\n this.fillSegTag = 'div';\n this.dirtySizeFlags = {};\n this.containerElsByType = {};\n this.segsByType = {};\n }\n\n FillRenderer.prototype.getSegsByType = function (type) {\n return this.segsByType[type] || [];\n };\n\n FillRenderer.prototype.renderSegs = function (type, context, segs) {\n var _a;\n\n this.context = context;\n var renderedSegs = this.renderSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs\n\n var containerEls = this.attachSegs(type, renderedSegs);\n\n if (containerEls) {\n (_a = this.containerElsByType[type] || (this.containerElsByType[type] = [])).push.apply(_a, containerEls);\n }\n\n this.segsByType[type] = renderedSegs;\n\n if (type === 'bgEvent') {\n triggerRenderedSegs(context, renderedSegs, false); // isMirror=false\n }\n\n this.dirtySizeFlags[type] = true;\n }; // Unrenders a specific type of fill that is currently rendered on the grid\n\n\n FillRenderer.prototype.unrender = function (type, context) {\n var segs = this.segsByType[type];\n\n if (segs) {\n if (type === 'bgEvent') {\n triggerWillRemoveSegs(context, segs, false); // isMirror=false\n }\n\n this.detachSegs(type, segs);\n }\n }; // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types.\n // Only returns segments that successfully rendered.\n\n\n FillRenderer.prototype.renderSegEls = function (type, segs) {\n var _this = this;\n\n var html = '';\n var i;\n\n if (segs.length) {\n // build a large concatenation of segment HTML\n for (i = 0; i < segs.length; i++) {\n html += this.renderSegHtml(type, segs[i]);\n } // Grab individual elements from the combined HTML string. Use each as the default rendering.\n // Then, compute the 'el' for each segment.\n\n\n htmlToElements(html).forEach(function (el, i) {\n var seg = segs[i];\n\n if (el) {\n seg.el = el;\n }\n });\n\n if (type === 'bgEvent') {\n segs = filterSegsViaEls(this.context, segs, false // isMirror. background events can never be mirror elements\n );\n } // correct element type? (would be bad if a non-TD were inserted into a table for example)\n\n\n segs = segs.filter(function (seg) {\n return elementMatches(seg.el, _this.fillSegTag);\n });\n }\n\n return segs;\n }; // Builds the HTML needed for one fill segment. Generic enough to work with different types.\n\n\n FillRenderer.prototype.renderSegHtml = function (type, seg) {\n var css = null;\n var classNames = [];\n\n if (type !== 'highlight' && type !== 'businessHours') {\n css = {\n 'background-color': seg.eventRange.ui.backgroundColor\n };\n }\n\n if (type !== 'highlight') {\n classNames = classNames.concat(seg.eventRange.ui.classNames);\n }\n\n if (type === 'businessHours') {\n classNames.push('fc-bgevent');\n } else {\n classNames.push('fc-' + type.toLowerCase());\n }\n\n return '<' + this.fillSegTag + (classNames.length ? ' class=\"' + classNames.join(' ') + '\"' : '') + (css ? ' style=\"' + cssToStr(css) + '\"' : '') + '>';\n };\n\n FillRenderer.prototype.detachSegs = function (type, segs) {\n var containerEls = this.containerElsByType[type];\n\n if (containerEls) {\n containerEls.forEach(removeElement);\n delete this.containerElsByType[type];\n }\n };\n\n FillRenderer.prototype.computeSizes = function (force) {\n for (var type in this.segsByType) {\n if (force || this.dirtySizeFlags[type]) {\n this.computeSegSizes(this.segsByType[type]);\n }\n }\n };\n\n FillRenderer.prototype.assignSizes = function (force) {\n for (var type in this.segsByType) {\n if (force || this.dirtySizeFlags[type]) {\n this.assignSegSizes(this.segsByType[type]);\n }\n }\n\n this.dirtySizeFlags = {};\n };\n\n FillRenderer.prototype.computeSegSizes = function (segs) {};\n\n FillRenderer.prototype.assignSegSizes = function (segs) {};\n\n return FillRenderer;\n}();\n\nvar NamedTimeZoneImpl =\n/** @class */\nfunction () {\n function NamedTimeZoneImpl(timeZoneName) {\n this.timeZoneName = timeZoneName;\n }\n\n return NamedTimeZoneImpl;\n}();\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\n\n\nvar ElementDragging =\n/** @class */\nfunction () {\n function ElementDragging(el) {\n this.emitter = new EmitterMixin();\n }\n\n ElementDragging.prototype.destroy = function () {};\n\n ElementDragging.prototype.setMirrorIsVisible = function (bool) {// optional if subclass doesn't want to support a mirror\n };\n\n ElementDragging.prototype.setMirrorNeedsRevert = function (bool) {// optional if subclass doesn't want to support a mirror\n };\n\n ElementDragging.prototype.setAutoScrollEnabled = function (bool) {// optional\n };\n\n return ElementDragging;\n}();\n\nfunction formatDate(dateInput, settings) {\n if (settings === void 0) {\n settings = {};\n }\n\n var dateEnv = buildDateEnv$1(settings);\n var formatter = createFormatter(settings);\n var dateMeta = dateEnv.createMarkerMeta(dateInput);\n\n if (!dateMeta) {\n // TODO: warning?\n return '';\n }\n\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo\n });\n}\n\nfunction formatRange(startInput, endInput, settings // mixture of env and formatter settings\n) {\n var dateEnv = buildDateEnv$1(typeof settings === 'object' && settings ? settings : {}); // pass in if non-null object\n\n var formatter = createFormatter(settings, globalDefaults.defaultRangeSeparator);\n var startMeta = dateEnv.createMarkerMeta(startInput);\n var endMeta = dateEnv.createMarkerMeta(endInput);\n\n if (!startMeta || !endMeta) {\n // TODO: warning?\n return '';\n }\n\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: settings.isEndExclusive\n });\n} // TODO: more DRY and optimized\n\n\nfunction buildDateEnv$1(settings) {\n var locale = buildLocale(settings.locale || 'en', parseRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n // ensure required settings\n\n settings = __assign({\n timeZone: globalDefaults.timeZone,\n calendarSystem: 'gregory'\n }, settings, {\n locale: locale\n });\n return new DateEnv(settings);\n}\n\nvar DRAG_META_PROPS = {\n startTime: createDuration,\n duration: createDuration,\n create: Boolean,\n sourceId: String\n};\nvar DRAG_META_DEFAULTS = {\n create: true\n};\n\nfunction parseDragMeta(raw) {\n var leftoverProps = {};\n var refined = refineProps(raw, DRAG_META_PROPS, DRAG_META_DEFAULTS, leftoverProps);\n refined.leftoverProps = leftoverProps;\n return refined;\n} // Computes a default column header formatting string if `colFormat` is not explicitly defined\n\n\nfunction computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n // if more than one week row, or if there are a lot of columns with not much space,\n // put just the day numbers will be in each cell\n if (!datesRepDistinctDays || dayCnt > 10) {\n return {\n weekday: 'short'\n }; // \"Sat\"\n } else if (dayCnt > 1) {\n return {\n weekday: 'short',\n month: 'numeric',\n day: 'numeric',\n omitCommas: true\n }; // \"Sat 11/12\"\n } else {\n return {\n weekday: 'long'\n }; // \"Saturday\"\n }\n}\n\nfunction renderDateCell(dateMarker, dateProfile, datesRepDistinctDays, colCnt, colHeadFormat, context, colspan, otherAttrs) {\n var dateEnv = context.dateEnv,\n theme = context.theme,\n options = context.options;\n var isDateValid = rangeContainsMarker(dateProfile.activeRange, dateMarker); // TODO: called too frequently. cache somehow.\n\n var classNames = ['fc-day-header', theme.getClass('widgetHeader')];\n var innerHtml;\n\n if (typeof options.columnHeaderHtml === 'function') {\n innerHtml = options.columnHeaderHtml(dateEnv.toDate(dateMarker));\n } else if (typeof options.columnHeaderText === 'function') {\n innerHtml = htmlEscape(options.columnHeaderText(dateEnv.toDate(dateMarker)));\n } else {\n innerHtml = htmlEscape(dateEnv.format(dateMarker, colHeadFormat));\n } // if only one row of days, the classNames on the header can represent the specific days beneath\n\n\n if (datesRepDistinctDays) {\n classNames = classNames.concat( // includes the day-of-week class\n // noThemeHighlight=true (don't highlight the header)\n getDayClasses(dateMarker, dateProfile, context, true));\n } else {\n classNames.push('fc-' + DAY_IDS[dateMarker.getUTCDay()]); // only add the day-of-week class\n }\n\n return '' + ' 1 ? ' colspan=\"' + colspan + '\"' : '') + (otherAttrs ? ' ' + otherAttrs : '') + '>' + (isDateValid ? // don't make a link if the heading could represent multiple days, or if there's only one day (forceOff)\n buildGotoAnchorHtml(options, dateEnv, {\n date: dateMarker,\n forceOff: !datesRepDistinctDays || colCnt === 1\n }, innerHtml) : // if not valid, display text, but no link\n innerHtml) + '';\n}\n\nvar DayHeader =\n/** @class */\nfunction (_super) {\n __extends(DayHeader, _super);\n\n function DayHeader(parentEl) {\n var _this = _super.call(this) || this;\n\n _this.renderSkeleton = memoizeRendering(_this._renderSkeleton, _this._unrenderSkeleton);\n _this.parentEl = parentEl;\n return _this;\n }\n\n DayHeader.prototype.render = function (props, context) {\n var dates = props.dates,\n datesRepDistinctDays = props.datesRepDistinctDays;\n var parts = [];\n this.renderSkeleton(context);\n\n if (props.renderIntroHtml) {\n parts.push(props.renderIntroHtml());\n }\n\n var colHeadFormat = createFormatter(context.options.columnHeaderFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dates.length));\n\n for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {\n var date = dates_1[_i];\n parts.push(renderDateCell(date, props.dateProfile, datesRepDistinctDays, dates.length, colHeadFormat, context));\n }\n\n if (context.isRtl) {\n parts.reverse();\n }\n\n this.thead.innerHTML = '' + parts.join('') + '';\n };\n\n DayHeader.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n\n this.renderSkeleton.unrender();\n };\n\n DayHeader.prototype._renderSkeleton = function (context) {\n var theme = context.theme;\n var parentEl = this.parentEl;\n parentEl.innerHTML = ''; // because might be nbsp\n\n parentEl.appendChild(this.el = htmlToElement('
' + '' + '' + '
' + '
'));\n this.thead = this.el.querySelector('thead');\n };\n\n DayHeader.prototype._unrenderSkeleton = function () {\n removeElement(this.el);\n };\n\n return DayHeader;\n}(Component);\n\nvar DaySeries =\n/** @class */\nfunction () {\n function DaySeries(range, dateProfileGenerator) {\n var date = range.start;\n var end = range.end;\n var indices = [];\n var dates = [];\n var dayIndex = -1;\n\n while (date < end) {\n // loop each day from start to end\n if (dateProfileGenerator.isHiddenDay(date)) {\n indices.push(dayIndex + 0.5); // mark that it's between indices\n } else {\n dayIndex++;\n indices.push(dayIndex);\n dates.push(date);\n }\n\n date = addDays(date, 1);\n }\n\n this.dates = dates;\n this.indices = indices;\n this.cnt = dates.length;\n }\n\n DaySeries.prototype.sliceRange = function (range) {\n var firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n\n var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n\n var clippedFirstIndex = Math.max(0, firstIndex);\n var clippedLastIndex = Math.min(this.cnt - 1, lastIndex); // deal with in-between indices\n\n clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n\n clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n\n if (clippedFirstIndex <= clippedLastIndex) {\n return {\n firstIndex: clippedFirstIndex,\n lastIndex: clippedLastIndex,\n isStart: firstIndex === clippedFirstIndex,\n isEnd: lastIndex === clippedLastIndex\n };\n } else {\n return null;\n }\n }; // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n // If before the first offset, returns a negative number.\n // If after the last offset, returns an offset past the last cell offset.\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n\n\n DaySeries.prototype.getDateDayIndex = function (date) {\n var indices = this.indices;\n var dayOffset = Math.floor(diffDays(this.dates[0], date));\n\n if (dayOffset < 0) {\n return indices[0] - 1;\n } else if (dayOffset >= indices.length) {\n return indices[indices.length - 1] + 1;\n } else {\n return indices[dayOffset];\n }\n };\n\n return DaySeries;\n}();\n\nvar DayTable =\n/** @class */\nfunction () {\n function DayTable(daySeries, breakOnWeeks) {\n var dates = daySeries.dates;\n var daysPerRow;\n var firstDay;\n var rowCnt;\n\n if (breakOnWeeks) {\n // count columns until the day-of-week repeats\n firstDay = dates[0].getUTCDay();\n\n for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow++) {\n if (dates[daysPerRow].getUTCDay() === firstDay) {\n break;\n }\n }\n\n rowCnt = Math.ceil(dates.length / daysPerRow);\n } else {\n rowCnt = 1;\n daysPerRow = dates.length;\n }\n\n this.rowCnt = rowCnt;\n this.colCnt = daysPerRow;\n this.daySeries = daySeries;\n this.cells = this.buildCells();\n this.headerDates = this.buildHeaderDates();\n }\n\n DayTable.prototype.buildCells = function () {\n var rows = [];\n\n for (var row = 0; row < this.rowCnt; row++) {\n var cells = [];\n\n for (var col = 0; col < this.colCnt; col++) {\n cells.push(this.buildCell(row, col));\n }\n\n rows.push(cells);\n }\n\n return rows;\n };\n\n DayTable.prototype.buildCell = function (row, col) {\n return {\n date: this.daySeries.dates[row * this.colCnt + col]\n };\n };\n\n DayTable.prototype.buildHeaderDates = function () {\n var dates = [];\n\n for (var col = 0; col < this.colCnt; col++) {\n dates.push(this.cells[0][col].date);\n }\n\n return dates;\n };\n\n DayTable.prototype.sliceRange = function (range) {\n var colCnt = this.colCnt;\n var seriesSeg = this.daySeries.sliceRange(range);\n var segs = [];\n\n if (seriesSeg) {\n var firstIndex = seriesSeg.firstIndex,\n lastIndex = seriesSeg.lastIndex;\n var index = firstIndex;\n\n while (index <= lastIndex) {\n var row = Math.floor(index / colCnt);\n var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n segs.push({\n row: row,\n firstCol: index % colCnt,\n lastCol: (nextIndex - 1) % colCnt,\n isStart: seriesSeg.isStart && index === firstIndex,\n isEnd: seriesSeg.isEnd && nextIndex - 1 === lastIndex\n });\n index = nextIndex;\n }\n }\n\n return segs;\n };\n\n return DayTable;\n}();\n\nvar Slicer =\n/** @class */\nfunction () {\n function Slicer() {\n this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n this.sliceDateSelection = memoize(this._sliceDateSpan);\n this.sliceEventStore = memoize(this._sliceEventStore);\n this.sliceEventDrag = memoize(this._sliceInteraction);\n this.sliceEventResize = memoize(this._sliceInteraction);\n }\n\n Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, calendar, component) {\n var extraArgs = [];\n\n for (var _i = 5; _i < arguments.length; _i++) {\n extraArgs[_i - 5] = arguments[_i];\n }\n\n var eventUiBases = props.eventUiBases;\n var eventSegs = this.sliceEventStore.apply(this, [props.eventStore, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs));\n return {\n dateSelectionSegs: this.sliceDateSelection.apply(this, [props.dateSelection, eventUiBases, component].concat(extraArgs)),\n businessHourSegs: this.sliceBusinessHours.apply(this, [props.businessHours, dateProfile, nextDayThreshold, calendar, component].concat(extraArgs)),\n fgEventSegs: eventSegs.fg,\n bgEventSegs: eventSegs.bg,\n eventDrag: this.sliceEventDrag.apply(this, [props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)),\n eventResize: this.sliceEventResize.apply(this, [props.eventResize, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)),\n eventSelection: props.eventSelection\n }; // TODO: give interactionSegs?\n };\n\n Slicer.prototype.sliceNowDate = function ( // does not memoize\n date, component) {\n var extraArgs = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n extraArgs[_i - 2] = arguments[_i];\n }\n\n return this._sliceDateSpan.apply(this, [{\n range: {\n start: date,\n end: addMs(date, 1)\n },\n allDay: false\n }, {}, component].concat(extraArgs));\n };\n\n Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, calendar, component) {\n var extraArgs = [];\n\n for (var _i = 5; _i < arguments.length; _i++) {\n extraArgs[_i - 5] = arguments[_i];\n }\n\n if (!businessHours) {\n return [];\n }\n\n return this._sliceEventStore.apply(this, [expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), calendar), {}, dateProfile, nextDayThreshold, component].concat(extraArgs)).bg;\n };\n\n Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold, component) {\n var extraArgs = [];\n\n for (var _i = 5; _i < arguments.length; _i++) {\n extraArgs[_i - 5] = arguments[_i];\n }\n\n if (eventStore) {\n var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n bg: this.sliceEventRanges(rangeRes.bg, component, extraArgs),\n fg: this.sliceEventRanges(rangeRes.fg, component, extraArgs)\n };\n } else {\n return {\n bg: [],\n fg: []\n };\n }\n };\n\n Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold, component) {\n var extraArgs = [];\n\n for (var _i = 5; _i < arguments.length; _i++) {\n extraArgs[_i - 5] = arguments[_i];\n }\n\n if (!interaction) {\n return null;\n }\n\n var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n segs: this.sliceEventRanges(rangeRes.fg, component, extraArgs),\n affectedInstances: interaction.affectedEvents.instances,\n isEvent: interaction.isEvent,\n sourceSeg: interaction.origSeg\n };\n };\n\n Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, component) {\n var extraArgs = [];\n\n for (var _i = 3; _i < arguments.length; _i++) {\n extraArgs[_i - 3] = arguments[_i];\n }\n\n if (!dateSpan) {\n return [];\n }\n\n var eventRange = fabricateEventRange(dateSpan, eventUiBases, component.context.calendar);\n var segs = this.sliceRange.apply(this, [dateSpan.range].concat(extraArgs));\n\n for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) {\n var seg = segs_1[_a];\n seg.component = component;\n seg.eventRange = eventRange;\n }\n\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n\n\n Slicer.prototype.sliceEventRanges = function (eventRanges, component, // TODO: kill\n extraArgs) {\n var segs = [];\n\n for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {\n var eventRange = eventRanges_1[_i];\n segs.push.apply(segs, this.sliceEventRange(eventRange, component, extraArgs));\n }\n\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n\n\n Slicer.prototype.sliceEventRange = function (eventRange, component, // TODO: kill\n extraArgs) {\n var segs = this.sliceRange.apply(this, [eventRange.range].concat(extraArgs));\n\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n seg.component = component;\n seg.eventRange = eventRange;\n seg.isStart = eventRange.isStart && seg.isStart;\n seg.isEnd = eventRange.isEnd && seg.isEnd;\n }\n\n return segs;\n };\n\n return Slicer;\n}();\n/*\nfor incorporating minTime/maxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\n\n\nfunction computeActiveRange(dateProfile, isComponentAllDay) {\n var range = dateProfile.activeRange;\n\n if (isComponentAllDay) {\n return range;\n }\n\n return {\n start: addMs(range.start, dateProfile.minTime.milliseconds),\n end: addMs(range.end, dateProfile.maxTime.milliseconds - 864e5) // 864e5 = ms in a day\n\n };\n} // exports\n// --------------------------------------------------------------------------------------------------\n\n\nvar version = '4.4.2';\nexport { Calendar, Component, ComponentContext, DateComponent, DateEnv, DateProfileGenerator, DayHeader, DaySeries, DayTable, ElementDragging, ElementScrollController, EmitterMixin, EventApi, FgEventRenderer, FillRenderer, Interaction, Mixin, NamedTimeZoneImpl, PositionCache, ScrollComponent, ScrollController, Slicer, Splitter, Theme, View, WindowScrollController, addDays, addDurations, addMs, addWeeks, allowContextMenu, allowSelection, appendToElement, applyAll, applyMutationToEventStore, applyStyle, applyStyleProp, asRoughMinutes, asRoughMs, asRoughSeconds, buildGotoAnchorHtml, buildSegCompareObj, capitaliseFirstLetter, combineEventUis, compareByFieldSpec, compareByFieldSpecs, compareNumbers, compensateScroll, computeClippingRect, computeEdges, computeEventDraggable, computeEventEndResizable, computeEventStartResizable, computeFallbackHeaderFormat, computeHeightAndMargins, computeInnerRect, computeRect, computeVisibleDayRange, config, constrainPoint, createDuration, createElement, createEmptyEventStore, createEventInstance, createFormatter, createPlugin, cssToStr, debounce, diffDates, diffDayAndTime, diffDays, diffPoints, diffWeeks, diffWholeDays, diffWholeWeeks, disableCursor, distributeHeight, elementClosest, elementMatches, enableCursor, eventTupleToStore, filterEventStoreDefs, filterHash, findChildren, findElements, flexibleCompare, forceClassName, formatDate, formatIsoTimeString, formatRange, getAllDayHtml, getClippingParents, getDayClasses, getElSeg, getRectCenter, getRelevantEvents, globalDefaults, greatestDurationDenominator, hasBgRendering, htmlEscape, htmlToElement, insertAfterElement, interactionSettingsStore, interactionSettingsToStore, intersectRanges, intersectRects, isArraysEqual, isDateSpansEqual, isInt, isInteractionValid, isMultiDayRange, isPropsEqual, isPropsValid, isSingleDay, isValidDate, listenBySelector, mapHash, matchCellWidths, memoize, memoizeOutput, memoizeRendering, mergeEventStores, multiplyDuration, padStart, parseBusinessHours, parseDragMeta, parseEventDef, parseFieldSpecs, parse as parseMarker, pointInsideRect, prependToElement, preventContextMenu, preventDefault, preventSelection, processScopedUiProps, rangeContainsMarker, rangeContainsRange, rangesEqual, rangesIntersect, refineProps, removeElement, removeExact, renderDateCell, requestJson, sliceEventStore, startOfDay, subtractInnerElHeight, translateRect, uncompensateScroll, undistributeHeight, unpromisify, version, whenTransitionDone, wholeDivideDurations };","function user_preferred_clock() {\n return $(\"#user_data\").data('timeformat');\n}\n\nexport function user_prefers_12hr() {\n return user_preferred_clock() == 12;\n}\n\nexport function user_prefers_24hr() {\n return !user_prefers_12hr();\n}\n\n /*\n * Function that converts time from am/pm format to 24 hours format (for display)\n *\n * @param {time} string \"h:m A\" format\n *\n * @return {time} string \"HH:MM\" format\n */\nexport function am_pm_to_hours(time) {\n var parsed = moment(time, 'h:mma', true);\n return parsed.isValid() ? parsed.format('HH:mm') : time;\n}\n\n// Input: A time format string optionally having am/pm case-insensitively (\"12:34pm\", \"12:34AM\", \"17:49\")\n// Output: A time format string optionally having a/p in lowercase (\"12:34p\", \"12:34a\", \"17:49\")\nexport function shorten_ampm(time) {\n time = time.toLowerCase();\n time = time.replace(/am/g, \"a\");\n time = time.replace(/pm/g, \"p\");\n return time;\n}\n\n/*\n * Function that converts time from 24 hours format to 12 hours format (for display)\n * Accepts times with brackets, for some strange reason...\n * Leaving it because I don't want to change its functionality\n * Existing functionality matches *both* 12:34 style *and* 12:34:56 style (seconds)\n *\n * @param {time} string \"HH:MM\" format\n *\n * @return {time} string \"h:m A\" format\n */\nexport function tConvert(time, format24hr = false) {\n var has_brackets = false;\n if (time.indexOf('(') > -1)\n {\n has_brackets = true;\n time = time.replace(/[()]/g, '');\n }\n\n var parsed, formatted;\n\n // Attempt to parse without seconds\n parsed = moment(time, 'HH:mm', true);\n if (parsed.isValid()) {\n if (format24hr) {\n formatted = parsed.format('HH:mm');\n } else {\n formatted = parsed.format('h:mma');\n }\n return has_brackets ? '(' + formatted + ')' : formatted;\n }\n\n // Attempt to parse with seconds\n parsed = moment(time, 'HH:mm:ss', true);\n if (parsed.isValid()) {\n if (format24hr) {\n formatted = parsed.format('HH:mm');\n } else {\n formatted = parsed.format('h:mma');\n }\n return has_brackets ? '(' + formatted + ')' : formatted;\n }\n\n return has_brackets ? '(' + time + ')' : time;\n}\n\n/*\n * add commas to numbers\n */\nString.prototype.commatise = function(){\n return this.replace(/(\\d)(?=(\\d{3})+($|\\.))/g, \"$1,\");\n}\n\n/*\n * just enabling a better looking parsing of string to integer.\n */\nString.prototype.toNum = function(){\n return parseInt(this, 10);\n}\n\n/*\n * Simplify display of floating point numbers\n * Whole numbers will display without decimal places\n * Non-whole numbers will display to a requested number of decimal places (default is 2)\n */\nexport function basic_format(val, decimals) {\n decimals = decimals || 2\n\n // If adding the decimal places wouldn't change the number\n // do the whole number display\n if (parseFloat(val.toFixed()).toFixed(decimals) == val.toFixed(decimals)) {\n return val.toFixed().commatise();\n } else {\n return val.toFixed(decimals).commatise();\n }\n}\n\n// Similar to basic_format, but specific to currencies\nexport function basic_currency_format(val) {\n if (parseFloat(val.toFixed()).toFixed(2) == val.toFixed(2)) {\n return I18n.toCurrency(val, { precision: 0 });\n } else {\n return I18n.toCurrency(val);\n }\n}\n\n/*\n * Undo basic_format to return a float\n */\nexport function basic_unformat(val) {\n return parseFloat(val.replace(/,/g, \"\"));\n}\n\n/*\n * Useful for comparing numbers that are displayed simple_formatted\n * Just format and unformat to get float value\n */\nexport function basic_round(val, decimals) {\n return basic_unformat(basic_format(val, decimals));\n}\n\n// Convert start_time and end_time from the unavailable data (*always* in 24hr)\n// to a string for display to the user (could be 12/24hr depending on preference)\n// Input: start_time (String for a time in 24hr format, e.g. \"14:00\")\n// Input: end_time (String for a time in 24hr format, e.g. \"18:00\")\n// Output: String representing the time *range* in 12/hr hour format\nexport function formatPartialUnavailableTimes(start_time, end_time) {\n return shorten_ampm(\n (user_prefers_24hr() ? start_time : tConvert(start_time)) +\n \" - \" +\n (user_prefers_24hr() ? end_time : tConvert(end_time))\n );\n}\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","// Global utility functions for heavy front end pages\nexport var msUtil = (function ($, window, document) {\n /*\n * Converts seconds to hours, used to translate Shift durations\n *\n * @param {Integer} seconds\n * @param {Boolean} suffix Add 'hrs' to the result\n *\n * @return {String} \"xx.xxhrs\" if suffix\n * @return {Float} xx.xx if !suffix\n */\n var durationToHours = function (seconds, suffix) {\n seconds = parseInt(seconds)\n if (isNaN(seconds)) {\n return 0\n }\n seconds = Math.round((seconds / 3600) * 100) / 100\n var hours = I18n.toNumber(seconds, { precision: 2, strip_insignificant_zeros: true })\n if (suffix) {\n hours = I18n.t('ms_util.js.hours_duration', { num_hours: hours })\n }\n return hours\n }\n\n /*\n * Converts seconds to minutes, used to translate Shift durations\n *\n * @param {Integer} seconds\n * @param {Boolean} suffix Add 'mins' to the result\n *\n * @return {String} \"xxmins\" if suffix\n * @return {String} \"xxother_suffix\" if suffix && other_suffix is a String\n * @return {Float} xx if !suffix\n */\n var durationToMinutes = function (seconds, suffix, other_suffix) {\n var minutes = Math.round((seconds / 60) * 100) / 100\n if (suffix && typeof other_suffix == 'string' && other_suffix !== '') {\n minutes += other_suffix\n } else if (suffix) {\n minutes += 'mins'\n }\n\n return minutes\n }\n\n /**\n * Fancy formatting of date ranges\n * @param {String} startDate Start of Date Range\n * @param {String} endDate End of Date Range\n * @return {String} Fancy Date Range\n *\n * @example\n * Same Month: Mar 23 – 29, 2014\n *\n * @example\n * Different Month, Same year: Mar 30 – Apr 05, 2014\n *\n * @example\n * Different Year: Dec 29, 2013 – Jan 04, 2014\n */\n var formattedDateRange = function (startDate, endDate) {\n ;(startDate = moment(startDate)), (endDate = moment(endDate))\n if (startDate.isSame(endDate, 'year')) {\n if (startDate.isSame(endDate, 'month')) {\n // Sep 23 – 23, 2015\n return startDate.format('MMM D') + ' - ' + endDate.format('D, YYYY')\n } else {\n // Sep 23 - Sep 23, 2014\n return startDate.format('MMM D') + ' - ' + endDate.format('MMM D, YYYY')\n }\n } else {\n // \"Sep 23, 2014 – Sep 23, 2015\"\n return startDate.format('MMM D, YYYY') + ' - ' + endDate.format('MMM D, YYYY')\n }\n }\n\n /**\n * Custom time handling:\n * @example Nov 13, 2014, 10:00\n * Same day => \"10:00\"\n * Yesterday => \"Yesterday, 10:00\"\n * Same month/year => \"Nov 13, 10:00\"\n * Different year => \"Nov 13, 2014, 10:00\"\n *\n * @param {Integer} timestamp\n * @return {String} Formatted time\n */\n var relativeTime = function (timestamp) {\n var currentTime = moment()\n var momentTimestamp = moment.unix(timestamp)\n\n if (currentTime.year() === momentTimestamp.year()) {\n if (currentTime.month() === momentTimestamp.month()) {\n switch (currentTime.date() - momentTimestamp.date()) {\n case 0: // same day\n formattedTimestamp = momentTimestamp.format('HH:mm')\n break\n case 1: // yesterday\n formattedTimestamp = I18n.t('ms_util.js.yesterday_time', { time: momentTimestamp.format('HH:mm') })\n break\n default: // earlier day in same month/year\n formattedTimestamp = momentTimestamp.format('MMM D, HH:mm')\n break\n }\n } else {\n // same year, different month\n formattedTimestamp = momentTimestamp.format('MMM D, HH:mm')\n }\n } else {\n // different year\n var formattedTimestamp = momentTimestamp.format('MMM D, YYYY, HH:mm')\n }\n return formattedTimestamp\n }\n\n /**\n * CSS spinner for transition states\n *\n * @param {String} elementId ID of element to overlay spinner over\n */\n var spinner = function (elementId) {\n var target = document.getElementById(elementId)\n if (!target) return null\n\n target.style.position = 'relative' // Spinner container must have relative positioning\n\n return new Spinner({\n lines: 13, // The number of lines to draw\n length: 20, // The length of each line\n width: 10, // The line thickness\n radius: 30, // The radius of the inner circle\n corners: 1, // Corner roundness (0..1)\n rotate: 0, // The rotation offset\n direction: 1, // 1: clockwise, -1: counterclockwise\n color: document.config.msUtilColor, // #rgb or #rrggbb or array of colors\n speed: 1, // Rounds per second\n trail: 60, // Afterglow percentage\n className: 'spinner' // The CSS class to assign to the spinner\n }).spin(target)\n }\n\n /*\n * Writes an Array of debug lines to console\n *\n * @example consoleDebug(\"Creating conversations\", conversations);\n */\n var consoleDebug = function () {\n var lines = Array.prototype.slice.call(arguments)\n $.each(lines, (i, line) => {\n console.log(line)\n })\n }\n\n /**\n * Returns formatted result names that guide users to create new 'tags' in Select2 dropdowns\n * @param {Object} item Select2 Object\n * @param {Object} query Select2 Query\n * @param {String} typeOfSelection Text of object getting created\n * @return {String} Formatted result\n */\n var formatResult = function (item, query, typeOfSelection) {\n var formattedResult = item.text.trim()\n if (formattedResult === query.term.trim()) {\n formattedResult = I18n.t('ms_util.js.select2_format', { type: typeOfSelection, query: query.term })\n }\n return formattedResult\n }\n\n var naturalSort = function (a, b, options) {\n var re = /(^-?[0-9]+(\\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,\n sre = /(^[ ]*|[ ]*$)/g,\n // eslint-disable-next-line no-useless-escape\n dre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\n hre = /^0x[0-9a-f]+$/i,\n ore = /^0/\n options = options || {}\n var i = function (s) {\n return (options.insensitive && ('' + s).toLowerCase()) || '' + s\n },\n // convert all to strings strip whitespace\n x = i(a).replace(sre, '') || '',\n y = i(b).replace(sre, '') || '',\n // chunk/tokenize\n xN = x.replace(re, '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0'),\n yN = y.replace(re, '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0'),\n // numeric, hex or date detection\n xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)),\n yD = parseInt(y.match(hre)) || (xD && y.match(dre) && Date.parse(y)) || null,\n oFxNcL,\n oFyNcL,\n mult = options.desc ? -1 : 1\n // first try and sort Hex codes or Dates\n if (yD)\n if (xD < yD) return -1 * mult\n else if (xD > yD) return 1 * mult\n // natural sorting through split numeric strings and default strings\n for (var cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\n // find floats not starting with '0', string or 0 if not defined (Clint Priest)\n oFxNcL = (!(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc])) || xN[cLoc] || 0\n oFyNcL = (!(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc])) || yN[cLoc] || 0\n // handle numeric vs string comparison - number < string - (Kyle Adams)\n if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {\n return isNaN(oFxNcL) ? 1 : -1\n }\n // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\n else if (typeof oFxNcL !== typeof oFyNcL) {\n oFxNcL += ''\n oFyNcL += ''\n }\n if (oFxNcL < oFyNcL) return -1 * mult\n if (oFxNcL > oFyNcL) return 1 * mult\n }\n return 0\n }\n\n return {\n durationToHours: durationToHours,\n durationToMinutes: durationToMinutes,\n formattedDateRange: formattedDateRange,\n relativeTime: relativeTime,\n spinner: spinner,\n consoleDebug: consoleDebug,\n naturalSort: naturalSort,\n select2: {\n formatResult: formatResult\n }\n }\n})(jQuery, window, document)\n","$(document).ready(function(){\n $(\"body\").on('click', '.ga-trackable', function(){\n var trackableItem = $(this)\n var category = trackableItem.data('ga-category');\n var action = trackableItem.data('ga-action');\n var label = trackableItem.data('ga-label');\n ga('send','event', makeshiftGoogleAnalytics.categories[category], makeshiftGoogleAnalytics.actions[action], makeshiftGoogleAnalytics.label[label])\n });\n});\n\n/* Google Analytics Meta-data constants */\n\nexport var makeshiftGoogleAnalytics = {\n actions: {\n assign: \"Assigned\",\n click: \"Clicked\",\n destroy: \"Destroy\",\n drag: \"Dragged\",\n displayed: \"Displayed\",\n hidden: \"Hidden\"\n },\n\n categories: {\n accountActivation: \"Account Activation\",\n availableShift: \"Available shift\",\n breadCrumbNavigation: \"Bread crumbs navigation\",\n departmentCalendar: \"Department calendar\",\n passwordReset: \"Password Reset\",\n sideNavigation: \"Side bar navigation\",\n topNavigation: \"Top bar navigation\",\n userCalendar: \"User calendar\",\n },\n\n label:{\n analytics: \"Analytics\",\n analyticsAvailability: \"Analytics availability\",\n analyticsAvailableShifts: \"Analytics available shifts\",\n analyticsLabourBudget: \"Analytics labour budget\",\n analyticsLedger: \"Analytics ledger breakdown\",\n analyticsShiftExchange: \"Analytics shift exchange\",\n analyticsTurnover: \"Analytics turnover\",\n analyticsWorkforce: \"Analytics workforce\",\n byAvailability: \"By availability\",\n byRequest: \"By request\",\n dashboard: \"Dashboard\",\n departmentAvailable: \"Department available shifts\",\n departmentCalendar: \"Department calendar\",\n departmentEmployee: \"Department employee\",\n departmentExchange: \"Department shift exchanges\",\n departmentProfile: \"Department profile\",\n departmentRotation: \"Department rotations\",\n departments: \"Departments\",\n locations: \"Locations\",\n messages: \"Messages\",\n buttons: {\n publish_and_notify: \"Publish & Notify\"\n },\n published_shift: \"Published Shift\",\n rotation: \"Rotation\",\n showHidePassword: \"Show / Hide Password\",\n shift:\"Shift\",\n shiftOnAvailability: \"Shift on Availability\",\n timeOff: \"Time off\",\n uniqueDepartment: \"Unique department\",\n uniqueLocation: \"Unique location\",\n uniqueUser: \"Unique user\",\n unpublished_shift: \"UnPublished Shift\",\n userCalendar: \"User calendar\",\n userProfile: \"User profile\",\n users: \"Users\",\n weeklyBudgetBar: \"Budget Bar\"\n }\n};\n\n\n","export var calendarHelper = {}\n\ncalendarHelper.isUnavailable = function(type) {\n return (type === \"unavailable\");\n};\n\ncalendarHelper.isCustomShift = function(type) {\n return (type === \"custom-shift\");\n};\n\ncalendarHelper.isRotation = function(type) {\n return (type === \"rotation\");\n};\n\ncalendarHelper.persistedEvent = function(event) {\n return event.original_id !== undefined;\n};\n\ncalendarHelper.isNotWorking = function(shiftTypeId) {\n return (shiftTypeId === \"\");\n};\n\ncalendarHelper.isInCurrentDepartment = function(event) {\n return (event.department_id === MKS.current_department)\n};\n\ncalendarHelper.getTime = function(date) {\n return Math.round(date.getTime() / 1000);\n};\n\ncalendarHelper.getToday = function(date) {\n return new Date(date.setHours(0,0,0,0));\n};\n\ncalendarHelper.getTomorrow = function(date) {\n var tomorrow = new Date(date);\n tomorrow.setHours(24,0,0,0);\n return tomorrow;\n};\n\ncalendarHelper.sortEvents = function(eventsToSort) {\n var sortedEvents = eventsToSort.sort(function(a,b) {\n return a.start - b.start;\n });\n return sortedEvents;\n};\n\ncalendarHelper.getRotationPattern = function(event) {\n if (event.type == \"rotation\") {\n return event.rotation_pattern;\n } else {\n return null;\n }\n};\n\ncalendarHelper.getEarliestDate = function(sortedEvents) {\n return sortedEvents[0].start;\n};\n\ncalendarHelper.getLatestDate = function(sortedEvents){\n return sortedEvents[sortedEvents.length - 1].end;\n};\n\ncalendarHelper.earlierTimeThanToday = function(event_starts_at) {\n return (event_starts_at < Date.today().getTime());\n};\n\ncalendarHelper.earlierDayThanToday = function(date) {\n return (date < moment(MKS.current_time_in_timezone));\n};\n\ncalendarHelper.setToEndOfDay = function(date) {\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 23, 59, 0);\n};\n","// Class for mimicking Rails flash messages when receiving JS responses\n// It assumes the existence of a div element with the ID 'flash-messages'\nfunction flashMessagesClass() {\n\n // Clear all flash messages\n this.clear = function() {\n $('#flash-messages').empty();\n };\n\n // Append a flash message of a given type ('success' or 'error')\n this.addFlash = function(message, type) {\n\n // Assume it's a success if nothing is passed for the type\n type = type || 'success';\n\n // The flash element itself\n var flash = $(document.createElement('div'));\n flash.addClass('alert').addClass('alert-' + type);\n\n // Dismiss button (the 'x')\n var dismiss = $(document.createElement('a'));\n dismiss.addClass('close');\n dismiss.attr('data-dismiss','alert');\n dismiss.append('×');\n flash.append(dismiss);\n\n // Add the text of the message itself to the flash\n flash.append(message);\n\n // Add the flash to the DOM\n $('#flash-messages').html(flash);\n };\n\n // Set the entire flash area to a single message of a given type ('success' or 'error')\n this.setFlash = function(message, type) {\n this.clear();\n this.addFlash(message, type);\n $('html, body').scrollTop(0);\n };\n\n // Set the entire flash area to an error with the given message\n this.error = function(message) {\n this.setFlash(message, 'error');\n };\n\n // Set the entire flash area to a success with the given message\n this.success = function(message) {\n this.setFlash(message, 'success');\n };\n}\n\n// Object we can use to interface with the flash messages\n// e.g. flashMessages.error('Hello World!');\nexport var flashMessages = new flashMessagesClass();\n","$(function() {\n $.tablesorter.addParser({\n id: 'date',\n\n is: function(s) {\n return false;\n },\n\n format: function(s) {\n return parseInt(s);\n },\n\n type: 'numeric'\n });\n\n $.tablesorter.addParser({\n id: 'datetime',\n\n is: function(s) {\n return false;\n },\n\n format: function(s) {\n return parseInt(s);\n },\n\n type: 'numeric'\n });\n\n $.each($('.boot_sort'), function() {\n var table = $(this);\n // Do not attempt to initialize table sorter if there are no rows in the table\n var numberOfRows = table.find('tbody tr').length;\n if (numberOfRows < 1) {\n return;\n }\n table.tablesorter({\n theme: \"bootstrap\",\n widthFixed: true,\n headerTemplate: \"{content} {icon}\",\n sortList: tablesorterSortOrder(table),\n headers: tableDisableSort(table),\n textExtraction: tablesorterExtraction\n });\n });\n\n if ($(\"th[class~='header'],th[class|='sorting']\").length > 0) {\n $.each($(\"th[class|='header'],th[class|='sorting'],th[class~='headerSortDown'],th[class~='headerSortUp']\"), function() {\n return $(this).wrapInner(\"
\");\n });\n }\n\n $('.selectpicker').selectpicker({\n style: 'btn-blue',\n size: 4,\n width: \"50%\",\n });\n});\n\nwindow.tablesorterExtraction = function(node) {\n // Sort dates and times by a timestamp so we don't have to parse i18n-ed dates\n // Needs to be wrapped in a span\n // Example: \"><%= user.last_sign_in_at %>\n var timestamp = $(node).find('[data-timestamp]');\n if (timestamp.length) {\n return timestamp.attr('data-timestamp');\n } else {\n return node.textContent;\n }\n};\n\n// a general function to converion a query string to an array.\nwindow.queryConvert = function(){\n var queryStr = window.location.search,\n queryArr = queryStr.replace('?','').split('&'),\n queryParams = {};\n\n for (var q = 0, qArrLength = queryArr.length; q < qArrLength; q++) {\n var qArr = queryArr[q].split('=');\n queryParams[qArr[0]] = qArr[1];\n }\n\n return queryParams;\n};\n\nwindow.tablesorterSortOrder = function(table) {\n var tableHeaders = table.find('th[data-default-sort=true]');\n var sortOrder = [];\n var tempOrder = [];\n\n if (tableHeaders.length > 0) {\n sortOrder = [];\n\n $.each(tableHeaders, function() {\n var $header = $(this);\n tempOrder.push([$header.index(), 0, parseInt($header.data('sort-order'))]);\n });\n\n var sortedHeaders = tempOrder.sort(function(a, b) {\n var aOrder = a[2];\n var bOrder = b[2];\n\n if (aOrder < bOrder) {\n return -1;\n } else {\n return 1;\n }\n });\n\n $.each(sortedHeaders, function() {\n var $element = $(this);\n sortOrder.push([$element[0], 0]);\n });\n } else {\n sortOrder.push([0, 0]);\n }\n\n return sortOrder;\n};\n\nwindow.tableDisableSort = function(table) {\n var disabledHeaders = table.find('th[data-sorter=false]');\n var customHeadersSort = table.find('th[data-sorter]');\n var headersSettings = {};\n\n if (disabledHeaders.length > 0) {\n $.each(disabledHeaders, function() {\n headersSettings[$(this).index()] = { sorter: false };\n });\n };\n\n if (customHeadersSort.length > 0) {\n $.each(customHeadersSort, function() {\n var $th = $(this);\n var sortName = $th.data('sorter');\n\n if (sortName) {\n headersSettings[$th.index()] = { sorter: sortName };\n }\n });\n }\n return headersSettings;\n};\n\n\n// Clears all modal alerts\nexport var clearModalAlerts = function() {\n $('.modal div[class~=\"alert\"]').remove();\n};\n\n// Renders a formatted error message into modal\n// Expects an object like the following:\n// {\n// error_message: 'Hello',\n// error_style: 'warn'\n// }\n// The field `error_style` is optional and defaults to `error`\nexport var renderModalAlert = function(alertInfo) {\n alertInfo.error_style = alertInfo.error_style || 'error';\n clearModalAlerts();\n $('.modal-body').prepend('
' + alertInfo.error_message + '
');\n $('.modal-body').scrollTop(0);\n};\n\n// override vanilla rails confirms with bootbox\n$(function() {\n $.rails.allowAction = function(element) {\n var message = element.data('confirm'),\n cancelButtonText = element.data('cancel-button-text'), // this attribute allows for overriding the bootbox cancel button text\n confirmButtonText = element.data('confirm-button-text'), // this attribute allows for overriding the bootbox confirm button text\n answer = false, callback;\n\n if (!message) { return true; }\n\n if ($.rails.fire(element, 'confirm')) {\n myCustomConfirmBox(message, cancelButtonText, confirmButtonText, function() {\n callback = $.rails.fire(element,\n 'confirm:complete', [answer]);\n if(callback) {\n var oldAllowAction = $.rails.allowAction;\n $.rails.allowAction = function() { return true; };\n element.trigger('click');\n $.rails.allowAction = oldAllowAction;\n }\n });\n }\n return false;\n }\n\n // DANGER: `message` can contain HTML, so bootbox messages are rife for XSS possibilities\n function myCustomConfirmBox(message, cancelButtonText, confirmButtonText, callback) {\n cancelButtonText = (typeof cancelButtonText === \"undefined\") ? I18n.t('buttons.cancel') : cancelButtonText;\n confirmButtonText = (typeof confirmButtonText === \"undefined\") ? I18n.t('buttons.yes') : confirmButtonText;\n\n bootbox.confirm(message, cancelButtonText, confirmButtonText, function(confirmed) {\n if(confirmed){\n callback();\n }\n });\n }\n});\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","// simple_form style form errors\nexport var remoteFormErrors = (function ($) {\n // Clear prior errors and render new ones\n //\n // @param [String] containerID ID of the form or container that houses the error fields\n // @param [String] klass Optional. ActiveRecord model class name if handling errors for a model form.\n // @param [Hash] errors Errors object: { attribute: [message, message] }\n var errorFields = function (containerID, klass, errors) {\n var $form = $(containerID)\n\n // Clear errors\n errorMessage(containerID, null)\n\n // Flag new errors\n $.each(errors, (attr, message) => {\n var fieldID = klass != null ? '#' + klass + '_' + attr : '#' + attr;\n\n var $field = $form.find(fieldID);\n\n var $controlGroup = $field.closest('div.control-group');\n $controlGroup.addClass('error');\n\n // check if message is an array\n var messageTxt;\n if (Array.isArray(message)) {\n messageTxt = message.join(', ').replace('.,', '.');\n } else {\n messageTxt = message.toString(); // Convert to string\n }\n\n $field.closest('div').append('' + messageTxt + '');\n })\n }\n\n // Display error message for form\n //\n // @param [String] containerID ID of the form or container that houses the error fields\n // @param [String] message Error message\n var errorMessage = function (containerID, message) {\n var $form = $(containerID)\n\n // remove any prior error elements\n $form.find('.error').removeClass('error')\n $form.find('span.help-inline').remove()\n\n // show error header if provided\n if (message) {\n $form.find('.alert-error').text(message).removeClass('hidden')\n }\n }\n\n return {\n errorFields: errorFields,\n errorMessage: errorMessage\n }\n})(jQuery)\n","import { weeklyBudget } from 'core/weekly_budget.js'\nimport { tConvert, user_prefers_12hr } from 'core/helpers/format_helpers.js'\nimport { ShiftType, reverse_shifts_time } from 'core/models/shift_type.js'\nimport { scheduleRotations } from 'core/schedule/rotations.js'\nimport { scheduleLabels } from 'core/schedule_labels.js'\nimport { Rotation } from 'core/models/rotation.js'\nimport { remoteFormErrors } from 'core/remote_form_errors.js'\nimport { onboardingPopovers } from 'core/onboarding_popovers.js'\nimport { msUtil } from 'core/ms_util.js'\nimport { makeshiftGoogleAnalytics } from 'core/google_analytics.js'\nimport { jobSiteSort } from 'core/job_site_sort.js'\nimport { fatigueManagement } from 'core/fatigue_management.js'\nimport { DepartmentScheduleOnboardingProgress } from 'core/models/department_schedule_onboarding_progress.js'\nimport { clearModalAlerts, renderModalAlert } from 'core/makeshift.js'\nimport { bootboxMsg } from 'core/helpers/bootbox.js'\nimport { adjustCounter } from 'core/shift_custom_dialog.js'\n\nexport var departmentSchedule = (function ($, window, document) {\n /*\n public\n */\n\n // Initialize Department Calendar and sets current Department ID\n var $self\n var init = function (settings) {\n $.extend(config, {\n view: settings.view,\n showLabourBudget: settings.showLabourBudget,\n companyId: settings.companyId,\n departmentId: settings.departmentId,\n pageTitle: settings.pageTitle,\n beginningOfWeek: settings.beginningOfWeek,\n startOfWeek: settings.startOfWeek,\n pusherUserId: settings.pusherUserId,\n pusherKey: settings.pusherKey,\n scheduleProviders: settings.scheduleProviders,\n overtimeThreshold: settings.overtimeThreshold,\n adpUser: settings.adpUser,\n scheduleIntegrated: settings.scheduleIntegrated,\n privatePusherChannel: settings.privatePusherChannel,\n jobSitesEnabled: settings.jobSitesEnabled,\n isReadOnlySchedule: settings.isReadOnlySchedule,\n routes: {\n departmentSchedulePath: function () {\n if (config.view == 'employees') {\n return config.routes.employeesDepartmentSchedulePath\n } else if (config.view == 'positions') {\n return config.routes.positionsDepartmentSchedulePath\n } else if (config.view == 'job_sites') {\n return config.routes.jobSitesDepartmentSchedulePath\n }\n },\n departmentScheduleUpdatePath: '/departments/' + settings.departmentId + '/schedule/',\n employeesDepartmentSchedulePath: '/departments/' + settings.departmentId + '/schedule/employees',\n otherDepartmentSchedulePath: '/departments/' + settings.departmentId + '/schedule/other_department_shifts',\n positionsDepartmentSchedulePath: '/departments/' + settings.departmentId + '/schedule/positions',\n jobSitesDepartmentSchedulePath: '/departments/' + settings.departmentId + '/schedule/job_sites',\n printableDepartmentSchedulePath: '/departments/' + settings.departmentId + '/schedule/employees.xlsx',\n newDepartmentAvailableShiftPath: '/departments/' + settings.departmentId + '/available_shifts/new',\n createDepartmentAvailableShiftPath: '/departments/' + settings.departmentId + '/available_shifts',\n editAvailableShiftPath: function (id) {\n return '/available_shifts/' + id + '/edit'\n },\n availableShiftPath: function (id) {\n return '/available_shifts/' + id\n },\n departmentAvailabilitiesPath: function (userId, date) {\n return '/departments/' + settings.departmentId + '/availabilities?user_id=' + userId + '&date=' + date\n },\n unpublishedDepartmentShiftsPath: '/departments/' + settings.departmentId + '/shifts/unpublished',\n newDepartmentShiftPath: '/departments/' + settings.departmentId + '/shifts/new',\n createDepartmentShiftsPath: '/departments/' + settings.departmentId + '/shifts',\n reassignShiftsPath: function (id) {\n return '/shifts/' + id + '/reassign'\n },\n shiftPath: function (id) {\n return '/shifts/' + id\n },\n editShiftPath: function (id) {\n return '/shifts/' + id + '/edit'\n },\n editShiftPositionPath: function (id) {\n return '/shifts/' + id + '/edit_position'\n },\n updateShift: function (id) {\n return '/shifts/' + id\n },\n newDepartmentShiftRequirementPath: '/departments/' + settings.departmentId + '/shift_requirements/new',\n shiftRequirementPath: function (id) {\n return '/shift_requirements/' + id\n },\n unavailablePath: function (id) {\n return '/unavailables/' + id\n },\n createUnavailablesPath: '/unavailables',\n editUnavailablePath: function (id) {\n return '/unavailables/' + id + '/edit'\n },\n newUnavailablePath: '/unavailables/new',\n exportSchedulePath: function (providerName, start_date, archived) {\n var path = '/departments/' + settings.departmentId + '/schedule/export?start=' + start_date + '&provider=' + providerName\n if (providerName == 'raw_excel' || providerName == 'raw_excel_month') path += '&archived=' + archived\n return path\n },\n editUnavailableRequestPath: function (id) {\n return '/time_off_requests/' + id + '/edit'\n },\n newDepartmentCopyPastePath: '/departments/' + settings.departmentId + '/copy_paste/new',\n createDepartmentCopyPastePath: '/departments/' + settings.departmentId + '/copy_paste',\n newWeeklyBudgetPath: '/departments/' + settings.departmentId + '/weekly_budgets/new',\n createWeeklyBudgetPath: '/departments/' + settings.departmentId + '/weekly_budgets',\n editWeeklyBudgetPath: function (id) {\n return '/weekly_budgets/' + id + '/edit'\n },\n newUserPath: '/departments/' + settings.departmentId + '/schedule/users/new',\n departmentUserPath: '/departments/' + settings.departmentId + '/users',\n createDepartmentRotationPath: '/departments/' + settings.departmentId + '/schedule/rotations',\n unavailablesEditTypePath: function (id) {\n return '/unavailables/' + id + '/edit_type'\n },\n shiftExportAttemptsPath: function (start) {\n return '/departments/' + settings.departmentId + '/shift_export_attempts?start=' + start\n }\n },\n selectors: {\n budgetBar: $('#budget-bar'),\n clearShiftTypeFilter: $('#remove-shift-type-filter'),\n clearRotationFilter: $('#remove-rotation-filter'),\n shiftTypeFilter: $('#shift-type-filter'),\n rotationFilter: $('#rotation-filter'),\n shiftTypesBox: $('#shift_types'),\n rotationsBox: $('#rotations'),\n scheduleWrapper: $('.box-wrapper'),\n exportButton: $('#printable-schedule'),\n exportForProviderButton: $('#export-schedule'),\n scheduleProviderFilter: $('#schedule-provider-filter'),\n scheduleCheckbox: $('#checkbox-container'),\n modal: $('#export-modal'),\n availableShiftCells: $('#available-shifts-row th.dropcell'),\n userCells: $('.user-row td.dropcell'),\n lastPublishedAt: $('#last-published-at')\n },\n data: {\n onboarding: {\n progress: DepartmentScheduleOnboardingProgress.init(settings.onboardingProgress)\n }\n }\n })\n\n buildShiftTypes(settings.shiftTypes)\n buildRotations(settings.rotations)\n initRotationEvents()\n initShiftTypeEvents()\n initShiftTypeFilter()\n initRotationFilter()\n\n initMoment()\n initViewToggle()\n initDateNavigation()\n initExportScheduleFields()\n initDatepicker('#toolbar-datepicker')\n initDatepicker('#export-schedule-datepicker')\n initDraggables()\n initModals()\n initModalForms()\n initModalActions()\n initFloatThead()\n initPopState()\n initPublish()\n initCopyPaste()\n initExportButton()\n initPremiumRule()\n initPusherDepartmentNotifs()\n initSidebar()\n initWeekData()\n initWebSocketListeners()\n\n if (config.view == 'employees') {\n initFilter()\n } else if (config.view == 'job_sites') {\n initJobSiteFilter()\n }\n weeklyBudget.init({\n view: config.view,\n departmentId: config.departmentId\n })\n\n loadSchedule().then((response) => {\n scheduleLabels.init({\n departmentId: config.departmentId,\n jobSitesEnabled: config.jobSitesEnabled\n }) // after the shifts have been rendered apply the requirement label js\n\n // Has to come after span budgets to show up consistently on correct element\n if (config.view == 'employees') {\n initOnboardingPopups()\n }\n })\n }\n\n var events = $({})\n var lastPublishButtonClicked\n var lastPublishButtonText\n\n /*\n private\n */\n\n // Default settings\n var config = {\n data: {\n onboarding: {\n progress: null\n }\n },\n view: 'employees',\n showLabourBudget: true,\n dateFmt: 'YYYY-MM-DD',\n highlightColor: '#ffcc00',\n highlightInterval: 750,\n transitionInterval: 300\n }\n\n // Loaded data and associated methods\n var store = {\n // Shift Type objects for department\n // @see assets/javascripts/models/shiftTypes.js\n shiftTypes: [],\n rotations: [],\n lastShiftedShift: {}\n }\n\n // Shifts etc for currently displayed week\n var weekData = {}\n\n var initWeekData = function () {\n weekData = {\n shifts: [],\n other_department_shifts: [],\n availabilities: [],\n unavailables: [],\n shift_requirements: [],\n available_shifts: []\n }\n }\n\n /*\n global variables\n */\n var copyPaste = {\n copiedSourceWeekStartDate: null, // Set when a week is copied\n repeatSourceWeekStartDate: null, // Always equal to prior week\n targetWeekStartDate: null // Set when the current week is initialized\n }\n\n var initMoment = function () {\n moment.locale(I18n.locale)\n moment.updateLocale(I18n.locale, { week: { dow: config.startOfWeek } })\n }\n\n var initPremiumRule = function () {\n $('#premium-rule-viewer').qtip({\n prerender: false,\n content: {\n text: function () {\n return $(this).data('content')\n },\n title: function () {\n return $(this).data('original-title')\n },\n button: true\n },\n position: {\n my: 'center right',\n at: 'center left'\n },\n show: {\n event: 'click'\n },\n hide: {\n event: 'click'\n },\n style: {\n classes: 'qtip-bootstrap position-select qtip-premium-rules'\n }\n })\n }\n\n // Prevent current button click actions\n var initViewToggle = function () {\n $('a.btn-current').on('click', (e) => {\n e.preventDefault()\n })\n }\n\n /**\n * Builds Shift Types and adds them to the Department Schedule store\n * @param {JSON} shiftTypes\n * @return {Array} Shift\n */\n //*\n var buildShiftTypes = function (shiftTypes) {\n _.each(shiftTypes, (shiftType) => {\n return store.shiftTypes.push(new ShiftType(shiftType))\n })\n }\n\n /**\n * Builds Rotations and adds them to the Department Schedule store\n * @param {JSON} rotations\n * @return {Array} Rotation\n */\n //*\n var buildRotations = function (rotations) {\n _.each(rotations, (rotation) => {\n rotation.blueprint = JSON.stringify(rotation.blueprint)\n return store.rotations.push(new Rotation(rotation))\n })\n }\n\n var initRotationEvents = function () {\n scheduleRotations.init({\n createDepartmentRotationPath: config.routes.createDepartmentRotationPath,\n privatePusherChannel: config.privatePusherChannel\n })\n\n var rotationList = HandlebarsTemplates['rotations/index']({\n drag_and_drop: I18n.t('rotations.js.drag_and_drop'),\n if_saved: I18n.t('rotations.js.if_saved'),\n rotations: store.rotations\n })\n\n config.selectors.rotationsBox.empty().append(rotationList)\n\n events\n .on('rotation:rendered', () => {\n config.selectors.rotationsBox.find('.draggable-rotation').draggable({\n revert: 'invalid', // when dropped on invalid target, the item will revert back to its initial position\n containment: 'document',\n helper: function () {\n var helper = $(this).clone()\n helper.css('height', '35px')\n helper.css('width', '100px')\n return helper\n },\n cursor: 'move',\n opacity: 0.8\n })\n })\n .on('rotation:list_updated', (e, rotations, searching) => {\n rotationList = HandlebarsTemplates['rotations/index']({\n drag_and_drop: I18n.t('rotations.js.drag_and_drop'),\n if_saved: I18n.t('rotations.js.if_saved'),\n empty_search: I18n.t('rotations.js.empty_search'),\n searching: searching || false,\n rotations: (rotations || store.rotations).sort((a, b) => {\n return a.secondsSinceMidnight == b.secondsSinceMidnight ? a.duration - b.duration : a.secondsSinceMidnight - b.secondsSinceMidnight\n })\n })\n config.selectors.rotationsBox.empty().append(rotationList)\n events.trigger('rotation:rendered')\n })\n\n events.trigger('rotation:list_updated')\n }\n\n /*\n * Update DOM in response to events triggered by shiftType objects\n */\n var initShiftTypeEvents = function () {\n events\n .on('shiftType:rendered', () => {\n config.selectors.shiftTypesBox.find('.draggable-shift-type').draggable({\n revert: 'invalid', // when dropped on invalid target, the item will revert back to its initial position\n containment: 'document',\n helper: function () {\n var helper = $(this).clone()\n helper.css('height', '35px')\n helper.css('width', '100px')\n return helper\n },\n cursor: 'move',\n opacity: 0.8\n })\n })\n .on('shiftType:created', (e, shiftType) => {\n store.shiftTypes.push(shiftType)\n config.selectors.clearShiftTypeFilter.trigger('click')\n })\n .on('shiftType:list_updated', (e, shiftTypes, searching) => {\n var shiftTypeList = HandlebarsTemplates['shift_types/index']({\n drag_and_drop: I18n.t('shift_types.js.drag_and_drop'),\n if_saved: I18n.t('shift_types.js.if_saved'),\n empty_search: I18n.t('shift_types.js.empty_search'),\n searching: searching || false,\n shiftTypes: (shiftTypes || store.shiftTypes).sort((a, b) => {\n return a.secondsSinceMidnight == b.secondsSinceMidnight ? a.duration - b.duration : a.secondsSinceMidnight - b.secondsSinceMidnight\n })\n })\n config.selectors.shiftTypesBox.empty().append(shiftTypeList)\n events.trigger('shiftType:rendered')\n })\n\n /* Used to initialize the Shift Types on first load */\n events.trigger('shiftType:list_updated')\n }\n\n /* Set up shift type filtering for department calendar, user calendar, and rotations\n @note: Filtering uses the OR operation on search terms\n Filtering is done against the comma-delimited value of a select2 dropdown\n */\n var initShiftTypeFilter = function () {\n config.selectors.clearShiftTypeFilter\n .on('click', () => {\n config.selectors.shiftTypeFilter.val('').keyup()\n })\n .hide()\n\n config.selectors.shiftTypeFilter.on('keyup', _.debounce(filterShiftTypeList, 200))\n\n function filterShiftTypeList() {\n var matches,\n filterWords = $(this).val().trim().toLowerCase()\n\n if (!filterWords) {\n config.selectors.clearShiftTypeFilter.hide()\n matches = store.shiftTypes\n } else {\n config.selectors.clearShiftTypeFilter.show()\n matches = _.filter(store.shiftTypes, (shiftType) => {\n return shiftType.name.toLowerCase().indexOf(filterWords) !== -1\n })\n }\n\n events.trigger('shiftType:list_updated', [matches, filterWords])\n }\n }\n\n /* Set up rotation filtering for department calendar, user calendar, and rotations\n @note: Filtering uses the OR operation on search terms\n Filtering is done against the comma-delimited value of a select2 dropdown\n */\n var initRotationFilter = function () {\n config.selectors.clearRotationFilter\n .on('click', () => {\n config.selectors.rotationFilter.val('').keyup()\n })\n .hide()\n\n config.selectors.rotationFilter.on('keyup', _.debounce(filterRotationList, 200))\n\n function filterRotationList() {\n var matches,\n filterWords = $(this).val().trim().toLowerCase()\n\n if (!filterWords) {\n config.selectors.clearRotationFilter.hide()\n matches = store.rotations\n } else {\n config.selectors.clearRotationFilter.show()\n matches = _.filter(store.rotations, (rotation) => {\n return rotation.name.toLowerCase().indexOf(filterWords) !== -1\n })\n }\n\n events.trigger('rotation:list_updated', [matches, filterRotationList])\n }\n }\n\n var getCurrentRowPosition = function () {\n var tableWrapper = $('#department-schedule-box .box-wrapper')\n var rowPosition = tableWrapper.scrollTop()\n return rowPosition\n }\n\n // Set up date navigation for quick jump to a new week, with push state\n // This is the central function that modifies all dates in the lib.\n var initDateNavigation = function () {\n $('#today, #previous-week, #next-week').on('click', function (e) {\n e.preventDefault()\n\n // If date navigation has been disabled do nothing\n if ($(this).hasClass('disabled')) {\n return false\n }\n\n // Save current scroll position so that we set that on the new table when its ajax loaded\n var tableWrapper = $('#department-schedule-box .box-wrapper')\n var rowPosition = tableWrapper.scrollTop()\n\n var $url = $(this).attr('href')\n var newPreviousWeekStart\n\n if ($(this).attr('id') == 'today') {\n newPreviousWeekStart = moment().startOf('week').subtract(1, 'weeks').format(config.dateFmt)\n } else {\n newPreviousWeekStart = moment($url.split('=')[1], config.dateFmt).subtract(1, 'weeks').format(config.dateFmt)\n }\n\n // Update previous/next navigation with new start date\n $('#previous-week').attr('href', config.routes.departmentSchedulePath() + '?start=' + newPreviousWeekStart)\n $('#next-week').attr(\n 'href',\n config.routes.departmentSchedulePath() + '?start=' + moment(newPreviousWeekStart, config.dateFmt).add(14, 'days').format(config.dateFmt)\n )\n copyPaste.repeatSourceWeekStartDate = newPreviousWeekStart\n\n // Update current date actions\n var currentDate = moment(newPreviousWeekStart, config.dateFmt).add(1, 'weeks').format(config.dateFmt)\n\n setBeginningOfWeek(currentDate)\n\n $('#employees-view').attr('href', config.routes.employeesDepartmentSchedulePath + '?start=' + currentDate)\n $('#positions-view').attr('href', config.routes.positionsDepartmentSchedulePath + '?start=' + currentDate)\n $('#job-sites-view').attr('href', config.routes.jobSitesDepartmentSchedulePath + '?start=' + currentDate)\n $('#printable-schedule').attr('href', config.routes.printableDepartmentSchedulePath + '?start=' + currentDate)\n $('#toolbar-datepicker').attr('data-date', currentDate).datepicker('update', currentDate)\n $('#export-schedule-datepicker').attr('data-date', currentDate).datepicker('update', currentDate)\n copyPaste.targetWeekStartDate = currentDate\n toggleCopyFunctionality()\n\n //init export filter\n if (!config.selectors.scheduleProviderFilter.select2('data')) {\n config.selectors.scheduleProviderFilter.select2('data', null)\n config.selectors.exportForProviderButton.attr('href', '#')\n config.selectors.exportForProviderButton.addClass('disabled')\n initExportScheduleFields()\n } else {\n var startDate = $('#export-schedule-datepicker').datepicker('getDate')\n var archived = $('#schedule-include-archived').is(':checked')\n var providerName = config.selectors.scheduleProviderFilter.select2('data').name\n config.selectors.exportForProviderButton.attr('href', config.routes.exportSchedulePath(providerName, startDate, archived))\n }\n\n // add page to history and load schedulele\n History.pushState({ rowPosition: rowPosition }, config.pageTitle, $url)\n })\n }\n\n // Set up date pickers to quickly select a week in the past or future using the initDateNavigation functions.\n // Delegates actual date setting to $(#previous-week)\n var initDatepicker = function (datepickerId) {\n var $datepicker = $(datepickerId)\n\n $datepicker\n .datepicker({\n format: 'yyyy-mm-dd',\n weekStart: config.startOfWeek,\n startDate: $(this).attr('data-date'),\n orientation: 'right auto',\n autoclose: true,\n language: I18n.locale\n })\n .on('changeDate', (e) => {\n var newPreviousWeekStart = moment(e.date).startOf('week')\n $('#previous-week')\n .attr('href', config.routes.departmentSchedulePath() + '?start=' + newPreviousWeekStart.format(config.dateFmt))\n .trigger('click')\n })\n .on('changeMonth', (e) => {\n setTimeout(() => {\n setActiveWeekSelection()\n }, 100)\n })\n\n // Highlight current week within the calendar popover.\n $datepicker.on('click', () => {\n // Hack fix for disabling the datepicker. Just immediately hide it.\n if ($datepicker.hasClass('disabled')) {\n $datepicker.data('datepicker').hide()\n } else {\n setActiveWeekSelection()\n }\n })\n\n // Highlight week while mousing over\n mouseOverHighlightWeek()\n }\n\n // Set up event handlers for dragging\n var initDraggables = function () {\n $('.draggable-shift-type, .draggable-unavailable, .draggable-custom-shift, .draggable-rotation').draggable({\n revert: 'invalid', // when dropped on invalid target, the item will revert back to its initial position\n containment: 'document',\n helper: function () {\n var helper = $(this).clone()\n helper.css('height', '35px')\n helper.css('width', '100px')\n return helper\n },\n cursor: 'move',\n opacity: 0.8\n })\n }\n\n /**\n * Initializes the export schedule modal fields\n */\n var initExportScheduleFields = function () {\n // Provider Select2\n config.selectors.scheduleProviderFilter\n .select2({\n data: buildSelectionsForscheduleProviders(config.scheduleProviders),\n allowClear: true,\n placeholder: I18n.t('department_schedules.show.schedule.placeholder')\n })\n .on('change', (e) => {\n if (e.val.length) {\n var startDate = $('#export-schedule-datepicker').attr('data-date')\n var archived = $('#schedule-include-archived').is(':checked')\n if (e.added.name == 'raw_excel' || e.added.name == 'raw_excel_month') {\n config.selectors.scheduleCheckbox.show()\n } else {\n config.selectors.scheduleCheckbox.hide()\n }\n\n config.selectors.exportForProviderButton.removeClass('disabled')\n config.selectors.exportForProviderButton.attr('href', config.routes.exportSchedulePath(e.added.name, startDate, archived))\n } else {\n config.selectors.scheduleCheckbox.hide()\n config.selectors.exportForProviderButton.attr('href', '#')\n config.selectors.exportForProviderButton.addClass('disabled')\n }\n })\n\n // Include Archived Users Checkbox\n config.selectors.scheduleCheckbox.hide().on('change', (e) => {\n var providerName = config.selectors.scheduleProviderFilter.select2('data') ? config.selectors.scheduleProviderFilter.select2('data').name : ''\n var startDate = $('#export-schedule-datepicker').attr('data-date')\n if (providerName) {\n config.selectors.exportForProviderButton.attr('href', config.routes.exportSchedulePath(providerName, startDate, e.target.checked))\n } else {\n config.selectors.exportForProviderButton.attr('href', '#')\n }\n })\n }\n\n /**\n * Builds selection values for the schedule file Filter\n * @param {Array} scheduleProviders schedule file names\n * @return {Array} Array with provider names and their index as an id\n */\n var buildSelectionsForscheduleProviders = function (scheduleProviders) {\n return _.map(scheduleProviders, (provider) => {\n return { id: scheduleProviders.indexOf(provider) + 1, text: I18n.t('department_schedules.show.schedule' + '.' + provider), name: provider }\n })\n }\n\n /**\n * Initializes the Export button to show Export Modal and schedule file Selection\n */\n var initExportButton = function () {\n config.selectors.exportButton.on('click', (e) => {\n e.preventDefault()\n config.selectors.modal.modal('show')\n $('.alert').remove()\n })\n }\n\n var getFilters = function (type, $el) {\n var raw_vals = $el.val()\n var valid_items = []\n var req_ids = []\n\n valid_items = _.filter(raw_vals, (val) => {\n return val.includes(type + ':')\n })\n\n req_ids = _.map(valid_items, (item) => {\n return item.split(':')[1]\n })\n\n return req_ids\n }\n\n var userHas = function (userRow, property, rawFilter) {\n // Make sure we got an array\n var filterData = _.flatten([rawFilter])\n\n // No filter applied, return early\n if (filterData.length == 0) {\n return true\n }\n\n // Data attr ex) data-skill=[\"1\",\"2\",\"3\"]\n var userData = _.flatten([$(userRow).data(property)])\n\n var meetsRequirement = false\n\n if (property === 'user-id') {\n // userData contains ANY of the filterData\n meetsRequirement = _.some(filterData, (f) => {\n return userData.includes(parseInt(f))\n })\n } else {\n // userData contains ALL of the filterData\n meetsRequirement = _.all(filterData, (f) => {\n return userData.includes(parseInt(f))\n })\n }\n\n return meetsRequirement\n }\n\n // Set up employment type, position, and name filtering on user rows\n var initFilter = function () {\n var handleFiltering = function () {\n var $rows = $('tr.user-row')\n var $el = $(this)\n var $keywords = $(this).val()\n\n if ($keywords !== null && $keywords.length > 0) {\n $rows\n .addClass('hidden')\n .filter((idx, userRow) => {\n var validForFilters =\n userHas(userRow, 'emptype', getFilters('emptype', $el)) &&\n userHas(userRow, 'user-id', getFilters('employee', $el)) &&\n userHas(userRow, 'jobsite', getFilters('jobsite', $el)) &&\n userHas(userRow, 'position', getFilters('position', $el)) &&\n userHas(userRow, 'skill', getFilters('skill', $el))\n return validForFilters\n })\n .removeClass('hidden')\n } else {\n $rows.removeClass('hidden')\n }\n }\n\n $('#user-filter-wrapper').load('/departments/' + config.departmentId + '/schedule/user_filter', () => {\n $('#user-filter').select2()\n })\n\n $(document.body).on('change', '#user-filter', handleFiltering)\n }\n\n //TODO: this can probably be refactored to generalize the initFilter function and just pass in `user` or `job_site` as an argument\n var initJobSiteFilter = function () {\n $('#job-site-filter').on('change', function () {\n var $rows = $('tr.job-site-row')\n var $keywords = $(this).val()\n if ($keywords !== null && $keywords.length > 0) {\n $rows\n .addClass('hidden')\n .filter(function () {\n // Enforce string in case name is an integer\n var rowKeywords = $(this).data('keywords').toString()\n\n return $keywords.includes(rowKeywords)\n })\n .removeClass('hidden')\n } else {\n $rows.removeClass('hidden')\n }\n })\n\n jobSiteSort.init()\n }\n\n // Set up modal window click handler for managing events\n var initModals = function () {\n // Current Shifts launch ShiftsController#edit modal\n // Past Department Shifts & Other Department Shifts launch ShiftsController#show modal\n $('body').on('click', 'div.shift, div.other-department-shift', function (e) {\n e.preventDefault()\n\n var $self = $(this)\n var id = $self.data('shift-id')\n var url = $(this).hasClass('shift') && !$(this).closest('td').hasClass('nodrop') ? config.routes.editShiftPath(id) : config.routes.shiftPath(id)\n\n // Create a callback for opening the shift modal\n var cb = function () {\n $.get(url).then(\n (html) => {\n $('#shift-modal').html(html).modal('show')\n },\n (xhr, status, error) => {\n if (xhr.status == 403) {\n alert(I18n.t('department_schedules.js.shift_permission'))\n } else {\n destroyEvent('shift', id)\n alert(I18n.t('department_schedules.js.shift_removed'))\n }\n }\n )\n }\n\n // Find the position qtip, its form, and the form values\n var $qtip = $('div.qtip.position-select')\n var $qtipForm = $qtip.find('form')\n var formValues = $qtipForm\n .serializeArray()\n .filter((obj) => ['shift[position_id]', 'shift[job_site_id]'].includes(obj.name))\n .filter((obj) => obj.value)\n\n // If there are any values, bind the callback and submit the form\n // Otherwise remove the qtip and run the callback\n if (formValues.length > 0) {\n $('.edit_shift').on('ajax:success', cb)\n $qtipForm.submit()\n } else {\n $qtip.remove()\n cb()\n }\n })\n\n // Available Shifts launch AvailableShiftsController#show modal\n $('body').on('click', 'div.available-shift', function (e) {\n e.preventDefault()\n\n var $self = $(this)\n var id = $self.data('available-shift-id')\n var url = config.routes.availableShiftPath(id)\n\n $.get(url).then(\n (html) => {\n $('#shift-modal').html(html).modal('show')\n },\n (xhr, status, error) => {\n if (xhr.status == 403) {\n alert(I18n.t('department_schedules.js.available_shift_permission'))\n } else {\n destroyEvent('available-shift', id)\n alert(I18n.t('department_schedules.js.available_shift_removed'))\n }\n }\n )\n })\n\n // We add the :not so that we don't add the click event handler onto the Time Off draggable item itself\n // It would cause an error if you tried to open a modal to edit the unavailable, because it's just a template\n $('body').on('click', 'div.unavailable:not(.ui-draggable)', function (e) {\n e.preventDefault()\n\n var $self = $(this)\n var id = $self.data('unavailable-id')\n\n // Current Unavailables launch UnavailablesController#edit modal\n // Past Unavailables launch UnavailablesController#show modal\n var url = !$self.closest('td').hasClass('nodrop') ? config.routes.editUnavailablePath(id) : config.routes.unavailablePath(id)\n\n $.get(url).then(\n (html) => {\n $('#shift-modal').html(html).modal('show')\n },\n (xhr, status, error) => {\n if (xhr.status == 403) {\n alert(I18n.t('department_schedules.js.time_off_permission'))\n } else {\n destroyEvent('unavailable', id)\n alert(I18n.t('department_schedules.js.time_off_removed'))\n }\n }\n )\n })\n\n // Current UnavailableRequests launch UnavailableRequestsController#edit modal\n $('body').on('click', 'div.unavailable-request', function (e) {\n e.preventDefault()\n\n var $self = $(this)\n var id = $self.data('unavailable-request-id')\n var url = config.routes.editUnavailableRequestPath(id)\n\n $.get(url).then(\n (html) => {\n $('#shift-modal').html(html).modal('show')\n },\n (xhr, status, error) => {\n if (xhr.status == 403) {\n alert(I18n.t('department_schedules.js.time_off_request_permission'))\n } else {\n destroyEvent('unavailable-request', id)\n alert(I18n.t('department_schedules.js.time_off_request_removed'))\n }\n }\n )\n })\n\n // Non-persisted ShiftRequirements launch ShiftRequirementsController#new\n // Persisted ShiftRequirements launch ShiftRequirementsController#edit modal\n $('body').on('click', 'div.shift-requirement', function (e) {\n e.preventDefault()\n\n var $self = $(this)\n var id = $self.data('shift-requirement-id')\n var url\n var params = {}\n\n if (id) {\n url = config.routes.shiftRequirementPath(id)\n } else {\n url = config.routes.newDepartmentShiftRequirementPath\n $.extend(params, {\n shift_requirement: {\n source_shift_id: $self.attr('data-source-shift-id'),\n required_employees: $self.attr('data-shifts-count') || 1\n }\n })\n }\n\n var modal = $('#shift-modal')\n openModalWithSpinner(modal)\n\n $.get(url, params).then(\n (html) => {\n modal.html(html)\n modal.find('form').attr('data-initial-required-employees', modal.find('input#shift_requirement_required_employees').val())\n },\n (xhr, status, error) => {\n displayModalLoadError(modal)\n // allow some time to see the error message before carrying on with\n // what with the clean-up\n setTimeout(() => {\n destroyEvent('shift-requirement', id)\n }, 3000)\n }\n )\n })\n\n // New User modal\n $('body').on('click', '#add-employee-link', (e) => {\n e.preventDefault()\n\n if (config.adpUser) {\n window.location = config.routes.departmentUserPath\n return\n }\n\n $.get(config.routes.newUserPath).then((html) => {\n $('#shift-modal').html(html).modal('show')\n })\n })\n }\n\n // Budgets must react dynamically to addition/removal of shifts\n // weeklyBudget:calculate was being triggered in various places (and span budgets should tie into the same events)\n var updateBudgets = function () {\n weeklyBudget.budgetEvents.trigger('weeklyBudget:calculate')\n }\n\n // Callback hooks for create/update modal forms and qtip forms\n var initModalForms = function () {\n var newAndEditShiftHandles =\n '.new_shift_requirement, .new_shift, .new_available_shift, .edit_shift, .edit_weekly_budget, .new_unavailable, .edit_unavailable_request'\n $('body')\n .on('ajax:before', newAndEditShiftHandles, () => {\n reverse_shifts_time($('#shift_start_time'), $('#shift_end_time'), 12)\n })\n .on('ajax:send', newAndEditShiftHandles, () => {\n if (user_prefers_12hr()) {\n reverse_shifts_time($('#shift_start_time'), $('#shift_end_time'), 24)\n }\n })\n .on('ajax:success', '.new_shift_requirement', (e, data) => {\n createShiftRequirement(data.shift_requirement)\n })\n .on('ajax:success', '#new_available_shift', (e, data) => {\n afterAvailableShift(data.available_shift, true)\n })\n .on('ajax:success', '.edit_available_shift', (e, data) => {\n afterAvailableShift(data.available_shift, false)\n })\n .on('ajax:success', '.new_shift', (e, data) => {\n var shiftType\n\n createCustomShift(data.shift)\n\n if (typeof data.shift_type != 'undefined') {\n shiftType = new ShiftType(data.shift_type)\n events.trigger('shiftType:created', [shiftType])\n }\n })\n .on('ajax:success', '.edit_shift', (e, data) => {\n updateShift(data.shift)\n updateHours($('tr[data-user-id=' + data.shift.user_id + ']'))\n updateBudgets()\n })\n .on('ajax:success', '.edit_unavailable', (e, data) => {\n updateUnavailable(data.unavailable)\n })\n .on('ajax:success', '.new_user', (e, data) => {\n location.reload()\n })\n .on('ajax:success', '.edit_unavailable_request', (e, data) => {\n $.each(data, (idx, unavailable) => {\n approveUnavailableRequest(unavailable.id, unavailable.unavailable_type_name)\n })\n })\n .on('ajax:error', newAndEditShiftHandles, (e, xhr, status, error) => {\n if (xhr.responseJSON.error_type != 'FatigueConflictError') {\n renderModalAlert(xhr.responseJSON)\n }\n })\n .on('ajax:error', '.new_shift, .edit_shift, .new_available_shift', (e, xhr, status, error) => {\n // if we get a fatigue rule error back we throw up a warning prompt\n // if the user choose to continue we remove the \"check\" flag and\n // resubmit the form.\n if (xhr.responseJSON.error_type == 'FatigueConflictError') {\n fatigueManagement.fatiguePrompt(\n xhr.responseJSON.error_message,\n () => {\n $(e.target).find('[id*=fatigue]').remove()\n $(e.target).submit()\n },\n () => {\n // do nothing will cancel prompt\n }\n )\n }\n })\n .on('ajax:error', '.new_user', function (e, xhr, status, error) {\n var responseJSON = xhr.responseJSON\n remoteFormErrors.errorFields($(this), responseJSON.klass, responseJSON.errors)\n })\n .on('ajax:success', '.new_unavailable', (e, data, status, xhr) => {\n $.each(data, (idx, unavailable) => {\n var $th = $('.floatThead-table').find('th[data-date=' + unavailable.date + ']')\n\n // May have created objects outside this weekly schedule view (in the case of Unavailables)\n if (!$th.length) return\n\n var $td = $('tr.user-row[data-user-id=' + unavailable.user_id + ']')\n .find('td')\n .eq($th.index())\n\n var $div = createGlobalShift(false, unavailable.formattedTitle)\n createUnavailableElement($div, unavailable.id)\n $td.prepend($div)\n })\n\n // Follow the existing pattern of using shift-modal for all kinds of things, even unavailables\n $('#shift-modal').modal('hide')\n })\n }\n\n // Initializes JSON behaviors performed within modals\n var initModalActions = function () {\n $('#shift-modal').on('click', 'a[data-modal-action], button[data-modal-action], button[data-dismiss]', function (e) {\n e.preventDefault()\n var $self = $(this)\n\n if ($self.data('disabled')) {\n return\n }\n\n // Closing a modal (custom shift, available shift, shift requirement)\n if ($self.data('dismiss') === 'modal') {\n // Exceptions: we don't need to recalculate for:\n // - cancelling creating a new shift requirement\n // - cancelling creating a custom shift\n // - cancelling creating a new user\n // - cancelling the View Details window (for either new or existing budget)\n if ($self.parents('#new_shift_requirement').length) {\n return\n }\n if ($self.parents('#new_shift').length) {\n return\n }\n if ($self.parents('#new_user').length) {\n return\n }\n if ($self.parents('.new_weekly_budget, .edit_weekly_budget').length) {\n return\n }\n\n updateBudgets()\n return\n }\n\n switch ($self.data('modal-action')) {\n // Destroy event\n case 'destroy':\n $.ajax({\n url: $self.attr('href'),\n type: 'DELETE',\n dataType: 'json',\n data: {\n audit_action: 'delete_shift',\n audit_action_source: 'department_calendar',\n unavailable_request_admin_note: $('#unavailable_request_admin_note').val()\n }\n }).then((data) => {\n destroyEvent($self.data('event-type'), $self.data('id'), $self.data('published'))\n })\n break\n\n // Assign AvailableShift either via request ('offer') or eligibility ('available'/'availability')\n case 'assign':\n var url = $self.data('href') + '&check_fatigue=true'\n var assignShift = function (url) {\n $.ajax({\n url: url,\n type: 'PUT',\n dataType: 'json'\n }).then(\n (data) => {\n // We may optionally receive a message back (even on success),\n // so we'll display that message if it exists\n clearModalAlerts()\n if (data.error_message) {\n renderModalAlert(data)\n }\n\n // Update counts for assigned shifts and eligible users\n adjustCounter('assigned-shifts-count', +1)\n if ($self.data('source') == 'offer') {\n adjustCounter('request-users-count', -1)\n } else {\n adjustCounter('eligible-users-count', -1)\n }\n\n // Could be sent either from requested users or eligible users, so refresh both\n $('#reply-users-table').DataTable().ajax.reload(null, false)\n $('#eligible-users-table').DataTable().ajax.reload(null, false)\n\n assignAvailableShift(data.shift)\n },\n (xhr, status, error) => {\n $self.prop('disabled', true)\n renderModalAlert(xhr.responseJSON)\n\n // if we get a fatigue rule error back we throw up a warning prompt\n // if the user choose to continue we remove the \"check\" flag and\n // resubmit the form.\n if (xhr.responseJSON.error_type == 'FatigueConflictError') {\n // we don't need to standard alert box error\n clearModalAlerts()\n fatigueManagement.fatiguePrompt(\n xhr.responseJSON.error_message,\n () => {\n assignShift($self.data('href'))\n },\n () => {\n // re-enable the \"Assign\" button\n $self.prop('disabled', false)\n }\n )\n }\n }\n )\n }\n\n assignShift(url)\n\n break\n\n // Unassign Available Shift\n case 'unassign':\n $.ajax({ url: $self.data('href'), type: 'DELETE', dataType: 'json' }).then(\n (data) => {\n // We may optionally receive a message back (even on success),\n // so we'll display that message if it exists\n clearModalAlerts()\n if (data.error_message) {\n renderModalAlert(data)\n }\n\n $('#assigned-users-table').DataTable().ajax.reload(null, false)\n\n // Update counts for assigned shifts and eligible users\n adjustCounter('assigned-shifts-count', -1)\n adjustCounter('eligible-users-count', +1)\n\n // Remove the shift from the schedule\n $('[data-shift-id=' + $self.data('id') + ']').remove()\n },\n (xhr, status, error) => {\n $self.prop('disabled', true)\n renderModalAlert(xhr.responseJSON)\n }\n )\n break\n\n // Approve UnavailableRequest\n case 'approve-unavailable-request':\n $.ajax({ url: $self.attr('href'), type: 'PUT', dataType: 'json' }).then(\n (data) => {\n approveUnavailableRequest($self.data('id'))\n },\n (xhr, status, error) => {\n if (xhr.status == 404) {\n destroyEvent('unavailable-request', $self.data('id'))\n alert(I18n.t('department_schedules.js.time_off_request_removed'))\n } else {\n renderModalAlert(xhr.responseJSON)\n }\n }\n )\n break\n }\n })\n }\n\n /**\n * Initializes the Publish & Notify Buttons\n * XHR request to DepartmentSchedules#update\n * @note Disables buttons while the event is happening, highlights all changes and displays a HUD when successful.\n */\n var initPublish = function () {\n if (config.isReadOnlySchedule) {\n return\n }\n var publishedAt = $('#last-published-at').html()\n\n publishedAt = user_prefers_12hr()\n ? publishedAt.replace(\n publishedAt.substring(publishedAt.lastIndexOf(' ')),\n ' ' + tConvert(publishedAt.substring(publishedAt.lastIndexOf(' ')).trim())\n )\n : publishedAt\n $('#last-published-at').html(publishedAt)\n\n $('.publish-and-notify .dropdown-menu').click((e) => {\n e.stopPropagation()\n })\n\n $('.input-daterange')\n .datepicker({\n format: 'yyyy-mm-dd',\n autoclose: true,\n language: I18n.locale\n })\n .on('show', (e) => {\n $('.datepicker').click(() => {\n return false\n })\n })\n\n $('#publish-all-shifts, #publish-range-shifts, #publish-current-week-shifts').on('click', function (e) {\n e.preventDefault()\n\n lastPublishButtonClicked = $(this)\n lastPublishButtonText = $(this).text()\n\n var url = $(this).attr('data-href')\n\n // temporarily disable button and change button name to 'submitting'\n $(this).prop('disabled', true).html(I18n.t('department_schedules.show.buttons.publish.pending'))\n\n if ($(this).attr('id') == 'publish-range-shifts') {\n var startDate = $('#publishStartDate').val()\n var endDate = $('#publishEndDate').val()\n url += '/?startDate=' + startDate + '&endDate=' + endDate\n }\n\n $.ajax({\n url: url,\n method: 'PUT'\n })\n .done((data) => {\n // WebSocket will trigger UI update\n return true\n })\n .fail((xhr, status, error) => {\n bootbox.alert(error)\n // $self.html(buttonText);\n })\n })\n }\n\n // Handles ajax reloading of page contents from date navigation and back button\n var initPopState = function () {\n History.Adapter.bind(window, 'statechange', () => {\n var state = History.getState()\n\n // When navigating, disable any date navigation\n // until schedule loading is complete\n canDateNavigate(false)\n\n loadSchedule(state.url, state.data.rowPosition || 0)\n })\n }\n\n // Set up table size & table header to float when the table is scrolled\n var initFloatThead = function () {\n var $table = $('.department-schedule-table')\n $table.floatThead({\n scrollContainer: function ($table) {\n return $table.closest('.box-wrapper')\n },\n getSizingRow: function ($table) {\n // this is only called when using IE\n // this finds the dummy row needed for IE 10/11 compadibility\n return $table.find('tbody tr:not(.add-employees-row):visible:first>*')\n }\n })\n }\n\n /**\n * Setup for the click handling on copy/paste and repeat week. Also determines if the functionality should be\n * disabled or enabled based on the current week.\n */\n var initCopyPaste = function () {\n // set initial repeat and target weeks based on current date\n copyPaste.repeatSourceWeekStartDate = moment($('#toolbar-datepicker').attr('data-date'), config.dateFmt)\n .subtract(1, 'weeks')\n .format(config.dateFmt)\n copyPaste.targetWeekStartDate = $('#toolbar-datepicker').attr('data-date')\n\n toggleCopyFunctionality()\n\n /** Binds the click action for the copy button and the action for when a week is copied */\n $('#department-schedule-copy-week').on('click', (e) => {\n e.preventDefault()\n /** sets the url for paste based on the current week and copies the label to be used in the modal */\n copyPaste.copiedSourceWeekStartDate = $('#toolbar-datepicker').attr('data-date')\n $('#paste-week-label')\n .removeClass('hidden')\n .html(I18n.t('department_schedules.show.copy_week.from_date', { date: $('#schedule-date-range').text() }))\n // disable paste immediately, since you can't paste onto same week\n $('#department-schedule-paste-week').addClass('disabled')\n })\n\n /** Binds the click action for the paste and repeat buttons */\n $('#department-schedule-paste-week, #department-schedule-repeat-week').on('click', function (e) {\n e.preventDefault()\n var $self = $(this)\n\n if (!$self.hasClass('disabled')) {\n var params = {\n source_week_start_date:\n $self.attr('id') == 'department-schedule-paste-week' ? copyPaste.copiedSourceWeekStartDate : copyPaste.repeatSourceWeekStartDate,\n target_week_start_date: copyPaste.targetWeekStartDate,\n record_type: config.view == 'employees' ? 'shifts' : 'shift_requirements'\n }\n\n /** Show the new copy/paste modal with the warning message. This also contains a form that is submitted. */\n $.get(config.routes.newDepartmentCopyPastePath, params).then((html) => {\n $('#shift-modal').html(html).modal('show')\n /**\n * On submission of modal form, start the spinner, disable click events to all aspects of the view until its complete, hide the modal, and execute copy/paste.\n */\n $('#paste-schedule').click(function (e) {\n e.preventDefault()\n toggleBlockDisplay(\n true,\n '#department-schedule-box',\n I18n.t('department_schedules.show.copy_week.progress_message'),\n '#shift-types-box, #drag-and-drop-box'\n )\n var $form = $(this)\n $('.modal').modal('hide')\n\n $.ajax({\n url: config.routes.createDepartmentCopyPastePath,\n type: 'POST',\n data: params,\n dataType: 'json'\n }).fail((xhr, status, error) => {\n alert(xhr.responseJSON.error_message)\n var spinner = msUtil.spinner('department-schedule-box')\n spinner.stop()\n loadSchedule()\n })\n })\n })\n }\n })\n }\n\n var initOnboardingPopups = function () {\n var nextItem = config.data.onboarding.progress.nextItem()\n if (nextItem) {\n onboardingPopovers.init({ progress: config.data.onboarding.progress, checklistItem: nextItem })\n if (nextItem === 1) {\n config.selectors.scheduleWrapper.scrollTop(config.selectors.scheduleWrapper[0].scrollHeight)\n } // needed for demo mode so that schedules with users can still see the popover modal\n }\n }\n\n var getDepartmentEmployeeCount = function () {\n return $('#employee_count').val()\n }\n\n var getAJAXCallSplit = function () {\n var employeeCount = getDepartmentEmployeeCount()\n\n if (employeeCount && employeeCount > 0) {\n return Math.ceil(employeeCount / 150)\n } else {\n return 1\n }\n }\n\n var buildURLWithRequestParams = function (url, currentRequest, totalRequests) {\n if (_.contains(url, '?')) {\n return url + '¤t_request=' + (currentRequest + 1) + '&total_requests=' + totalRequests\n } else {\n return url + '?current_request=' + (currentRequest + 1) + '&total_requests=' + totalRequests\n }\n }\n\n var loadDepartmentShifts = function (url) {\n var callSplit = getAJAXCallSplit()\n var loaderFunctions = []\n\n for (let i = 0; i < callSplit; i++) {\n loaderFunctions.push(\n $.ajax({\n url: buildURLWithRequestParams(url, i, callSplit),\n data: { format: 'json' },\n dataType: 'json',\n cache: false\n }).then((response) => {\n weekData.header = response.header\n weekData.current_date = response.current_date\n\n if (response.shifts) {\n weekData.shifts = concatShifts(weekData.shifts, response.shifts)\n }\n\n if (response.unavailables) {\n weekData.unavailables = concatShifts(weekData.unavailables, response.unavailables)\n }\n\n // will only exist with \"positions\" and \"job sites\" scheduler\n if (response.shift_requirements) {\n weekData.shift_requirements = concatShifts(weekData.shift_requirements, response.shift_requirements)\n }\n })\n )\n }\n\n return loaderFunctions\n }\n\n var loadOtherDepartmentShifts = function (url) {\n url = url.replace('employees', 'other_department_shifts')\n var callSplit = getAJAXCallSplit()\n var loaderFunctions = []\n\n for (let i = 0; i < callSplit; i++) {\n loaderFunctions.push(\n $.ajax({\n url: buildURLWithRequestParams(url, i, callSplit),\n data: { format: 'json' },\n dataType: 'json',\n cache: false\n }).then((response) => {\n weekData.other_department_shifts = concatShifts(weekData.other_department_shifts, response.shifts)\n })\n )\n }\n\n return loaderFunctions\n }\n\n var loadAvailabilities = function (url) {\n url = url.replace('employees', 'availabilities')\n\n var callSplit = getAJAXCallSplit()\n var loaderFunctions = []\n\n for (let i = 0; i < callSplit; i++) {\n loaderFunctions.push(\n $.ajax({\n url: buildURLWithRequestParams(url, i, callSplit),\n data: { format: 'json' },\n dataType: 'json',\n cache: false\n }).then((response) => {\n weekData.availabilities = concatShifts(weekData.availabilities, response.availabilities)\n })\n )\n }\n\n return loaderFunctions\n }\n\n var loadAvailableShifts = function (url) {\n url = url.replace('employees', 'available_shifts')\n\n return $.ajax({\n url: url,\n data: {\n format: 'json'\n },\n dataType: 'json',\n cache: false\n }).then((response) => {\n weekData.available_shifts = concatShifts(weekData.available_shifts, response.shifts)\n })\n }\n\n // Returns number of error_shift_attempts\n var loadErrorShiftExportAttemptsCount = function () {\n var error_shift_attempts = 0\n\n var url = config.routes.shiftExportAttemptsPath($('#publishStartDate').val())\n var callSplit = getAJAXCallSplit()\n var loaderFunctions = []\n\n for (let i = 0; i < callSplit; i++) {\n loaderFunctions.push(\n $.ajax({\n url: buildURLWithRequestParams(url, i, callSplit),\n data: { format: 'json' },\n dataType: 'json',\n cache: false\n }).then((response) => {\n var num_errors = response.aaData.length\n // if there are any errors, put up a warning\n if (num_errors > 0) {\n shiftSyncAuditButtonWarn()\n } else {\n shiftSyncAuditButtonClear()\n }\n })\n )\n }\n return loaderFunctions\n }\n\n var handleShiftExportAttemptErrors = function (response) {\n var num_errors = response.aaData.length\n // if there are any errors, put up a warning\n if (num_errors > 0) {\n shiftSyncAuditButtonWarn()\n } else {\n shiftSyncAuditButtonClear()\n }\n }\n\n // Retrieves data for new week and generates visible elements\n var loadSchedule = function (url, rowPosition, callback) {\n // Reset the week data store to make sure nothing is left behind\n initWeekData()\n\n // Default parameters\n url = url || location.href\n rowPosition = rowPosition || 0\n\n var spinner = msUtil.spinner('department-schedule-box')\n\n // Get all calendar data for the new week\n // @important The data payload must be passed in order to bypass chrome bug that caches and displays json data on back button\n // @note We add cache false to avoid jQuery caching the schedule data even after we've added content from dragging and dropping shifts. This makes sure that the calendar is fully up-to-date from the backend.\n\n // The \"employees\" view is now broken down into several AJAX calls.\n // The position/job site views are not.\n var loaderFunctions = []\n\n if (config.view == 'employees') {\n loaderFunctions = [loadAvailableShifts(url)]\n\n loaderFunctions = loaderFunctions.concat(loadDepartmentShifts(url))\n loaderFunctions = loaderFunctions.concat(loadOtherDepartmentShifts(url))\n loaderFunctions = loaderFunctions.concat(loadAvailabilities(url))\n } else {\n loaderFunctions = loaderFunctions.concat(loadDepartmentShifts(url))\n }\n\n return $.when.apply($, loaderFunctions).done(() => {\n // Remove prior week divs and reset rendered flags\n resetTable()\n\n // Updates the table title, day headers, and disabled cells based on new week dates\n updateTableDates(config.beginningOfWeek, weekData.header, weekData.current_date)\n\n if (config.view == 'employees') {\n // Load available shifts for new week\n renderAvailableShifts()\n\n // Render the employee schedule\n renderEmployeeSchedule()\n } else {\n // Just render Position data when positions view\n renderPositionOrJobSiteSchedule()\n }\n\n if (config.view == 'job_sites') {\n sumRowRequiredEmployees(weekData.shift_requirements)\n }\n\n // Toggle publish button based on presence of unpublished Shifts button\n togglePublishButton(weekData.unpublished_shifts_exist)\n\n var $end_of_week = moment(config.beginningOfWeek).add(6, 'days').format(config.dateFmt)\n\n // Update publish this week button start and end date in href\n $('#publish-current-week-shifts').attr(\n 'data-href',\n config.routes.departmentScheduleUpdatePath + '?startDate=' + config.beginningOfWeek + '&endDate=' + $end_of_week\n )\n if (config.isReadOnlySchedule) {\n $('#publishStartDate').val(config.beginningOfWeek)\n $('#publishEndDate').val($end_of_week)\n } else {\n $('#publishStartDate').datepicker('setDate', config.beginningOfWeek)\n $('#publishEndDate').datepicker('setDate', $end_of_week)\n }\n\n // Revert scroll position to the previously set position\n $('.box-wrapper').scrollTop(rowPosition)\n\n $(document).trigger('redrawSVG')\n\n // Kill spinner\n $('.spinner').fadeOut(300, () => {\n spinner.stop()\n $(document).trigger('redrawSVG')\n })\n\n // Trigger the event to reload the budget bar with the current beginning of week\n weeklyBudget.budgetEvents.trigger('weeklyBudget:initialized', [config.beginningOfWeek])\n\n $('.department-schedule-table').floatThead('reflow')\n // Disable the blockUI that disabled clicking on anything element of the department schedule.\n toggleBlockDisplay(false, '#department-schedule-box', null, '#shift-types-box, #drag-and-drop-box')\n\n if (config.scheduleIntegrated) {\n loadErrorShiftExportAttemptsCount()\n updateShiftSyncAuditDates()\n flashShiftExportError()\n }\n\n // Re-enable date navigation on the schedule once it's loaded\n canDateNavigate(true)\n })\n }\n\n var concatShifts = function (existingShifts, newShifts) {\n var startDate = Date.parse(config.beginningOfWeek)\n var endDate = addDays(startDate, 6)\n\n var filteredShifts = newShifts.filter((shift) => {\n return isShiftInDateRange(Date.parse(shift.date), startDate, endDate)\n })\n\n return existingShifts.concat(filteredShifts)\n }\n\n var isShiftInDateRange = function (shiftDate, startDate, endDate) {\n return shiftDate >= startDate && shiftDate <= endDate\n }\n\n var addDays = function (startDate, numberOfDays) {\n return moment(startDate).add(numberOfDays, 'days')\n }\n\n var setBeginningOfWeek = function (date) {\n config.beginningOfWeek = date\n }\n\n // Resets everything that needs to be cleared when schedule data is reloaded\n var resetTable = function () {\n var $table = $('.department-schedule-table')\n // Unset rendered flag\n // @note Not required for available shifts row since its rendered on every load\n $table.find('tr.user-row, tr.position-row, tr.job-site-row').data('rendered', '0')\n // Remove disabled cell classes\n $table.find('td.nodrop').removeClass('nodrop')\n // Remove past day class for colouring\n $table.find('td.past-day').removeClass('past-day')\n // Unset jquery-droppables\n $table.find('td.ui-droppable').droppable('destroy')\n // Remove rendered event divs\n $table.find('div').remove()\n // Remove availabilities qtip tables\n $table.find('.qtip-availabilities').remove()\n }\n\n // Updates all date-related fields and cells on the calendar\n var updateTableDates = function (startDate, header, today) {\n // Reset date range header\n $('#schedule-date-range').html(header)\n\n // Loop through the week range and update the data attributes and names on the table headers\n var $tableHeadFloat = $('table.floatThead-table th')\n for (var i = 0; i < 7; i++) {\n var start = moment(startDate)\n var newDate = start.add(i, 'days')\n var thIndex = i + 1\n $tableHeadFloat.eq(thIndex).attr('data-date', newDate.format(config.dateFmt))\n $tableHeadFloat.eq(thIndex).text(I18n.l('date.formats.a_d', newDate.format()))\n // If date is in the past, add .past-day cell class to colour it grey.\n if (newDate < moment(today).startOf('day')) {\n var nthIndex = thIndex + 1\n $('.department-schedule-table td:nth-child(' + nthIndex + ')').addClass('past-day')\n $('.department-schedule-table #available-shifts-row td:nth-child(' + nthIndex + ')').addClass('nodrop')\n }\n }\n }\n\n // Render available Shifts for current week and bind droppables\n var renderAvailableShifts = function () {\n var $availableShiftRow = $('#available-shifts-row')\n $.each(weekData.available_shifts, (i, available_shift) => {\n var $th = $availableShiftRow.find('th').eq(available_shift.day_of_week)\n $th.append(divWriter(available_shift, 'available-shift'))\n })\n\n // Check for overflow of available shifts\n checkAvailShiftsOverflow()\n\n // Available shifts cells can only handle Shifts\n $availableShiftRow.find('th.dropcell').not('.nodrop').droppable({\n accept: '.draggable-shift-type, .draggable-custom-shift, .shift',\n hoverClass: 'schedule-hover',\n drop: handleDrop\n })\n\n // Adding droppable elements here to catch any drops when the calendar is overflowing\n $availableShiftRow.siblings('tr').find('th.shift-header.dropcell').droppable({\n accept: '.draggable-shift-type, .draggable-custom-shift, .shift',\n drop: handleDrop\n })\n }\n\n // Render events (shifts, time-off, availabilities) for current week.\n // Bind droppable events.\n var renderEmployeeSchedule = function () {\n $('tr.user-row').each(function () {\n var $row = $(this)\n\n var userId = parseInt($row.data('user-id'))\n var $rowTds = $row.find('td')\n\n // Render shifts\n $.each(_.where(weekData.shifts, { user_id: userId }), (i, shift) => {\n $rowTds.eq(shift.day_of_week).append(divWriter(shift, 'shift'))\n })\n\n // Render other department shifts\n $.each(_.where(weekData.other_department_shifts, { user_id: userId }), (i, shift) => {\n $rowTds.eq(shift.day_of_week).append(divWriter(shift, 'shift'))\n })\n\n // Render unavailables\n $.each(_.where(weekData.unavailables, { user_id: userId }), (i, unavailable) => {\n $rowTds.eq(unavailable.day_of_week).append(divWriter(unavailable, unavailable.css_class))\n })\n\n // Render availabilities\n renderAvailabilities($rowTds, _.where(weekData.availabilities, { user_id: userId }))\n\n // Calculate weekly hours total\n updateHours($row)\n\n // Make user row droppable unless...\n // Dragging Unavailable event - Prevent dropping when another event is present\n // Dragging Any Event - Prevent dropping when an UnavailableRequest or Unavailable event is present\n $row\n .find('td.dropcell')\n .not('.nodrop')\n .droppable({\n accept: function (draggable) {\n var isDraggable = draggable.hasClass('ui-draggable')\n\n var isDroppable = true\n if (!MKS.allow_partial_time_off) {\n isDroppable = !$(this).has('div.unavailable-request, div.unavailable').length\n }\n\n // allow rotations to to be dropped onto time-off's\n // (we won't touch the time-off either way)\n if (draggable.hasClass('draggable-rotation')) {\n isDroppable = true\n }\n\n // allow shifts to be dropped onto time-off requests\n // (only if adp_time_off_request_sync is enabled)\n if (\n MKS.adp_time_off_request_sync &&\n draggable.is('.draggable-shift-type, .draggable-custom-shift, .shift') &&\n $(this).has('div.unavailable-request').length\n ) {\n isDroppable = true\n }\n\n return isDraggable && isDroppable\n },\n hoverClass: 'schedule-hover',\n drop: function (event, ui) {\n handleDrop.call(this, event, ui)\n config.selectors.availableShiftCells.removeClass('skip-drop')\n config.selectors.userCells.removeClass('skip-drop')\n },\n over: function (event, ui) {\n var fixedAvailableShiftRow = $('.floatThead-container.overfilled')\n if (fixedAvailableShiftRow.length > 0) {\n var fixedAvailableShiftRowHeight = fixedAvailableShiftRow.offset().top + fixedAvailableShiftRow.height()\n var draggableBottom = ui.offset.top + ui.draggable.height()\n if (draggableBottom > fixedAvailableShiftRowHeight) {\n config.selectors.availableShiftCells.addClass('skip-drop')\n config.selectors.userCells.removeClass('skip-drop')\n }\n }\n },\n\n out: function (event, ui) {\n var fixedAvailableShiftRow = $('.floatThead-container.overfilled')\n if (fixedAvailableShiftRow.length > 0) {\n var draggableBottom = ui.offset.top\n var fixedAvailableShiftRowHeight = fixedAvailableShiftRow.offset().top + fixedAvailableShiftRow.height()\n if (draggableBottom < fixedAvailableShiftRowHeight) {\n config.selectors.availableShiftCells.removeClass('skip-drop')\n config.selectors.userCells.addClass('skip-drop')\n }\n }\n }\n })\n })\n\n updateScheduleLabels()\n }\n\n // Render a consolidated availability square on calendar for a single or multiple availabilities\n var renderAvailabilities = function ($rowTds, userAvailabilities) {\n $.each(_.groupBy(userAvailabilities, 'day_of_week'), (i, userAvailabilityByDay) => {\n var firstAvailability = userAvailabilityByDay[0]\n var dayOfWeekTd = $rowTds.eq(firstAvailability.day_of_week).append(divWriter(firstAvailability, 'availability'))\n\n if (userAvailabilityByDay.length > 1) {\n var availabilitiesCount = \" (\" + userAvailabilityByDay.length + ')'\n var userId = firstAvailability.user_id\n var date = firstAvailability.date\n var divId = 'availabilities_count_' + userId + date\n\n dayOfWeekTd\n .find('.availability')\n .attr('id', divId)\n .find('span')\n .replaceWith('' + I18n.t('department_schedules.js.available') + '' + availabilitiesCount)\n\n createAvailabilitiesTip($('#' + divId), userId, date)\n }\n })\n }\n\n // Render events for Positions or Job Sites for current week and bind droppables\n var renderPositionOrJobSiteSchedule = function () {\n $('tr.position-row, tr.job-site-row').each(function () {\n var $row = $(this)\n // Render data for Position row if not already rendered\n if ($row.data('rendered') == '0') {\n var positionId = $row.data('position-id') ? parseInt($row.data('position-id')) : null\n var jobSiteId = $row.data('job-site-id') ? parseInt($row.data('job-site-id')) : null\n var $rowTds = $row.find('td')\n\n // Render ShiftRequirements\n $.each(\n _.filter(weekData.shift_requirements, (shift_requirement) => {\n if (positionId) {\n return shift_requirement.position_id == positionId\n } else if (jobSiteId) {\n return shift_requirement.job_site_id == jobSiteId\n }\n }),\n (i, shiftRequirement) => {\n $rowTds.eq(shiftRequirement.day_of_week).append(divWriter(shiftRequirement, 'shift-requirement'))\n }\n )\n\n // Make all Position rows droppable\n $row\n .find('td.dropcell')\n .not('.nodrop')\n .droppable({\n accept: function (draggable) {\n return draggable.hasClass('ui-draggable')\n },\n hoverClass: 'schedule-hover',\n drop: handleDrop\n })\n\n // Flag as rendered\n $row.data('rendered', '1')\n }\n })\n\n updateScheduleLabels()\n }\n\n // Div builder for all event types\n var divWriter = function (event, eventType) {\n var html = ''\n if (event.replies) {\n html = ''\n }\n html += event.label\n\n var cssClass = event.css_class\n if (event.css_class === 'shift' || event.css_class === 'available-shift') {\n if (event.published_at === null) {\n cssClass += ' unpublished'\n }\n } else if (event.css_class === 'shift-requirement') {\n cssClass += shiftRequirementFillCssClass(event)\n if (event.published === false) {\n cssClass += ' unpublished'\n }\n }\n\n var draggable = true\n\n if (config.isReadOnlySchedule) {\n draggable = false\n }\n if (event.css_class !== 'unpublished' && event.css_class !== 'shift') {\n draggable = false\n }\n\n var $div = createGlobalShift(draggable, html)\n\n // adds css class name\n $div.addClass(cssClass)\n\n // set core ID attribute, with special case for Unavailables that pass\n // in their own ID as well as parent ID of UnavailableRequest\n if (eventType === 'unavailable-request' || eventType === 'unavailable') {\n $div.attr('data-unavailable-id', event.id)\n $div.attr('data-unavailable-request-id', event.unavailable_request_id)\n } else {\n $div.attr('data-' + eventType + '-id', event.id)\n }\n // extra data needed for Shifts to calculate weekly hours\n if (eventType === 'shift') {\n $div.attr('data-paid-duration', event.paid_duration)\n applyHeightClassToShift($div)\n } else if (eventType === 'available-shift') {\n applyHeightClassToShift($div)\n } else if (eventType === 'shift-requirement' && event.id === null) {\n // Key to associate non-persisted ShiftRequirements to newly persisted ones on click-and-create/drag\n $div.attr('data-composite-key', event.composite_key)\n // Shift ID used to pre-fill ShiftRequirement attributes when clicking on a non-persisted ShiftRequirement\n $div.attr('data-source-shift-id', event.source_shift_id)\n // This is used to pre-fill the modal on non-persisted ShiftRequirements with the current shifts_count\n $div.attr('data-shifts-count', event.shifts_count)\n }\n\n $div.data('shift-templates-label', event.shift_type_name)\n $div.data('positions-label', event.position_name)\n $div.data('job-sites-label', event.job_site_name)\n\n return $div\n }\n\n function applyHeightClassToShift(element) {\n var checkedLabels = $(scheduleLabels.getScheduleLabelCheckboxes()).filter(':checked')\n\n var selectedLabels = checkedLabels.map((index, checkedLabel) => {\n return $(checkedLabel).val()\n })\n\n var labelCount = 0\n var labelsArray = selectedLabels.get()\n\n if (labelsArray.includes('shift-templates')) {\n labelCount++\n }\n\n if (labelsArray.includes('positions') || labelsArray.includes('job-sites')) {\n labelCount++\n }\n\n var heightClass = labelCount < 2 ? 'height-for-one-line-label' : 'height-for-two-line-label'\n $(element).addClass(heightClass)\n }\n\n // Helper function to check if draggable element is outside droppable container when it is overflowing\n // See issue: https://github.com/AppColony/makeshift/issues/6715\n var isDraggableHelperInsideDroppableContainer = function (event, $droppableContainer) {\n var cTop = $droppableContainer.offset().top\n var cLeft = $droppableContainer.offset().left\n var cBottom = cTop + $droppableContainer.height()\n var cRight = cLeft + $droppableContainer.width()\n return event.pageY >= cTop && event.pageY <= cBottom && event.pageX >= cLeft && event.pageX <= cRight\n }\n\n // Shift/Unavailable/Rotations Drop handler\n var handleDrop = function (e, ui) {\n if ($(this).hasClass('skip-drop')) {\n return false\n }\n\n // Prevent the double-firing of a drop handler\n if (e.timeStamp == config.lastDrop) {\n return false\n }\n config.lastDrop = e.timeStamp\n\n // Make sure elements are not outside the droppable container\n if (!isDraggableHelperInsideDroppableContainer(e, config.selectors.scheduleWrapper)) {\n return false\n }\n\n var shiftId = ui.draggable.data('shift-id')\n var rotationId = ui.draggable.data('rotation-id')\n var isLocked = ui.draggable.find('.shift-lock-label').length > 0\n\n if (isLocked) {\n return\n } else if (shiftId) {\n if (ui.draggable.parent()[0] != $(this)[0]) {\n moveShift(ui, $(this), shiftId)\n }\n } else if (rotationId) {\n createRotation(ui, $(this))\n } else {\n createShift(ui, $(this))\n }\n }\n\n var createRotation = function (ui, thisObj) {\n scheduleRotations.openModal(ui, thisObj)\n }\n\n // creates a new shift\n var createShift = function (ui, thisObj) {\n var shiftTypeId = ui.draggable.data('shift-type-id')\n var shiftTypeLabel\n var $td = thisObj\n var $tr = $td.closest('tr')\n var $th = $('.floatThead-table').find('th').eq($td.index()) // Uses re-inserted floatThead thead instead of original table thead\n var draggable = false\n\n if (typeof shiftTypeId !== 'undefined') {\n shiftTypeLabel = _.findWhere(store.shiftTypes, { id: shiftTypeId }).name\n draggable = true\n } else {\n shiftTypeLabel = ui.draggable.data('label')\n draggable = false\n }\n\n //var $div = $('
' + shiftTypeLabel + '
');\n var $div = createGlobalShift(draggable, shiftTypeLabel)\n $div.addClass('unpublished')\n\n var date = $th.attr('data-date')\n var $request\n\n // Common function to handle a failure (406) for all these different types of requests\n // either it's a fatigue prompt which needs to be handled accordingly or another type\n // of conflict\n function attachRequestFailureHandler($request) {\n $request.fail((xhr, status, error) => {\n if (xhr.responseJSON.error_type == 'FatigueConflictError') {\n fatigueManagement.fatiguePrompt(\n xhr.responseJSON.error_message,\n () => {\n delete shiftTypeData.shift.fatigue_validate\n window.doShiftTypeRequest(shiftTypeData)\n },\n () => {\n $div.remove()\n }\n )\n } else {\n $div.fadeOut(config.transitionInterval, function () {\n $(this).remove()\n bootbox.alert(bootboxMsg(xhr.responseJSON))\n })\n }\n })\n }\n\n if (config.view == 'employees') {\n //employee scheduler\n var userId = $tr.data('user-id')\n\n // Workflow for creating User Shifts via ShiftType/custom, and Unavailables\n if (userId) {\n if (ui.draggable.hasClass('draggable-shift-type')) {\n // Prepend to use css selector ~ on availabilities\n $td.prepend($div)\n\n var shiftTypeData = {\n shift: {\n date: date,\n shift_type_id: shiftTypeId,\n user_id: userId,\n fatigue_validate: true,\n audit_action: 'assign_from_shift_template',\n audit_action_source: 'department_calendar'\n }\n }\n\n window.doShiftTypeRequest = function doShiftTypeRequest(data) {\n return $.ajax({\n url: config.routes.createDepartmentShiftsPath,\n type: 'POST',\n data: data,\n dataType: 'json',\n success: function (data) {\n var shift = data.shift\n var showPositionTip = shift.position_required || shift.job_site_required\n createShiftElement($div, shift, showPositionTip, true)\n updateBudgets()\n ga(\n 'send',\n 'event',\n makeshiftGoogleAnalytics.categories.departmentCalendar,\n makeshiftGoogleAnalytics.actions.drag,\n makeshiftGoogleAnalytics.label.shift\n )\n }\n })\n }\n\n $request = window.doShiftTypeRequest(shiftTypeData)\n attachRequestFailureHandler($request)\n } else if (ui.draggable.hasClass('draggable-custom-shift')) {\n $request = $.get(config.routes.newDepartmentShiftPath, { shift: { date: date, user_id: userId } })\n\n $request.done((html) => {\n $('#shift-modal').html(html).modal('show')\n })\n\n attachRequestFailureHandler($request)\n }\n // User has drag-and-dropped a time off block\n // We show a modal to allow them to set the options for it\n else if (ui.draggable.hasClass('draggable-unavailable')) {\n $request = $.get(config.routes.newUnavailablePath, { unavailable: { date: date, user_id: userId } }, (html) => {\n $('#shift-modal').html(html).modal('show')\n })\n }\n // Workflow for creating AvailableShifts via ShiftType/custom\n } else {\n $request = $.get(config.routes.newDepartmentAvailableShiftPath, {\n available_shift: {\n date: date,\n shift_type_id: shiftTypeId\n }\n })\n\n $request.done((html) => {\n $('#shift-modal').html(html).modal('show')\n })\n\n attachRequestFailureHandler($request)\n }\n } else if (config.view == 'positions') {\n // position scheduler\n var positionId = $tr.data('position-id')\n\n $request = $.get(config.routes.newDepartmentShiftRequirementPath, {\n shift_requirement: { date: date, shift_type_id: shiftTypeId, position_id: positionId }\n })\n $request.done((html) => {\n $('#shift-modal').html(html).modal('show')\n })\n attachRequestFailureHandler($request)\n } else if (config.view == 'job_sites') {\n var jobSiteId = $tr.data('job-site-id')\n\n $request = $.get(config.routes.newDepartmentShiftRequirementPath, {\n shift_requirement: { date: date, shift_type_id: shiftTypeId, job_site_id: jobSiteId }\n })\n $request.done((html) => {\n $('#shift-modal').html(html).modal('show')\n })\n }\n }\n\n // moves an existing shift to a new user/new timeslot (deletes original shift, creates shift and assigns to new user/new time)\n var moveShift = function (ui, thisObj, shiftId) {\n ui.draggable.removeClass('drag-revert')\n var $td = thisObj\n var $tr = $td.closest('tr')\n var $th = $('.floatThead-table').find('th').eq($td.index()) // Uses re-inserted floatThead thead instead of original table thead\n\n if (config.view == 'employees') {\n //employee scheduler\n\n var userId = $tr.data('user-id')\n var shiftTypeLabel = ui.draggable.find('span')[0].innerHTML\n var date = $th.attr('data-date')\n var $request\n\n // Workflow for creating User Shifts from existing shifts\n if (userId) {\n $request = moveShiftSave({\n ui: ui,\n shiftId: shiftId,\n userId: userId,\n date: date,\n shiftTypeLabel: shiftTypeLabel,\n fatigueValidate: true,\n td: $td\n })\n }\n // Workflow for creating available Shifts from existing shifts\n else {\n // get existing shift details\n $request = $.ajax({\n url: config.routes.shiftPath(shiftId),\n type: 'GET',\n dataType: 'json'\n })\n $request.done((json_shift) => {\n //create an available shift based on the existing shift\n var starts_at = moment(json_shift['starts_at'])\n var ends_at = moment(json_shift['ends_at'])\n var days_diff = moment(date).diff(json_shift['date'], 'days')\n var $request = $.ajax({\n url: config.routes.newDepartmentAvailableShiftPath,\n type: 'GET',\n data: {\n available_shift: {\n date: date,\n shift_type_id: json_shift['shift_type_id'],\n starts_at: starts_at.add(days_diff, 'days').format('YYYY-MM-DDTHH:mm:ss.SSSSZ'),\n ends_at: ends_at.add(days_diff, 'days').format('YYYY-MM-DDTHH:mm:ss.SSSSZ'),\n position_id: json_shift['position_id'],\n job_site_id: json_shift['job_site_id'],\n breaks: json_shift['breaks'],\n hide_ends_at: json_shift['hide_ends_at'],\n total_breaks: json_shift['total_breaks'],\n notes: json_shift['notes'],\n time_reporting_code: json_shift['time_reporting_code'],\n name: json_shift['name']\n }\n },\n dataType: 'html'\n })\n $request.done((html) => {\n $('#shift-modal').on('show', function () {\n $(this)\n .find('#create-custom-shift-btn')\n .on('click', (event) => {\n $.ajax({\n url: config.routes.shiftPath(json_shift.id),\n type: 'DELETE',\n dataType: 'json',\n data: {\n audit_action: 'reassign_to_available_shift',\n audit_action_source: 'department_calendar',\n shift_date_new: date\n }\n }).then((data) => {\n var original_tr = ui.draggable.parent().closest('tr')\n ui.draggable.draggable('destroy')\n ui.draggable.remove()\n updateBudgets()\n updateHours(original_tr)\n ga(\n 'send',\n 'event',\n makeshiftGoogleAnalytics.categories.departmentCalendar,\n makeshiftGoogleAnalytics.actions.drag,\n makeshiftGoogleAnalytics.label.shift\n )\n })\n })\n $(this)\n .find('#cancel-custom-shift-btn')\n .on('click', (event) => {\n ui.draggable.addClass('drag-revert')\n ui.draggable.animate({\n left: 0,\n top: 0\n })\n })\n })\n $('#shift-modal').html(html).modal('show')\n })\n })\n }\n }\n\n // $request.fail(moveShiftFailHandler);\n }\n\n var moveShiftCancel = function () {\n store.lastShiftedShift.ui.draggable.addClass('drag-revert')\n store.lastShiftedShift.ui.draggable.animate({\n left: 0,\n top: 0\n })\n }\n\n var moveShiftFailHandler = function (xhr, status, error) {\n // if we get a fatigue rule error back we throw up a warning prompt\n // if the user choose to continue we remove the \"check\" flag and\n // resubmit the form.\n if (xhr.responseJSON && xhr.responseJSON.error_type == 'FatigueConflictError') {\n fatigueManagement.fatiguePrompt(\n xhr.responseJSON.error_message,\n () => {\n store.lastShiftedShift.fatigueValidate = false\n moveShiftSave(store.lastShiftedShift)\n },\n () => {\n moveShiftCancel()\n }\n )\n } else {\n moveShiftCancel()\n\n if (xhr.responseJSON) {\n var error_message = xhr.responseJSON.error_message\n if (error_message != 'no change') {\n bootbox.alert(bootboxMsg(xhr.responseJSON))\n }\n }\n }\n }\n\n var moveShiftSave = function (params) {\n //get existing shift details\n var $request = $.ajax({\n url: config.routes.shiftPath(params.shiftId),\n type: 'GET',\n async: false,\n dataType: 'json'\n })\n\n // if shift is returned create the shift with the existing shift details\n $request.done((json) => {\n store.lastShiftedShift = params\n\n var starts_at = moment(json['starts_at'])\n var ends_at = moment(json['ends_at'])\n var days_diff = moment(params.date).diff(json['date'], 'days')\n\n var shift = {\n date: params.date,\n user_id: params.userId,\n starts_at: starts_at.add(days_diff, 'days').format('YYYY-MM-DDTHH:mm:ss.SSSSZ'),\n ends_at: ends_at.add(days_diff, 'days').format('YYYY-MM-DDTHH:mm:ss.SSSSZ'),\n available_shift_id: json['json'],\n breaks: json['breaks'],\n hide_ends_at: json['hide_ends_at'],\n notes: json['notes'],\n time_reporting_code: json['time_reporting_code'],\n shift_type_id: json['shift_type_id'],\n original_shift_id: json['id'],\n total_breaks: json['total_breaks'],\n wage: json['wage'],\n position_id: json['position_id'],\n job_site_id: json['job_site_id'],\n fatigue_validate: params.fatigueValidate,\n shift_date_previous: json['date'],\n pay_code_id: json['pay_code_id'],\n audit_action: 'reassign',\n audit_action_source: 'department_calendar'\n }\n\n var $innerRequest = $.ajax({\n url: config.routes.reassignShiftsPath(json['id']),\n type: 'POST',\n data: { shift: shift },\n dataType: 'json'\n })\n\n $innerRequest.done((data) => {\n // update existing shift with position id if relevant.\n var shift = data.shift\n var possible_positions = shift.position_assignments\n var possible_job_sites = shift.job_site_assignments\n var showPositionTip =\n (!possible_positions.includes(json['position_id']) && possible_positions.length > 1) ||\n (!possible_job_sites.includes(json['job_site_id']) && possible_job_sites.length > 1)\n params.ui.draggable.draggable({ revert: false })\n var $div = createGlobalShift(true, params.shiftTypeLabel)\n $div.addClass('unpublished')\n\n $div.children('span').children('span').remove()\n if (possible_positions.length == 1)\n $.ajax({\n url: config.routes.updateShift(shift.id),\n type: 'PUT',\n data: { shift: { position_id: possible_positions[0], audit_action_source: 'department_calendar' } },\n dataType: 'json'\n }).then((data) => {\n shift = data.shift\n createShiftElement($div, shift, showPositionTip, true)\n })\n\n params.td.prepend($div)\n createShiftElement($div, shift, showPositionTip, true)\n\n //recalculate hours for the original shift\n var original_tr = params.ui.draggable.parent().closest('tr')\n\n // Remove the deleted shift from the schedule\n destroyEvent('shift', json['id'])\n params.ui.draggable.draggable('destroy')\n params.ui.draggable.remove()\n updateHours(original_tr)\n })\n\n $innerRequest.fail(moveShiftFailHandler)\n })\n\n $request.fail(moveShiftFailHandler)\n }\n\n // Get the label for a particular schedule item/div\n var scheduleItemLabel = function ($div) {\n return $div.find('span.schedule-label')\n }\n\n // After-create/edit AvailableShift: hide modal, highlight created AvailableShift\n var afterAvailableShift = function (availableShift, isNew) {\n $('#shift-modal').modal('hide')\n var $th = $('.floatThead-table').find('th[data-date=' + availableShift.date + ']')\n var $td = $('#available-shifts-row').find('th').eq($th.index())\n\n var $div = createGlobalShift(false, availableShift.label)\n\n if (isNew) {\n $td.append($div)\n } else {\n $('#available-shifts-row')\n .find('div[data-available-shift-id=' + availableShift.id + ']')\n .replaceWith($div)\n }\n\n $div.attr('data-available-shift-id', availableShift.id)\n $div.attr('data-positions-label', availableShift.position_name)\n $div.attr('data-job-sites-label', availableShift.job_site_name)\n $div.data('shift-templates-label', availableShift.shift_type_name)\n\n $div.switchClass('department-10-cal', 'available-shift', config.transitionInterval, 'easeOutQuad', () => {\n checkAvailShiftsOverflow()\n updateScheduleLabels(scheduleItemLabel($div))\n applyHeightClassToShift($div)\n })\n\n if (availableShift.published_at === null) {\n $div.addClass('unpublished')\n togglePublishButton(true)\n }\n\n $('.department-schedule-table').floatThead('reflow')\n }\n\n // *****************************\n // Fix for Avail Shifts overflow\n /**\n * Sets or unsets a class that makes available shifts scrollable.\n */\n var availShiftsScrollable = function () {\n $('#available-shifts-row').closest('.floatThead-container').addClass('overfilled')\n $('.size-row').addClass('overfilled')\n }\n\n var availShiftsExpanded = function () {\n $('#available-shifts-row').closest('.floatThead-container').removeClass('overfilled')\n $('.size-row').removeClass('overfilled')\n }\n\n var checkAvailShiftsOverflow = function () {\n if (availShiftsOverfilled(4)) {\n availShiftsScrollable()\n } else {\n availShiftsExpanded()\n }\n }\n\n /**\n * Checks if any of the available shift columns\n * have a certain number of available shifts\n */\n var availShiftsOverfilled = function (overfill_limit) {\n var columns = $('#available-shifts-row').children('th')\n var items_per_col = $.map(columns, (i, v) => {\n return $(i).children('div').length\n })\n return Math.max.apply(Math, items_per_col) >= overfill_limit\n }\n\n // End of fix for Avail Shifts overflow\n // *****************************\n\n // After-create custom Shift: hide modal, locate div placement by date/user and create element\n var createCustomShift = function (shift) {\n $('#shift-modal').modal('hide')\n var $th = $('.floatThead-table').find('th[data-date=' + shift.date + ']')\n var $td = $('tr.user-row[data-user-id=' + shift.user_id + ']')\n .find('td')\n .eq($th.index())\n\n var $div = createGlobalShift(true, '')\n\n $div.addClass('unpublished')\n\n $td.prepend($div)\n\n createShiftElement($div, shift, false, true)\n updateBudgets()\n }\n\n // After-create ShiftRequirement:\n // Locate div by composite keys, remove matching non-persisted ShiftRequirement if present, create/highlight element,\n // and replace create modal with edit modal.\n var createShiftRequirement = function (shiftRequirement) {\n var $th = $('.floatThead-table').find('th[data-date=' + shiftRequirement.date + ']')\n if (config.view == 'positions') {\n var $td = $('tr.position-row[data-position-id=' + shiftRequirement.position_id + ']')\n .find('td')\n .eq($th.index())\n } else if (config.view == 'job_sites') {\n var $tr = $('tr.job-site-row[data-job-site-id=' + shiftRequirement.job_site_id + ']')\n $td = $tr.find('td').eq($th.index())\n\n var required_employees = $tr.data('required-employees')\n $tr.data('required-employees', required_employees + shiftRequirement.required_employees)\n if (Cookies.get('jobSiteSortAttribute') === 'requirements') {\n jobSiteSort.sortJobSitesBySelectedAttribute('requirements')\n }\n }\n var $div = $('
' + shiftRequirement.label + '
')\n\n var $matchingNonPersistsedShiftRequirement = $td.find('div[data-composite-key=' + shiftRequirement.composite_key + ']')\n if ($matchingNonPersistsedShiftRequirement.length) {\n $matchingNonPersistsedShiftRequirement.replaceWith($div)\n } else {\n $td.append($div)\n }\n\n var cssClass = 'shift-requirement' + shiftRequirementFillCssClass(shiftRequirement)\n if (!shiftRequirement.published) {\n cssClass += ' unpublished'\n }\n $div.attr('data-shift-requirement-id', shiftRequirement.id)\n $div.data('shift-templates-label', shiftRequirement.shift_type_name)\n $div.data('positions-label', shiftRequirement.position_name)\n $div.data('job-sites-label', shiftRequirement.job_site_name)\n updateScheduleLabels(scheduleItemLabel($div))\n $div.switchClass('department-10-cal', cssClass, config.transitionInterval, 'easeOutQuad', () => {\n $div.trigger('click')\n })\n }\n\n /*\n * After-update Shift: hide modal/qtip, highlight updated Shift\n */\n var updateShift = function (shift) {\n $('#shift-modal').modal('hide')\n $('div.qtip.position-select').remove()\n var $div = $('div[data-shift-id=' + shift.id + ']')\n var $span = $('div[data-shift-id=' + shift.id + '] span')\n $span.html(shift.label)\n $div.data('paid-duration', shift.paid_duration)\n $div.data('shift-templates-label', shift.shift_type_name)\n $div.data('positions-label', shift.position_name)\n $div.data('job-sites-label', shift.job_site_name)\n updateScheduleLabels(scheduleItemLabel($div))\n $div.effect('highlight', { color: config.highlightColor }, config.highlightInterval)\n }\n\n /*\n * After-update Unavailable: hide modal/qtip, highlight updated Unavailable\n *\n * Using the data from the response: get new unavailable type name, and the id of the one unavailable edited.\n * Select the one unavailable div. Parse unavailable-request-id data.\n * If unavailable-request-id is present update the selection to be all unavailables of that request.\n * Update all the unavailable(s) divs\n *\n */\n var updateUnavailable = function (unavailable) {\n $('#shift-modal').modal('hide')\n $('div.qtip.unavailable-type-select').remove()\n\n var selectorId = unavailable.id\n var selectorDataAttribute = 'unavailable-id'\n\n $('div[data-' + selectorDataAttribute + '=' + selectorId + ']').each((index, unavailabelDOM) => {\n $(unavailabelDOM).html('' + unavailable.unavailable_type_name + '')\n $(unavailabelDOM).effect('highlight', { color: config.highlightColor }, config.highlightInterval)\n })\n }\n\n /*\n * After-update ShiftRequirement: hide modal, reset label/css class, highlight updated ShiftRequirement\n */\n var updateShiftRequirement = function (shiftRequirement, hideModal) {\n if (hideModal) {\n $('#shift-modal').modal('hide')\n }\n var $div = $('div[data-shift-requirement-id=' + shiftRequirement.id + ']')\n $div.html(shiftRequirement.label)\n var cssClass = 'shift-requirement' + shiftRequirementFillCssClass(shiftRequirement)\n if (!shiftRequirement.published) {\n cssClass += ' unpublished'\n }\n $div.attr('class', cssClass)\n $div.effect('highlight', { color: config.highlightColor }, config.highlightInterval)\n $div.data('paid-duration', shiftRequirement.paid_duration)\n $div.data('positions-label', shiftRequirement.position_name)\n $div.data('job-sites-label', shiftRequirement.job_site_name)\n updateScheduleLabels(scheduleItemLabel($div))\n }\n\n /*\n * Generates a css class add on for the ShiftRequirement based on persisted/fill status\n *\n * @example 0/2 => shift-requirement-empty\n * @example 1/2 => shift-requirement-partial\n * @example 2/2 => shift-requirement-filled\n * @example 3/2 => shift-requirement-over\n */\n var shiftRequirementFillCssClass = function (shiftRequirement) {\n if (!shiftRequirement.id) {\n return ' shift-requirement-over'\n } else if (shiftRequirement.shifts_count == shiftRequirement.required_employees) {\n return ''\n } else if (shiftRequirement.shifts_count === 0) {\n return ' shift-requirement-empty'\n } else if (shiftRequirement.shifts_count < shiftRequirement.required_employees) {\n return ' shift-requirement-partial'\n } else {\n return ' shift-requirement-over'\n }\n }\n\n // After-assign AvailableShift: create Shift div for User\n var assignAvailableShift = function (shift) {\n var $availableShiftDiv = $('div.available-shift[data-available-shift-id=' + shift.available_shift_id + ']')\n var $availableShiftTd = $availableShiftDiv.closest('th')\n var $userTr = $('tr.user-row[data-user-id=' + shift.user_id + ']')\n var $shiftTd = $userTr.find('td').eq($availableShiftTd.index())\n var $shiftDiv = createGlobalShift(true, 'shift')\n\n $shiftTd.prepend($shiftDiv)\n createShiftElement($shiftDiv, shift, false, false)\n\n ga(\n 'send',\n 'event',\n makeshiftGoogleAnalytics.categories.availableShift,\n makeshiftGoogleAnalytics.actions.assign,\n makeshiftGoogleAnalytics.label.byAvailability\n )\n }\n\n // After-approve UnavailableRequest: Switch class of pending request Unavailables to normal Unavailables, hide modal\n var approveUnavailableRequest = function (unavailableId, unavailableTypeName) {\n $('div[data-unavailable-id=' + unavailableId + ']').each(function (index) {\n var $unavailable = $(this)\n $unavailable.switchClass('unavailable-request', 'unavailable')\n $unavailable.effect('highlight', { color: config.highlightColor }, config.highlightInterval)\n $unavailable.find('strong').text(unavailableTypeName)\n })\n $('#shift-modal').modal('hide')\n }\n\n /*\n * Handles div creation for a successfully created Shift, via drop or available Shift assignment\n *\n * @param {Object} $div Shift div object\n * @param {Object} shift Shift\n * @param {Boolean} showPositionTip True if Shift requires position selection\n * @param {Boolean} isUnpublished True if caller is creating a known unpublished Shift\n */\n var createShiftElement = function ($div, shift, showPositionTip, isUnpublished) {\n var label = $div.children('span').children('span').length > 0 ? $div.children('span').innerHTML : shift.label\n\n $div.children('span').html(label)\n // Remove same-date UserAvailabilities and Unavailables from dom, mirroring Shift#after_save callback that destroys them\n var dayAvailability = $div.closest('td').find('div.availability')\n if (dayAvailability.length > 0) {\n ga(\n 'send',\n 'event',\n makeshiftGoogleAnalytics.categories.departmentCalendar,\n makeshiftGoogleAnalytics.actions.drag,\n makeshiftGoogleAnalytics.label.shiftOnAvailability\n )\n }\n\n $div.attr('data-shift-id', shift.id)\n $div.data('paid-duration', shift.paid_duration)\n $div.data('shift-templates-label', shift.shift_type_name)\n $div.data('positions-label', shift.position_name)\n $div.data('job-sites-label', shift.job_site_name)\n\n applyHeightClassToShift($div)\n\n // Show shift position selector if required\n // Update hours for row and queue for notification if required\n // @note Callback on transition is needed to ensure transition class has stuck for later selectors\n $div.switchClass('department-10-cal', 'shift', config.transitionInterval, 'easeOutQuad', () => {\n if (showPositionTip) {\n createPositionTip($div, shift.id)\n }\n updateHours($div.closest('tr'))\n updateScheduleLabels(scheduleItemLabel($div))\n })\n togglePublishButton()\n }\n\n /*\n * Handles div creation for a successfully created Unavailable\n *\n * @param {Object} $div Unavailable div object\n * @param {Integer} id Unavailable ID\n */\n var createUnavailableElement = function ($div, id) {\n // Remove same-date UserAvailabilities from dom, mirroring Unavailable#after_save callback that destroys them\n var dayAvailability = $div.closest('td').find('div.availability')\n if (dayAvailability.length > 0) {\n ga(\n 'send',\n 'event',\n makeshiftGoogleAnalytics.categories.departmentCalendar,\n makeshiftGoogleAnalytics.actions.drag,\n makeshiftGoogleAnalytics.label.shiftOnAvailability\n )\n }\n\n // Assign required data attrs to div\n $div.attr('data-unavailable-id', id)\n $div.switchClass('department-10-cal', 'unavailable', config.transitionInterval, 'easeOutQuad').removeClass('unpublished')\n }\n\n // Renders a position selector qtip for Shifts created via drop\n var createPositionTip = function ($div, shiftId) {\n $div.qtip({\n content: {\n text: function (event, api) {\n $.get(config.routes.editShiftPositionPath(shiftId)).then(\n (html) => {\n api.set('content.text', html)\n },\n (xhr, status, error) => {\n api.set('content.text', status + ': ' + error)\n }\n )\n return '' + I18n.t('department_schedules.js.loading') + ''\n }\n },\n position: {\n my: 'center left',\n at: 'center right',\n viewport: $('.department-schedule-table'),\n adjust: { x: -10, method: 'flip none' }\n },\n show: true,\n hide: 'unfocus',\n style: {\n classes: 'qtip-bootstrap position-select'\n },\n events: {\n // readjust x on flip\n move: function (event, api, position, viewport) {\n if (position.adjusted.left !== 0) {\n return (position.left += 20)\n }\n },\n // submit tooltip select position, and job site\n hide: function (event, api) {\n $(this).find('form').submit()\n }\n }\n })\n }\n\n // Renders qtip with a table of multiple availabilities\n var createAvailabilitiesTip = function ($div, userId, date) {\n $div.qtip({\n content: {\n text: function (event, api) {\n $.get(config.routes.departmentAvailabilitiesPath(userId, date)).then(\n (html) => {\n api.set('content.text', html)\n },\n (xhr, status, error) => {\n api.set('content.text', status + ': ' + error)\n }\n )\n return '' + I18n.t('department_schedules.js.loading') + ''\n }\n },\n position: {\n my: 'center left',\n at: 'center right',\n viewport: $('.department-schedule-table'),\n adjust: { x: -10, method: 'flip none' }\n },\n show: {\n event: 'mouseover',\n solo: true\n },\n hide: { when: { event: 'mouseout unfocus' }, fixed: true, delay: 200 },\n style: {\n classes: 'qtip-bootstrap qtip-availabilities-wrapper'\n },\n events: {\n // readjust x on flip\n move: function (event, api, position, viewport) {\n if (position.adjusted.left !== 0) {\n return (position.left += 20)\n }\n }\n }\n })\n }\n\n /*\n * Post-destroy events: remove event div, hide modal, optionally recalculate total hours and change publish button state\n * @param {String} eventType Event class name\n * @param {Integer} id Event ID\n * @param {Boolean} isPublished For Shifts only, to determine GA call\n */\n var destroyEvent = function (eventType, id, isPublished) {\n switch (eventType) {\n case 'shift-requirement':\n $('div[data-shift-requirement-id=' + id + ']').fadeOut(config.transitionInterval, function () {\n $(this).remove()\n togglePublishButton()\n updateBudgets() // Update estimated dollars/planned hours on positions/job sites schedules\n })\n break\n\n case 'shift':\n $('div[data-shift-id=' + id + ']').fadeOut(config.transitionInterval, function () {\n var shift,\n $self = $(this),\n $tr = $self.closest('tr')\n $self.remove()\n updateHours($tr)\n updateBudgets()\n togglePublishButton()\n\n var gaEventLabel = isPublished ? makeshiftGoogleAnalytics.label.published_shift : makeshiftGoogleAnalytics.label.unpublished_shift\n ga('send', 'event', makeshiftGoogleAnalytics.categories.departmentCalendar, makeshiftGoogleAnalytics.actions.destroy, gaEventLabel)\n })\n break\n\n case 'available-shift':\n $('div[data-available-shift-id=' + id + ']').fadeOut(config.transitionInterval, function () {\n $(this).remove()\n $('.department-schedule-table').floatThead('reflow')\n checkAvailShiftsOverflow()\n })\n break\n\n case 'unavailable':\n var ids = $.isArray(id) ? id : [id] // An Unavailable may be part of a group, as part of an UnavailableRequest\n $.each(ids, (i, id) => {\n $('div[data-unavailable-id=' + id + ']').fadeOut(config.transitionInterval, function () {\n $(this).remove()\n })\n })\n break\n\n case 'unavailable-request':\n $('div[data-unavailable-request-id=' + id + ']').fadeOut(config.transitionInterval, function () {\n $(this).remove()\n })\n break\n }\n\n $('#shift-modal').modal('hide')\n }\n\n // Adds a 'range' class when mousing over the date picker\n var mouseOverHighlightWeek = function () {\n $('body')\n .on('mouseover', '.department-toolbar .datepicker-days tr', function () {\n var $tds = $(this).find('td')\n $.each($tds, function () {\n $(this).addClass('range')\n })\n })\n .on('mouseout', '.department-toolbar .datepicker-days tr', function () {\n var $tds = $(this).find('td')\n $.each($tds, function () {\n $(this).removeClass('range')\n })\n })\n }\n\n // Adds an active class to the current week to show what week is currently selected\n var setActiveWeekSelection = function () {\n var weekDays = $('.day.active').siblings()\n colorActiveWeek(weekDays)\n }\n\n // Adds active class to all days of the week\n var colorActiveWeek = function (days) {\n days.each(function () {\n $(this).addClass('active')\n })\n }\n\n // Updates total hours on a user row when an assigned Shift is created or destroyed\n var updateHours = function ($row) {\n var $hoursContainer = $row.find('td:first span.hours')\n if ($hoursContainer.length) {\n var totalPaidDuration = 0\n $row.find('td div.shift, td div.other-department-shift').each(function () {\n totalPaidDuration += parseInt($(this).data('paid-duration'))\n })\n $hoursContainer.html(msUtil.durationToHours(totalPaidDuration, true))\n if (config.overtimeThreshold && totalPaidDuration / 3600 > config.overtimeThreshold) {\n $hoursContainer.addClass('overtime-hours')\n } else {\n $hoursContainer.removeClass('overtime-hours')\n }\n }\n }\n\n /**\n * Updates the state of the Publish button based on the existence of unpublished Shifts\n * @param {Boolean} hasUnpublishedShifts Use if set by calling method, otherwise query\n */\n var togglePublishButton = function (hasUnpublishedShifts) {\n if (hasUnpublishedShifts !== undefined) {\n $('#publish-all-shifts, #publish-range-shifts, #publish-current-week-shifts').prop('disabled', !hasUnpublishedShifts)\n } else {\n $.ajax({ url: config.routes.unpublishedDepartmentShiftsPath, dataType: 'json' }).then((data) => {\n $('#publish-all-shifts, #publish-range-shifts, #publish-current-week-shifts').prop('disabled', !data.exists)\n })\n }\n }\n\n /**\n * removing the repetetive creation of shifts with very similar structure and minor class changes.\n * Will create the appropriate shift structure in one centralized location.\n *\n * @param {Boolean} isDraggable marks if the shift div is draggable or not.\n * @param {String} shiftTypeLabel The label that will appear inside the span.\n * @param {integer} availableShiftid The shift id for the div.\n *\n */\n\n var createGlobalShift = function (isDraggable, shiftTypeLabel) {\n var $div = $('
')\n var $span = $('' + shiftTypeLabel + '')\n\n if (isDraggable) {\n $div.attr('id', 'move_shift')\n $div\n .draggable({\n revert: function () {\n if ($(this).hasClass('drag-revert')) return true\n $(this).data('uiDraggable').originalPosition = {\n top: 0,\n left: 0\n }\n }, // when dropped on invalid target, the item will revert back to its initial position\n containment: 'document',\n cursor: null,\n opacity: 0.8,\n start: function (event, ui) {\n // Don't leave position/job site tooltips hanging if we're about to drag off somewhere else\n if ($(ui.helper[0]).data().qtip) {\n $(ui.helper[0]).data().qtip.destroy()\n }\n }\n })\n .on('click', (e) => {\n e.preventDefault()\n })\n }\n\n $div.append($span)\n return $div\n }\n\n /**\n * Helper to toggle the copy/paste functionality\n */\n var toggleCopyFunctionality = function () {\n var inPast = moment(copyPaste.targetWeekStartDate).add(1, 'week').subtract(1, 'second') < moment(weekData.current_date)\n\n /**\n * Specific to the copy/paste buttons\n */\n if (copyPaste.copiedSourceWeekStartDate) {\n var isSameWeek = copyPaste.targetWeekStartDate === copyPaste.copiedSourceWeekStartDate\n if (inPast || isSameWeek) {\n $('#department-schedule-paste-week').addClass('disabled')\n } else {\n $('#department-schedule-paste-week').removeClass('disabled')\n }\n } else {\n $('#department-schedule-paste-week').addClass('disabled')\n }\n\n /**\n * Specific to repeat week button\n */\n if (inPast) {\n $('#department-schedule-repeat-week').addClass('disabled')\n } else {\n $('#department-schedule-repeat-week').removeClass('disabled')\n }\n }\n\n /**\n * Helper method to block click events on the view.\n * @param {Boolean} show Condition of if it should show the modal or not.\n * @param {String} primary_selectors Primary selector as a string to be used in a jQuery lookup.\n * @param {String} message Secondary selectors as a string to be used in a jQuery lookup.\n * @param {String} secondary_selectors Secondary selectors as a string to be used in a jQuery lookup.\n */\n var toggleBlockDisplay = function (show, primary_selector, message, secondary_selectors) {\n if (show) {\n var blockSettings = {\n message: null,\n baseZ: 2e9,\n css: {\n border: 'none',\n padding: '25px 15px',\n backgroundColor: '#000',\n '-webkit-border-radius': '2px',\n '-moz-border-radius': '2px',\n opacity: 0.75,\n color: '#fff'\n },\n overlayCSS: {\n backgroundColor: 'transparent',\n cursor: null\n }\n }\n $(secondary_selectors).block(blockSettings)\n\n if (message) {\n blockSettings['message'] = message\n }\n\n $(primary_selector).block(blockSettings)\n } else {\n $(primary_selector + ', ' + secondary_selectors).unblock()\n }\n }\n\n /**\n * Setup Pusher to block/unblock schedule editing during shift premium calculations.\n */\n var initPusherDepartmentNotifs = function () {\n if (!config.companyId || !config.departmentId) {\n console.log('Pusher missing company (' + config.companyId + ') or department (' + config.departmentId + ')!')\n return\n }\n\n var pusher = window.getPusherInstance(config.pusherKey)\n var channelName = 'department_notification_' + config.companyId + '_' + config.departmentId\n var pusherChannel = pusher.subscribe(channelName)\n\n pusherChannel.bind('schedule_lock', (data) => {\n blockScheduleForProcessing(data.message)\n })\n\n pusherChannel.bind('schedule_unlock', (data) => {\n unblockScheduleForProcessing()\n })\n\n pusherChannel.bind('department_schedule.shift.success', (data) => {\n onShiftUpdateSuccess(data)\n })\n\n pusherChannel.bind('department_schedule.shift.error', (data) => {\n onShiftUpdateError(data)\n })\n }\n\n // Check if schedule is currently blocked\n // https://stackoverflow.com/questions/7907013/jquery-blockui-tell-if-page-or-specific-element-is-blocked\n var isScheduleBlocked = function () {\n return $('#department-schedule-box').data()['blockUI.isBlocked'] == 1\n }\n\n /**\n * Block the schedule UI from being edited.\n */\n var blockScheduleForProcessing = function () {\n toggleBlockDisplay(\n true,\n '#department-schedule-box',\n I18n.t('department_schedules.show.schedule_processing.message'),\n '#shift-types-box, #drag-and-drop-box'\n )\n }\n\n /**\n * Unblock the schedule UI from being edited.\n */\n var unblockScheduleForProcessing = function () {\n toggleBlockDisplay(\n false,\n '#department-schedule-box',\n I18n.t('department_schedules.show.schedule_processing.message'),\n '#shift-types-box, #drag-and-drop-box'\n )\n }\n\n var initSidebar = function () {\n $(() => {\n $('#schedule-side-bar #side-bar-shift-templates').show()\n })\n\n $('#schedule-side-bar-content-toggle a.toggle-link').on('click', function (e) {\n e.preventDefault()\n\n var hiddenLink = $(this).siblings('a.hidden-link')\n var toggleTarget = $(this).attr('href')\n var toggleTitle = $(this).text()\n\n $('#schedule-side-bar-content-toggle .dropdown-toggle h4').text(toggleTitle)\n $('#schedule-side-bar .side-bar-panel').hide()\n $('#schedule-side-bar #side-bar-edit-link').attr('href', hiddenLink.attr('href'))\n $(toggleTarget).show()\n })\n }\n\n var sumRowRequiredEmployees = function (shift_requirements) {\n $('tr.job-site-row').data('required-employees', 0) // reset all the rows to 0\n\n _.each(shift_requirements, (shift_requirement) => {\n var jobSiteRow = $('tr.job-site-row[data-job-site-id=' + shift_requirement.job_site_id + ']')\n\n jobSiteRow.data('required-employees', jobSiteRow.data('required-employees') + shift_requirement.required_employees)\n })\n\n if (Cookies.get('jobSiteSortAttribute') === 'requirements') {\n jobSiteSort.sortJobSitesBySelectedAttribute('requirements')\n }\n }\n\n // Can pass an optional jQuery object to update\n // If nothing is passed, ALL schedule labels are updated\n var updateScheduleLabels = function ($labels) {\n scheduleLabels.updateScheduleLabels({\n labels: $labels,\n departmentId: config.departmentId,\n jobSitesEnabled: config.jobSitesEnabled\n })\n }\n\n var getBudgetMode = function () {\n return localStorage.getItem('BudgetBar.mode') || 'dollars'\n }\n\n var setBudgetMode = function (mode) {\n localStorage.setItem('BudgetBar.mode', mode)\n }\n\n var initWebSocketListeners = function () {\n config.privatePusherChannel.bind('department-schedules.publish.failure', (data) => {\n $.growl.error({\n title: 'Error',\n message: data.message,\n duration: 5400\n })\n })\n\n config.privatePusherChannel.bind('department-schedules.publish.success', (data) => {\n var unpublishedShiftsExist = data.unpublished_shifts_exist\n var publishedAt = data.department_published_at\n var startDate = $('#publishStartDate').val()\n var endDate = $('#publishEndDate').val()\n var weekStartsOn = moment(config.beginningOfWeek)._d\n var weekEndsOn = moment(weekStartsOn).add(6, 'days')._d\n var publishStartsOn = startDate ? moment(startDate)._d : weekStartsOn\n var publishEndsOn = endDate ? moment(endDate)._d : weekEndsOn\n\n // refresh the schedule\n if (publishStartsOn <= weekEndsOn && publishEndsOn >= weekStartsOn) {\n var rowPosition = departmentSchedule.getCurrentRowPosition()\n loadSchedule(null, rowPosition)\n }\n\n // close dropdown menu if open\n // lastPublishButtonClicked *may not be defined* if you clicked the publish button in a separate browser\n if (\n lastPublishButtonClicked &&\n (lastPublishButtonClicked.attr('id') == 'publish-all-shifts' || lastPublishButtonClicked.attr('id') == 'publish-range-shifts')\n ) {\n $('button[data-toggle=dropdown]').dropdown('toggle')\n }\n\n toggleBlockDisplay(\n true,\n '#department-schedule-box',\n '

' + I18n.t('department_schedules.show.publish.success.message') + '

'\n )\n\n setTimeout(() => {\n toggleBlockDisplay(false, '#department-schedule-box')\n togglePublishButton(unpublishedShiftsExist)\n if (lastPublishButtonClicked) {\n lastPublishButtonClicked.text(lastPublishButtonText)\n }\n config.selectors.lastPublishedAt.html(publishedAt)\n }, 1500)\n })\n\n // Listen for copy/paste update message\n const pusher = window.getPusherInstance(config.pusherKey)\n const pusherChannel = pusher.subscribe('user-' + config.pusherUserId)\n pusherChannel.bind('department_schedule.updated', (data) => {\n msUtil.spinner('department-schedule-box').stop()\n loadSchedule()\n })\n }\n\n // ********************************************************//\n // ** START of methods for handling ShiftExportAttempts ** //\n\n // The passed function can only be called once the schedule is unblocked\n // Likely something arriving from a pusher message, which can be sent to us whenever\n // If we're in the middle of a schedule publish, for example,\n // our shifts may not exist in the DOM at the moment\n // Wait until the schedule is finished and then reprocess\n var waitingOnScheduleUnblocked = function (call_when_unblocked, arg) {\n if (!isScheduleBlocked()) {\n return false\n }\n\n // Schedule is blocked\n // Wait another second before attempting again\n // Keep waiting until we're not blocked!\n setTimeout(() => {\n call_when_unblocked(arg)\n }, 1000)\n\n return true\n }\n\n var onShiftUpdateSuccess = function (data) {\n if (waitingOnScheduleUnblocked(onShiftUpdateSuccess, data)) {\n return\n }\n\n // remove lock\n var lock_identifier = '.shift[data-shift-id=' + data.shift_id + '] i.shift-lock-label'\n var locks = $(lock_identifier)\n locks.remove()\n\n // remove warning sign\n var warning_identifier = '.shift[data-shift-id=' + data.shift_id + '] i.fa-exclamation-triangle'\n var warning = $(warning_identifier)\n warning.remove()\n\n var shift = weekData.shifts.find((shift) => {\n return shift.id == data.shift_id\n })\n if (shift) {\n shift.failed = false\n }\n\n if (locks.length > 0) {\n // TODO: This function call spams us with an AJAX request *per returned shift export attempt*\n // If we pubished a schedule with, say, 100 shifts in it, we'd make basically the same request 100 times\n // I'm not entirely clear on how this was intended to work, so for now I'm just commenting it out\n // and we can add it back when there's a better understanding of when/how to update the shift sync audit button state\n // loadErrorShiftExportAttemptsCount();\n } else {\n shiftSyncAuditButtonClear()\n }\n\n flashShiftExportError()\n }\n\n var onShiftUpdateError = function (data) {\n if (waitingOnScheduleUnblocked(onShiftUpdateError, data)) {\n return\n }\n\n // remove lock\n var lock_identifier = '.shift[data-shift-id=' + data.shift_id + '] i.shift-lock-label'\n $(lock_identifier).remove()\n\n // add warning sign\n var warning_identifier = '.shift[data-shift-id=' + data.shift_id + '] .time-label'\n var warning = $(warning_identifier)\n var text = warning.text()\n\n var shift = weekData.shifts.find((shift) => {\n return shift.id == data.shift_id\n })\n if (shift) {\n shift.failed = true\n }\n\n shiftSyncAuditButtonWarn()\n\n $(warning_identifier).html(\"\" + text)\n flashShiftExportError()\n }\n\n var flashShiftExportError = function () {\n var num_errors = numFailedShifts()\n\n if (num_errors == 0) {\n clearFlashShiftExportError()\n } else {\n showFlashShiftExportError(num_errors)\n }\n }\n\n var showFlashShiftExportError = function (num_errors) {\n if (num_errors == 1) {\n var msg = I18n.t('integrations.shift_exporter.user_error_banner_single_html', { link: shiftExportAttemptsPath() })\n } else if (num_errors > 1) {\n msg = I18n.t('integrations.shift_exporter.user_error_banner_plural_html', { num_errors: num_errors, link: shiftExportAttemptsPath() })\n }\n\n if ($('#flash-messages .shift-exporter').length > 0) {\n $('#flash-messages .shift-exporter span').html(msg)\n } else {\n var div = \"
×\" + msg + '
'\n $('#flash-messages').append(div)\n }\n }\n\n var openModalWithSpinner = function (modalElement) {\n modalElement.html('
')\n modalElement.modal('show')\n msUtil.spinner('modal-loader')\n }\n\n var displayModalLoadError = function (modalElement) {\n modalElement.find('#modal-loader').html('Sorry, there was an issue getting this data.')\n }\n\n var shiftExportAttemptsPath = function (num_errors) {\n var url = config.routes.shiftExportAttemptsPath($('#publishStartDate').val())\n return \"\" + I18n.t('adp.shift_exporter.shift_sync_audit') + ''\n }\n\n var clearFlashShiftExportError = function (num_errors) {\n $('#flash-messages .shift-exporter').remove()\n }\n\n var updateShiftSyncAuditDates = function () {\n $('#shift_sync_audit').attr('href', config.routes.shiftExportAttemptsPath($('#publishStartDate').val()))\n }\n\n var shiftSyncAuditButtonWarn = function () {\n // add warnging sign to shift sync audit button\n $('#shift_sync_audit').html(\" \" + I18n.t('adp.shift_exporter.shift_sync_audit'))\n }\n\n var shiftSyncAuditButtonClear = function () {\n // remove warnging sign on shift sync audit button\n $('#shift_sync_audit i.fa-exclamation-triangle').remove()\n }\n\n var numFailedShifts = function () {\n return weekData.shifts.filter((shift) => {\n return shift.failed\n }).length\n }\n\n // ** END of methods for handling ShiftExportAttempts ** //\n // ******************************************************//\n\n // Enable or disable date navigation\n // We can end up with doubled/needless requests if people double-click\n // through the schedule. We disable navigation while the schedule loads,\n // then enable it again when loading is complete.\n var canDateNavigate = function (allow) {\n var disabled = !allow\n $('#previous-week').toggleClass('disabled', disabled)\n $('#next-week').toggleClass('disabled', disabled)\n $('#today').toggleClass('disabled', disabled)\n $('#toolbar-datepicker').toggleClass('disabled', disabled)\n }\n\n return {\n init: init,\n updateShiftRequirement: updateShiftRequirement,\n togglePublishButton: togglePublishButton,\n loadSchedule: loadSchedule,\n blockScheduleForProcessing: blockScheduleForProcessing,\n getCurrentRowPosition: getCurrentRowPosition,\n getBudgetMode: getBudgetMode,\n setBudgetMode: setBudgetMode\n }\n})(jQuery, window, document)\n\nwindow.departmentSchedule = departmentSchedule\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.CodeMirror = factory());\n})(this, function () {\n 'use strict'; // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent); // This is woefully incomplete. Suggestions for alternative methods welcome.\n\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n\n if (presto_version) {\n presto_version = Number(presto_version[1]);\n }\n\n if (presto_version && presto_version >= 15) {\n presto = false;\n webkit = true;\n } // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n\n\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || ie && ie_version >= 9;\n\n function classTest(cls) {\n return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n }\n\n var rmClass = function (node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count) {\n e.removeChild(e.firstChild);\n }\n\n return e;\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e);\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n\n if (className) {\n e.className = className;\n }\n\n if (style) {\n e.style.cssText = style;\n }\n\n if (typeof content == \"string\") {\n e.appendChild(document.createTextNode(content));\n } else if (content) {\n for (var i = 0; i < content.length; ++i) {\n e.appendChild(content[i]);\n }\n }\n\n return e;\n } // wrapper for elt, which removes the elt from the accessibility tree\n\n\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e;\n }\n\n var range;\n\n if (document.createRange) {\n range = function (node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r;\n };\n } else {\n range = function (node, start, end) {\n var r = document.body.createTextRange();\n\n try {\n r.moveToElementText(node.parentNode);\n } catch (e) {\n return r;\n }\n\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r;\n };\n }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n {\n child = child.parentNode;\n }\n\n if (parent.contains) {\n return parent.contains(child);\n }\n\n do {\n if (child.nodeType == 11) {\n child = child.host;\n }\n\n if (child == parent) {\n return true;\n }\n } while (child = child.parentNode);\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n\n try {\n activeElement = document.activeElement;\n } catch (e) {\n activeElement = document.body || null;\n }\n\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n return activeElement;\n }\n\n function addClass(node, cls) {\n var current = node.className;\n\n if (!classTest(cls).test(current)) {\n node.className += (current ? \" \" : \"\") + cls;\n }\n }\n\n function joinClasses(a, b) {\n var as = a.split(\" \");\n\n for (var i = 0; i < as.length; i++) {\n if (as[i] && !classTest(as[i]).test(b)) {\n b += \" \" + as[i];\n }\n }\n\n return b;\n }\n\n var selectInput = function (node) {\n node.select();\n };\n\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n {\n selectInput = function (node) {\n node.selectionStart = 0;\n node.selectionEnd = node.value.length;\n };\n } else if (ie) // Suppress mysterious IE10 errors\n {\n selectInput = function (node) {\n try {\n node.select();\n } catch (_e) {}\n };\n }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return f.apply(null, args);\n };\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) {\n target = {};\n }\n\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) {\n target[prop] = obj[prop];\n }\n }\n\n return target;\n } // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n\n\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n\n if (end == -1) {\n end = string.length;\n }\n }\n\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n\n if (nextTab < 0 || nextTab >= end) {\n return n + (end - i);\n }\n\n n += nextTab - i;\n n += tabSize - n % tabSize;\n i = nextTab + 1;\n }\n }\n\n var Delayed = function () {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n\n if (self.time <= +new Date()) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date());\n }\n };\n\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date() + ms;\n\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i) {\n if (array[i] == elt) {\n return i;\n }\n }\n\n return -1;\n } // Number of pixels added to scroller and sizer to hide scrollbar\n\n\n var scrollerGap = 50; // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n\n var Pass = {\n toString: function () {\n return \"CodeMirror.Pass\";\n }\n }; // Reused option objects for setSelection & friends\n\n var sel_dontScroll = {\n scroll: false\n },\n sel_mouse = {\n origin: \"*mouse\"\n },\n sel_move = {\n origin: \"+move\"\n }; // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n\n if (nextTab == -1) {\n nextTab = string.length;\n }\n\n var skipped = nextTab - pos;\n\n if (nextTab == string.length || col + skipped >= goal) {\n return pos + Math.min(skipped, goal - col);\n }\n\n col += nextTab - pos;\n col += tabSize - col % tabSize;\n pos = nextTab + 1;\n\n if (col >= goal) {\n return pos;\n }\n }\n }\n\n var spaceStrs = [\"\"];\n\n function spaceStr(n) {\n while (spaceStrs.length <= n) {\n spaceStrs.push(lst(spaceStrs) + \" \");\n }\n\n return spaceStrs[n];\n }\n\n function lst(arr) {\n return arr[arr.length - 1];\n }\n\n function map(array, f) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = f(array[i], i);\n }\n\n return out;\n }\n\n function insertSorted(array, value, score) {\n var pos = 0,\n priority = score(value);\n\n while (pos < array.length && score(array[pos]) <= priority) {\n pos++;\n }\n\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n\n if (props) {\n copyObj(props, inst);\n }\n\n return inst;\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n }\n\n function isWordChar(ch, helper) {\n if (!helper) {\n return isWordCharBasic(ch);\n }\n\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n return true;\n }\n\n return helper.test(ch);\n }\n\n function isEmpty(obj) {\n for (var n in obj) {\n if (obj.hasOwnProperty(n) && obj[n]) {\n return false;\n }\n }\n\n return true;\n } // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n\n\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n\n function isExtendingChar(ch) {\n return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n } // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n\n\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) {\n pos += dir;\n }\n\n return pos;\n } // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n\n\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n\n for (;;) {\n if (from == to) {\n return from;\n }\n\n var midF = (from + to) / 2,\n mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n\n if (mid == from) {\n return pred(mid) ? from : to;\n }\n\n if (pred(mid)) {\n to = mid;\n } else {\n from = mid + dir;\n }\n }\n } // BIDI HELPERS\n\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) {\n return f(from, to, \"ltr\", 0);\n }\n\n var found = false;\n\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n\n if (!found) {\n f(from, to, \"ltr\");\n }\n }\n\n var bidiOther = null;\n\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n\n if (cur.from < ch && cur.to > ch) {\n return i;\n }\n\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n }\n\n return found != null ? found : bidiOther;\n } // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n\n\n var bidiOrdering = function () {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\"; // Character types for codepoints 0x600 to 0x6f9\n\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n\n function charType(code) {\n if (code <= 0xf7) {\n return lowTypes.charAt(code);\n } else if (0x590 <= code && code <= 0x5f4) {\n return \"R\";\n } else if (0x600 <= code && code <= 0x6f9) {\n return arabicTypes.charAt(code - 0x600);\n } else if (0x6ee <= code && code <= 0x8ac) {\n return \"r\";\n } else if (0x2000 <= code && code <= 0x200b) {\n return \"w\";\n } else if (code == 0x200c) {\n return \"b\";\n } else {\n return \"L\";\n }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/,\n isStrong = /[LRr]/,\n countsAsLeft = /[Lb1n]/,\n countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from;\n this.to = to;\n }\n\n return function (str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) {\n return false;\n }\n\n var len = str.length,\n types = [];\n\n for (var i = 0; i < len; ++i) {\n types.push(charType(str.charCodeAt(i)));\n } // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n\n\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n\n if (type == \"m\") {\n types[i$1] = prev;\n } else {\n prev = type;\n }\n } // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n\n\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n\n if (type$1 == \"1\" && cur == \"r\") {\n types[i$2] = \"n\";\n } else if (isStrong.test(type$1)) {\n cur = type$1;\n\n if (type$1 == \"r\") {\n types[i$2] = \"R\";\n }\n }\n } // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n\n\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3 + 1] == \"1\") {\n types[i$3] = \"1\";\n } else if (type$2 == \",\" && prev$1 == types[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n types[i$3] = prev$1;\n }\n\n prev$1 = type$2;\n } // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n\n\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n\n if (type$3 == \",\") {\n types[i$4] = \"N\";\n } else if (type$3 == \"%\") {\n var end = void 0;\n\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n\n var replace = i$4 && types[i$4 - 1] == \"!\" || end < len && types[end] == \"1\" ? \"1\" : \"N\";\n\n for (var j = i$4; j < end; ++j) {\n types[j] = replace;\n }\n\n i$4 = end - 1;\n }\n } // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n\n\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n\n if (cur$1 == \"L\" && type$4 == \"1\") {\n types[i$5] = \"L\";\n } else if (isStrong.test(type$4)) {\n cur$1 = type$4;\n }\n } // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n\n\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = void 0;\n\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n\n var before = (i$6 ? types[i$6 - 1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? before ? \"L\" : \"R\" : outerType;\n\n for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n types[j$1] = replace$1;\n }\n\n i$6 = end$1 - 1;\n }\n } // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n\n\n var order = [],\n m;\n\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7,\n at = order.length,\n isRTL = direction == \"rtl\" ? 1 : 0;\n\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) {\n order.splice(at, 0, new BidiSpan(1, pos, j$2));\n at += isRTL;\n }\n\n var nstart = j$2;\n\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else {\n ++j$2;\n }\n }\n\n if (pos < i$7) {\n order.splice(at, 0, new BidiSpan(1, pos, i$7));\n }\n }\n }\n\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order;\n };\n }(); // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n\n\n function getOrder(line, direction) {\n var order = line.order;\n\n if (order == null) {\n order = line.order = bidiOrdering(line.text, direction);\n }\n\n return order;\n } // EVENT HANDLING\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n\n var noHandlers = [];\n\n var on = function (emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers;\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers,\n arr = map && map[type];\n\n if (arr) {\n var index = indexOf(arr, f);\n\n if (index > -1) {\n map[type] = arr.slice(0, index).concat(arr.slice(index + 1));\n }\n }\n }\n }\n\n function signal(emitter, type\n /*, values...*/\n ) {\n var handlers = getHandlers(emitter, type);\n\n if (!handlers.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2);\n\n for (var i = 0; i < handlers.length; ++i) {\n handlers[i].apply(null, args);\n }\n } // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n\n\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\") {\n e = {\n type: e,\n preventDefault: function () {\n this.defaultPrevented = true;\n }\n };\n }\n\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore;\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n\n if (!arr) {\n return;\n }\n\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n\n for (var i = 0; i < arr.length; ++i) {\n if (indexOf(set, arr[i]) == -1) {\n set.push(arr[i]);\n }\n }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0;\n } // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n\n\n function eventMixin(ctor) {\n ctor.prototype.on = function (type, f) {\n on(this, type, f);\n };\n\n ctor.prototype.off = function (type, f) {\n off(this, type, f);\n };\n } // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n\n function e_preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n\n function e_stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n }\n\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n }\n\n function e_stop(e) {\n e_preventDefault(e);\n e_stopPropagation(e);\n }\n\n function e_target(e) {\n return e.target || e.srcElement;\n }\n\n function e_button(e) {\n var b = e.which;\n\n if (b == null) {\n if (e.button & 1) {\n b = 1;\n } else if (e.button & 2) {\n b = 3;\n } else if (e.button & 4) {\n b = 2;\n }\n }\n\n if (mac && e.ctrlKey && b == 1) {\n b = 3;\n }\n\n return b;\n } // Detect drag-and-drop\n\n\n var dragAndDrop = function () {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) {\n return false;\n }\n\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div;\n }();\n\n var zwspSupported;\n\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n\n if (measure.firstChild.offsetHeight != 0) {\n zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n }\n }\n\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") : elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node;\n } // Feature-detect IE's crummy client rect reporting for bidi text\n\n\n var badBidiRects;\n\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) {\n return badBidiRects;\n }\n\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n\n if (!r0 || r0.left == r0.right) {\n return false;\n } // Safari returns null in some cases (#2780)\n\n\n return badBidiRects = r1.right - r0.right < 3;\n } // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n\n\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0,\n result = [],\n l = string.length;\n\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n\n if (nl == -1) {\n nl = string.length;\n }\n\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n\n return result;\n } : function (string) {\n return string.split(/\\r\\n?|\\n/);\n };\n var hasSelection = window.getSelection ? function (te) {\n try {\n return te.selectionStart != te.selectionEnd;\n } catch (e) {\n return false;\n }\n } : function (te) {\n var range;\n\n try {\n range = te.ownerDocument.selection.createRange();\n } catch (e) {}\n\n if (!range || range.parentElement() != te) {\n return false;\n }\n\n return range.compareEndPoints(\"StartToEnd\", range) != 0;\n };\n\n var hasCopyEvent = function () {\n var e = elt(\"div\");\n\n if (\"oncopy\" in e) {\n return true;\n }\n\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\";\n }();\n\n var badZoomedRects = null;\n\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) {\n return badZoomedRects;\n }\n\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n } // Known modes, by name and by MIME\n\n\n var modes = {},\n mimeModes = {}; // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n\n function defineMode(name, mode) {\n if (arguments.length > 2) {\n mode.dependencies = Array.prototype.slice.call(arguments, 2);\n }\n\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n } // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n\n\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n\n if (typeof found == \"string\") {\n found = {\n name: found\n };\n }\n\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\");\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\");\n }\n\n if (typeof spec == \"string\") {\n return {\n name: spec\n };\n } else {\n return spec || {\n name: \"null\"\n };\n }\n } // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n\n\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n\n if (!mfactory) {\n return getMode(options, \"text/plain\");\n }\n\n var modeObj = mfactory(options, spec);\n\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) {\n continue;\n }\n\n if (modeObj.hasOwnProperty(prop)) {\n modeObj[\"_\" + prop] = modeObj[prop];\n }\n\n modeObj[prop] = exts[prop];\n }\n }\n\n modeObj.name = spec.name;\n\n if (spec.helperType) {\n modeObj.helperType = spec.helperType;\n }\n\n if (spec.modeProps) {\n for (var prop$1 in spec.modeProps) {\n modeObj[prop$1] = spec.modeProps[prop$1];\n }\n }\n\n return modeObj;\n } // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n\n\n var modeExtensions = {};\n\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : modeExtensions[mode] = {};\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) {\n return state;\n }\n\n if (mode.copyState) {\n return mode.copyState(state);\n }\n\n var nstate = {};\n\n for (var n in state) {\n var val = state[n];\n\n if (val instanceof Array) {\n val = val.concat([]);\n }\n\n nstate[n] = val;\n }\n\n return nstate;\n } // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n\n\n function innerMode(mode, state) {\n var info;\n\n while (mode.innerMode) {\n info = mode.innerMode(state);\n\n if (!info || info.mode == mode) {\n break;\n }\n\n state = info.state;\n mode = info.mode;\n }\n\n return info || {\n mode: mode,\n state: state\n };\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true;\n } // STRING STREAM\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n\n var StringStream = function (string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {\n return this.pos >= this.string.length;\n };\n\n StringStream.prototype.sol = function () {\n return this.pos == this.lineStart;\n };\n\n StringStream.prototype.peek = function () {\n return this.string.charAt(this.pos) || undefined;\n };\n\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length) {\n return this.string.charAt(this.pos++);\n }\n };\n\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n\n if (typeof match == \"string\") {\n ok = ch == match;\n } else {\n ok = ch && (match.test ? match.test(ch) : match(ch));\n }\n\n if (ok) {\n ++this.pos;\n return ch;\n }\n };\n\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n\n while (this.eat(match)) {}\n\n return this.pos > start;\n };\n\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) {\n ++this.pos;\n }\n\n return this.pos > start;\n };\n\n StringStream.prototype.skipToEnd = function () {\n this.pos = this.string.length;\n };\n\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n\n if (found > -1) {\n this.pos = found;\n return true;\n }\n };\n\n StringStream.prototype.backUp = function (n) {\n this.pos -= n;\n };\n\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) {\n return caseInsensitive ? str.toLowerCase() : str;\n };\n\n var substr = this.string.substr(this.pos, pattern.length);\n\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) {\n this.pos += pattern.length;\n }\n\n return true;\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n\n if (match && match.index > 0) {\n return null;\n }\n\n if (match && consume !== false) {\n this.pos += match[0].length;\n }\n\n return match;\n }\n };\n\n StringStream.prototype.current = function () {\n return this.string.slice(this.start, this.pos);\n };\n\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n\n try {\n return inner();\n } finally {\n this.lineStart -= n;\n }\n };\n\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n);\n };\n\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos);\n }; // Find the line object corresponding to the given line number.\n\n\n function getLine(doc, n) {\n n -= doc.first;\n\n if (n < 0 || n >= doc.size) {\n throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n }\n\n var chunk = doc;\n\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i],\n sz = child.chunkSize();\n\n if (n < sz) {\n chunk = child;\n break;\n }\n\n n -= sz;\n }\n }\n\n return chunk.lines[n];\n } // Get the part of a document between two positions, as an array of\n // strings.\n\n\n function getBetween(doc, start, end) {\n var out = [],\n n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n\n if (n == end.line) {\n text = text.slice(0, end.ch);\n }\n\n if (n == start.line) {\n text = text.slice(start.ch);\n }\n\n out.push(text);\n ++n;\n });\n return out;\n } // Get the lines between from and to, as array of strings.\n\n\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) {\n out.push(line.text);\n }); // iter aborts when callback returns truthy value\n\n return out;\n } // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n\n\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n\n if (diff) {\n for (var n = line; n; n = n.parent) {\n n.height += diff;\n }\n }\n } // Given a line object, find its line number by walking up through\n // its parent links.\n\n\n function lineNo(line) {\n if (line.parent == null) {\n return null;\n }\n\n var cur = line.parent,\n no = indexOf(cur.lines, line);\n\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) {\n break;\n }\n\n no += chunk.children[i].chunkSize();\n }\n }\n\n return no + cur.first;\n } // Find the line at the given vertical position, using the height\n // information in the document tree.\n\n\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1],\n ch = child.height;\n\n if (h < ch) {\n chunk = child;\n continue outer;\n }\n\n h -= ch;\n n += child.chunkSize();\n }\n\n return n;\n } while (!chunk.lines);\n\n var i = 0;\n\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i],\n lh = line.height;\n\n if (h < lh) {\n break;\n }\n\n h -= lh;\n }\n\n return n + i;\n }\n\n function isLine(doc, l) {\n return l >= doc.first && l < doc.first + doc.size;\n }\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber));\n } // A Pos instance represents a position within the text.\n\n\n function Pos(line, ch, sticky) {\n if (sticky === void 0) sticky = null;\n\n if (!(this instanceof Pos)) {\n return new Pos(line, ch, sticky);\n }\n\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n } // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n\n\n function cmp(a, b) {\n return a.line - b.line || a.ch - b.ch;\n }\n\n function equalCursorPos(a, b) {\n return a.sticky == b.sticky && cmp(a, b) == 0;\n }\n\n function copyPos(x) {\n return Pos(x.line, x.ch);\n }\n\n function maxPos(a, b) {\n return cmp(a, b) < 0 ? b : a;\n }\n\n function minPos(a, b) {\n return cmp(a, b) < 0 ? a : b;\n } // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n\n\n function clipLine(doc, n) {\n return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n }\n\n function clipPos(doc, pos) {\n if (pos.line < doc.first) {\n return Pos(doc.first, 0);\n }\n\n var last = doc.first + doc.size - 1;\n\n if (pos.line > last) {\n return Pos(last, getLine(doc, last).text.length);\n }\n\n return clipToLen(pos, getLine(doc, pos.line).text.length);\n }\n\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n\n if (ch == null || ch > linelen) {\n return Pos(pos.line, linelen);\n } else if (ch < 0) {\n return Pos(pos.line, 0);\n } else {\n return pos;\n }\n }\n\n function clipPosArray(doc, array) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = clipPos(doc, array[i]);\n }\n\n return out;\n }\n\n var SavedContext = function (state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function (doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n\n if (line != null && n > this.maxLookAhead) {\n this.maxLookAhead = n;\n }\n\n return line;\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) {\n return null;\n }\n\n while (this.baseTokens[this.baseTokenPos] <= n) {\n this.baseTokenPos += 2;\n }\n\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {\n type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n\n };\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n\n if (this.maxLookAhead > 0) {\n this.maxLookAhead--;\n }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext) {\n return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n } else {\n return new Context(doc, copyState(doc.mode, saved), line);\n }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state;\n }; // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n\n\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen],\n lineClasses = {}; // Compute the base array of styles\n\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) {\n return st.push(end, style);\n }, lineClasses, forceToEnd);\n var state = context.state; // Run overlays, adjust style array.\n\n var loop = function (o) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o],\n i = 1,\n at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i; // Ensure there's a token end at the current position, and that i points at it\n\n while (at < end) {\n var i_end = st[i];\n\n if (i_end > end) {\n st.splice(i, 1, end, st[i + 1], i_end);\n }\n\n i += 2;\n at = Math.min(end, i_end);\n }\n\n if (!style) {\n return;\n }\n\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start + 1];\n st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop(o);\n\n return {\n styles: st,\n classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null\n };\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n\n if (result.classes) {\n line.styleClasses = result.classes;\n } else if (line.styleClasses) {\n line.styleClasses = null;\n }\n\n if (updateFrontier === cm.doc.highlightFrontier) {\n cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n }\n }\n\n return line.styles;\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc,\n display = cm.display;\n\n if (!doc.mode.startState) {\n return new Context(doc, true, n);\n }\n\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n\n if (precise) {\n doc.modeFrontier = context.line;\n }\n\n return context;\n } // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n\n\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n\n if (text == \"\") {\n callBlankLine(mode, context.state);\n }\n\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) {\n return mode.blankLine(state);\n }\n\n if (!mode.innerMode) {\n return;\n }\n\n var inner = innerMode(mode, state);\n\n if (inner.mode.blankLine) {\n return inner.mode.blankLine(inner.state);\n }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) {\n inner[0] = innerMode(mode, state).mode;\n }\n\n var style = mode.token(stream, state);\n\n if (stream.pos > stream.start) {\n return style;\n }\n }\n\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n }\n\n var Token = function (stream, type, state) {\n this.start = stream.start;\n this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n }; // Utility for getTokenAt and getLineTokens\n\n\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc,\n mode = doc.mode,\n style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line),\n context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context),\n tokens;\n\n if (asArray) {\n tokens = [];\n }\n\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n\n if (asArray) {\n tokens.push(new Token(stream, style, copyState(doc.mode, context.state)));\n }\n }\n\n return asArray ? tokens : new Token(stream, style, context.state);\n }\n\n function extractLineClasses(type, output) {\n if (type) {\n for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n\n if (!lineClass) {\n break;\n }\n\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n\n if (output[prop] == null) {\n output[prop] = lineClass[2];\n } else if (!new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\").test(output[prop])) {\n output[prop] += \" \" + lineClass[2];\n }\n }\n }\n\n return type;\n } // Run the given mode's parser over a line, calling f for each token.\n\n\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n\n if (flattenSpans == null) {\n flattenSpans = cm.options.flattenSpans;\n }\n\n var curStart = 0,\n curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context),\n style;\n var inner = cm.options.addModeClass && [null];\n\n if (text == \"\") {\n extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n }\n\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n\n if (forceToEnd) {\n processLine(cm, text, context, stream.pos);\n }\n\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n\n if (inner) {\n var mName = inner[0].name;\n\n if (mName) {\n style = \"m-\" + (style ? mName + \" \" + style : mName);\n }\n }\n\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n\n curStyle = style;\n }\n\n stream.start = stream.pos;\n }\n\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n } // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n\n\n function findStartLine(cm, n, precise) {\n var minindent,\n minline,\n doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) {\n return doc.first;\n }\n\n var line = getLine(doc, search - 1),\n after = line.stateAfter;\n\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n return search;\n }\n\n var indented = countColumn(line.text, null, cm.options.tabSize);\n\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n\n return minline;\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n\n if (doc.highlightFrontier < n - 10) {\n return;\n }\n\n var start = doc.first;\n\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter; // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break;\n }\n }\n\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n } // Optimize some code when these features are not used.\n\n\n var sawReadOnlySpans = false,\n sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n } // TEXTMARKER SPANS\n\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from;\n this.to = to;\n } // Search an array of spans for a span matching the given marker.\n\n\n function getMarkedSpanFor(spans, marker) {\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.marker == marker) {\n return span;\n }\n }\n }\n } // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n\n\n function removeMarkedSpan(spans, span) {\n var r;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i] != span) {\n (r || (r = [])).push(spans[i]);\n }\n }\n\n return r;\n } // Add a span to a line.\n\n\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet()));\n\n if (inThisOp && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n\n if (inThisOp) {\n inThisOp.add(line.markedSpans);\n }\n }\n\n span.marker.attachLine(line);\n } // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n\n\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n }\n }\n\n return nw;\n }\n\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, span.to == null ? null : span.to - endCh));\n }\n }\n }\n\n return nw;\n } // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n\n\n function stretchSpansOverChange(doc, change) {\n if (change.full) {\n return null;\n }\n\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n\n if (!oldFirst && !oldLast) {\n return null;\n }\n\n var startCh = change.from.ch,\n endCh = change.to.ch,\n isInsert = cmp(change.from, change.to) == 0; // Get the spans that 'stick out' on both sides\n\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert); // Next, merge those two ends\n\n var sameLine = change.text.length == 1,\n offset = lst(change.text).length + (sameLine ? startCh : 0);\n\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n\n if (!found) {\n span.to = startCh;\n } else if (sameLine) {\n span.to = found.to == null ? null : found.to + offset;\n }\n }\n }\n }\n\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n\n if (span$1.to != null) {\n span$1.to += offset;\n }\n\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n\n if (!found$1) {\n span$1.from = offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n } else {\n span$1.from += offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n }\n } // Make sure we didn't create any zero-length spans\n\n\n if (first) {\n first = clearEmptySpans(first);\n }\n\n if (last && last != first) {\n last = clearEmptySpans(last);\n }\n\n var newMarkers = [first];\n\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2,\n gapMarkers;\n\n if (gap > 0 && first) {\n for (var i$2 = 0; i$2 < first.length; ++i$2) {\n if (first[i$2].to == null) {\n (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null));\n }\n }\n }\n\n for (var i$3 = 0; i$3 < gap; ++i$3) {\n newMarkers.push(gapMarkers);\n }\n\n newMarkers.push(last);\n }\n\n return newMarkers;\n } // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n\n\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n spans.splice(i--, 1);\n }\n }\n\n if (!spans.length) {\n return null;\n }\n\n return spans;\n } // Used to 'clip' out readOnly ranges when making a change.\n\n\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {\n (markers || (markers = [])).push(mark);\n }\n }\n }\n });\n\n if (!markers) {\n return null;\n }\n\n var parts = [{\n from: from,\n to: to\n }];\n\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i],\n m = mk.find(0);\n\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {\n continue;\n }\n\n var newParts = [j, 1],\n dfrom = cmp(p.from, m.from),\n dto = cmp(p.to, m.to);\n\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n newParts.push({\n from: p.from,\n to: m.from\n });\n }\n\n if (dto > 0 || !mk.inclusiveRight && !dto) {\n newParts.push({\n from: m.to,\n to: p.to\n });\n }\n\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n\n return parts;\n } // Connect or disconnect spans from a line.\n\n\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.detachLine(line);\n }\n\n line.markedSpans = null;\n }\n\n function attachMarkedSpans(line, spans) {\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.attachLine(line);\n }\n\n line.markedSpans = spans;\n } // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n\n\n function extraLeft(marker) {\n return marker.inclusiveLeft ? -1 : 0;\n }\n\n function extraRight(marker) {\n return marker.inclusiveRight ? 1 : 0;\n } // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n\n\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n\n if (lenDiff != 0) {\n return lenDiff;\n }\n\n var aPos = a.find(),\n bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n\n if (fromCmp) {\n return -fromCmp;\n }\n\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n\n if (toCmp) {\n return toCmp;\n }\n\n return b.id - a.id;\n } // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n\n\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n }\n\n function collapsedSpanAtStart(line) {\n return collapsedSpanAtSide(line, true);\n }\n\n function collapsedSpanAtEnd(line) {\n return collapsedSpanAtSide(line, false);\n }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n } // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n\n\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) {\n continue;\n }\n\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) {\n return true;\n }\n }\n }\n } // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n\n\n function visualLine(line) {\n var merged;\n\n while (merged = collapsedSpanAtStart(line)) {\n line = merged.find(-1, true).line;\n }\n\n return line;\n }\n\n function visualLineEnd(line) {\n var merged;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return line;\n } // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n\n\n function visualLineContinued(line) {\n var merged, lines;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n (lines || (lines = [])).push(line);\n }\n\n return lines;\n } // Get the line number of the start of the visual line that the\n // given line number is part of.\n\n\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN),\n vis = visualLine(line);\n\n if (line == vis) {\n return lineN;\n }\n\n return lineNo(vis);\n } // Get the line number of the start of the next visual line after\n // the given line.\n\n\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) {\n return lineN;\n }\n\n var line = getLine(doc, lineN),\n merged;\n\n if (!lineIsHidden(doc, line)) {\n return lineN;\n }\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return lineNo(line) + 1;\n } // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n\n\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n if (sp.from == null) {\n return true;\n }\n\n if (sp.marker.widgetNode) {\n continue;\n }\n\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\n }\n\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n }\n\n if (span.marker.inclusiveRight && span.to == line.text.length) {\n return true;\n }\n\n for (var sp = void 0, i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n } // Find the height above the given line.\n\n\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n var h = 0,\n chunk = lineObj.parent;\n\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n\n if (line == lineObj) {\n break;\n } else {\n h += line.height;\n }\n }\n\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n\n if (cur == chunk) {\n break;\n } else {\n h += cur.height;\n }\n }\n }\n\n return h;\n } // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n\n\n function lineLength(line) {\n if (line.height == 0) {\n return 0;\n }\n\n var len = line.text.length,\n merged,\n cur = line;\n\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n\n cur = line;\n\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n\n return len;\n } // Find the longest line in the document.\n\n\n function findMaxLine(cm) {\n var d = cm.display,\n doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n } // LINE DATA STRUCTURE\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n\n\n var Line = function (text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () {\n return lineNo(this);\n };\n\n eventMixin(Line); // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n\n if (line.order != null) {\n line.order = null;\n }\n\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n } // Detach a line from the document tree and its markers.\n\n\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n } // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n\n\n var styleToClassCache = {},\n styleToClassCacheWithMode = {};\n\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) {\n return null;\n }\n\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n } // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n\n\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {\n pre: eltP(\"pre\", [content], \"CodeMirror-line\"),\n content: content,\n col: 0,\n pos: 0,\n cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")\n };\n lineView.measure = {}; // Iterate over the logical lines that make up this visual line.\n\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line,\n order = void 0;\n builder.pos = 0;\n builder.addToken = buildToken; // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) {\n builder.addToken = buildTokenBadBidi(builder.addToken, order);\n }\n\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n\n if (line.styleClasses) {\n if (line.styleClasses.bgClass) {\n builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n }\n\n if (line.styleClasses.textClass) {\n builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n }\n } // Ensure at least a single node is present, for measuring.\n\n\n if (builder.map.length == 0) {\n builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n } // Store the map and a cache object for the current logical line\n\n\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n } // See issue #2901\n\n\n if (webkit) {\n var last = builder.content.lastChild;\n\n if (/\\bcm-tab\\b/.test(last.className) || last.querySelector && last.querySelector(\".cm-tab\")) {\n builder.content.className = \"cm-tab-wrap-hack\";\n }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n\n if (builder.pre.className) {\n builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n }\n\n return builder;\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token;\n } // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n\n\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) {\n return;\n }\n\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars,\n mustWrap = false;\n var content;\n\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n\n if (ie && ie_version < 9) {\n mustWrap = true;\n }\n\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt]));\n } else {\n content.appendChild(txt);\n }\n\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n\n if (!m) {\n break;\n }\n\n pos += skipped + 1;\n var txt$1 = void 0;\n\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize,\n tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt$1]));\n } else {\n content.appendChild(txt$1);\n }\n\n builder.col += 1;\n }\n\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n\n if (startStyle) {\n fullStyle += startStyle;\n }\n\n if (endStyle) {\n fullStyle += endStyle;\n }\n\n var token = elt(\"span\", [content], fullStyle, css);\n\n if (attributes) {\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") {\n token.setAttribute(attr, attributes[attr]);\n }\n }\n }\n\n return builder.content.appendChild(token);\n }\n\n builder.content.appendChild(content);\n } // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n\n\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) {\n return text;\n }\n\n var spaceBefore = trailingBefore,\n result = \"\";\n\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) {\n ch = \"\\u00a0\";\n }\n\n result += ch;\n spaceBefore = ch == \" \";\n }\n\n return result;\n } // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n\n\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos,\n end = start + text.length;\n\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = void 0;\n\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n\n if (part.to > start && part.from <= start) {\n break;\n }\n }\n\n if (part.to >= end) {\n return inner(builder, text, style, startStyle, endStyle, css, attributes);\n }\n\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n };\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n\n if (widget) {\n builder.map.push(builder.pos, builder.pos + size, widget);\n }\n\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget) {\n widget = builder.content.appendChild(document.createElement(\"span\"));\n }\n\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n\n builder.pos += size;\n builder.trailingSpace = false;\n } // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n\n\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans,\n allText = line.text,\n at = 0;\n\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1 += 2) {\n builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1 + 1], builder.cm.options));\n }\n\n return;\n }\n\n var len = allText.length,\n pos = 0,\n i = 1,\n text = \"\",\n style,\n css;\n var nextChange = 0,\n spanStyle,\n spanEndStyle,\n spanStartStyle,\n collapsed,\n attributes;\n\n for (;;) {\n if (nextChange == pos) {\n // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null;\n nextChange = Infinity;\n var foundBookmarks = [],\n endStyles = void 0;\n\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j],\n m = sp.marker;\n\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n\n if (m.className) {\n spanStyle += \" \" + m.className;\n }\n\n if (m.css) {\n css = (css ? css + \";\" : \"\") + m.css;\n }\n\n if (m.startStyle && sp.from == pos) {\n spanStartStyle += \" \" + m.startStyle;\n }\n\n if (m.endStyle && sp.to == nextChange) {\n (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n } // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n\n\n if (m.title) {\n (attributes || (attributes = {})).title = m.title;\n }\n\n if (m.attributes) {\n for (var attr in m.attributes) {\n (attributes || (attributes = {}))[attr] = m.attributes[attr];\n }\n }\n\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n collapsed = sp;\n }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n\n if (endStyles) {\n for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n if (endStyles[j$1 + 1] == nextChange) {\n spanEndStyle += \" \" + endStyles[j$1];\n }\n }\n }\n\n if (!collapsed || collapsed.from == pos) {\n for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n }\n }\n\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null);\n\n if (collapsed.to == null) {\n return;\n }\n\n if (collapsed.to == pos) {\n collapsed = false;\n }\n }\n }\n\n if (pos >= len) {\n break;\n }\n\n var upto = Math.min(len, nextChange);\n\n while (true) {\n if (text) {\n var end = pos + text.length;\n\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n\n if (end >= upto) {\n text = text.slice(upto - pos);\n pos = upto;\n break;\n }\n\n pos = end;\n spanStartStyle = \"\";\n }\n\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n } // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n\n\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line; // Continuing lines, if any\n\n this.rest = visualLineContinued(line); // Number of logical lines in this visual line\n\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n } // Create a range of LineView objects for the given lines.\n\n\n function buildViewArray(cm, from, to) {\n var array = [],\n nextPos;\n\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n\n return array;\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks,\n i = 0;\n\n do {\n for (; i < callbacks.length; i++) {\n callbacks[i].call(null);\n }\n\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n\n if (op.cursorActivityHandlers) {\n while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n }\n }\n }\n } while (i < callbacks.length);\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n\n if (!group) {\n return;\n }\n\n try {\n fireCallbacksForOps(group);\n } finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null; // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n\n function signalLater(emitter, type\n /*, values...*/\n ) {\n var arr = getHandlers(emitter, type);\n\n if (!arr.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2),\n list;\n\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n\n var loop = function (i) {\n list.push(function () {\n return arr[i].apply(null, args);\n });\n };\n\n for (var i = 0; i < arr.length; ++i) loop(i);\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n\n for (var i = 0; i < delayed.length; ++i) {\n delayed[i]();\n }\n } // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n\n\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n\n if (type == \"text\") {\n updateLineText(cm, lineView);\n } else if (type == \"gutter\") {\n updateLineGutter(cm, lineView, lineN, dims);\n } else if (type == \"class\") {\n updateLineClasses(cm, lineView);\n } else if (type == \"widget\") {\n updateLineWidgets(cm, lineView, dims);\n }\n }\n\n lineView.changes = null;\n } // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n\n\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n\n if (lineView.text.parentNode) {\n lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n }\n\n lineView.node.appendChild(lineView.text);\n\n if (ie && ie_version < 8) {\n lineView.node.style.zIndex = 2;\n }\n }\n\n return lineView.node;\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n\n if (cls) {\n cls += \" CodeMirror-linebackground\";\n }\n\n if (lineView.background) {\n if (cls) {\n lineView.background.className = cls;\n } else {\n lineView.background.parentNode.removeChild(lineView.background);\n lineView.background = null;\n }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n } // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n\n\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built;\n }\n\n return buildLineContent(cm, lineView);\n } // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n\n\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n\n if (lineView.text == lineView.node) {\n lineView.node = built.pre;\n }\n\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n\n if (lineView.line.wrapClass) {\n ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n } else if (lineView.node != lineView.text) {\n lineView.node.className = \"\";\n }\n\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass, \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + dims.gutterTotalWidth + \"px\");\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n\n var markers = lineView.line.gutterMarkers;\n\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\");\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n\n if (lineView.line.gutterClass) {\n gutterWrap.className += \" \" + lineView.line.gutterClass;\n }\n\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n lineView.lineNumber = gutterWrap.appendChild(elt(\"div\", lineNumberFor(cm.options, lineN), \"CodeMirror-linenumber CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \" + cm.display.lineNumInnerWidth + \"px\"));\n }\n\n if (markers) {\n for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className,\n found = markers.hasOwnProperty(id) && markers[id];\n\n if (found) {\n gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n }\n }\n }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) {\n lineView.alignable = null;\n }\n\n var isWidget = classTest(\"CodeMirror-linewidget\");\n\n for (var node = lineView.node.firstChild, next = void 0; node; node = next) {\n next = node.nextSibling;\n\n if (isWidget.test(node.className)) {\n lineView.node.removeChild(node);\n }\n }\n\n insertLineWidgets(cm, lineView, dims);\n } // Build a line's DOM representation from scratch\n\n\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n\n if (built.bgClass) {\n lineView.bgClass = built.bgClass;\n }\n\n if (built.textClass) {\n lineView.textClass = built.textClass;\n }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node;\n } // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n\n\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);\n }\n }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) {\n return;\n }\n\n var wrap = ensureLineWrapped(lineView);\n\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i],\n node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n\n if (!widget.handleMouseEvents) {\n node.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n\n if (allowAbove && widget.above) {\n wrap.insertBefore(node, lineView.gutter || lineView.text);\n } else {\n wrap.appendChild(node);\n }\n\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n\n node.style.width = width + \"px\";\n }\n\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n\n if (!widget.noHScroll) {\n node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) {\n return widget.height;\n }\n\n var cm = widget.doc.cm;\n\n if (!cm) {\n return 0;\n }\n\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n\n if (widget.coverGutter) {\n parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n }\n\n if (widget.noHScroll) {\n parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n }\n\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n\n return widget.height = widget.node.parentNode.offsetHeight;\n } // Return true when the given mouse event happened in a widget\n\n\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\" || n.parentNode == display.sizer && n != display.mover) {\n return true;\n }\n }\n } // POSITION MEASUREMENT\n\n\n function paddingTop(display) {\n return display.lineSpace.offsetTop;\n }\n\n function paddingVert(display) {\n return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n }\n\n function paddingH(display) {\n if (display.cachedPaddingH) {\n return display.cachedPaddingH;\n }\n\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight)\n };\n\n if (!isNaN(data.left) && !isNaN(data.right)) {\n display.cachedPaddingH = data;\n }\n\n return data;\n }\n\n function scrollGap(cm) {\n return scrollerGap - cm.display.nativeBarWidth;\n }\n\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n }\n\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\n } // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n\n\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i],\n next = rects[i + 1];\n\n if (Math.abs(cur.bottom - next.bottom) > 2) {\n heights.push((cur.bottom + next.top) / 2 - rect.top);\n }\n }\n }\n\n heights.push(rect.bottom - rect.top);\n }\n } // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n\n\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line) {\n return {\n map: lineView.measure.map,\n cache: lineView.measure.cache\n };\n }\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n if (lineView.rest[i] == line) {\n return {\n map: lineView.measure.maps[i],\n cache: lineView.measure.caches[i]\n };\n }\n }\n\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) {\n if (lineNo(lineView.rest[i$1]) > lineN) {\n return {\n map: lineView.measure.maps[i$1],\n cache: lineView.measure.caches[i$1],\n before: true\n };\n }\n }\n }\n } // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n\n\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view;\n } // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n\n\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n } // Find a line view that corresponds to the given line number.\n\n\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n return cm.display.view[findViewIndex(cm, lineN)];\n }\n\n var ext = cm.display.externalMeasured;\n\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n return ext;\n }\n } // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n\n\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n\n if (!view) {\n view = updateExternalMeasurement(cm, line);\n }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line,\n view: view,\n rect: null,\n map: info.map,\n cache: info.cache,\n before: info.before,\n hasHeights: false\n };\n } // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n\n\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) {\n ch = -1;\n }\n\n var key = ch + (bias || \"\"),\n found;\n\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect) {\n prepared.rect = prepared.view.text.getBoundingClientRect();\n }\n\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n\n found = measureCharInner(cm, prepared, ch, bias);\n\n if (!found.bogus) {\n prepared.cache[key] = found;\n }\n }\n\n return {\n left: found.left,\n right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom\n };\n }\n\n var nullRect = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd; // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n\n if (ch < mStart) {\n start = 0;\n end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n\n if (ch >= mEnd) {\n collapse = \"right\";\n }\n }\n\n if (start != null) {\n node = map[i + 2];\n\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n collapse = bias;\n }\n\n if (bias == \"left\" && start == 0) {\n while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n }\n }\n\n if (bias == \"right\" && start == mEnd - mStart) {\n while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n }\n }\n\n break;\n }\n }\n\n return {\n node: node,\n start: start,\n end: end,\n collapse: collapse,\n coverStart: mStart,\n coverEnd: mEnd\n };\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n\n if (bias == \"left\") {\n for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) {\n break;\n }\n }\n } else {\n for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) {\n break;\n }\n }\n }\n\n return rect;\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node,\n start = place.start,\n end = place.end,\n collapse = place.collapse;\n var rect;\n\n if (node.nodeType == 3) {\n // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) {\n // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n --start;\n }\n\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n ++end;\n }\n\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n rect = node.parentNode.getBoundingClientRect();\n } else {\n rect = getUsefulRect(range(node, start, end).getClientRects(), bias);\n }\n\n if (rect.left || rect.right || start == 0) {\n break;\n }\n\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n\n if (ie && ie_version < 11) {\n rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n }\n } else {\n // If it is a widget, simply get the box for the whole widget.\n if (start > 0) {\n collapse = bias = \"right\";\n }\n\n var rects;\n\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) {\n rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n } else {\n rect = node.getBoundingClientRect();\n }\n }\n\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n\n if (rSpan) {\n rect = {\n left: rSpan.left,\n right: rSpan.left + charWidth(cm.display),\n top: rSpan.top,\n bottom: rSpan.bottom\n };\n } else {\n rect = nullRect;\n }\n }\n\n var rtop = rect.top - prepared.rect.top,\n rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n\n for (; i < heights.length - 1; i++) {\n if (mid < heights[i]) {\n break;\n }\n }\n\n var top = i ? heights[i - 1] : 0,\n bot = heights[i];\n var result = {\n left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top,\n bottom: bot\n };\n\n if (!rect.left && !rect.right) {\n result.bogus = true;\n }\n\n if (!cm.options.singleCursorHeightPerLine) {\n result.rtop = rtop;\n result.rbottom = rbot;\n }\n\n return result;\n } // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n\n\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n return rect;\n }\n\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {\n left: rect.left * scaleX,\n right: rect.right * scaleX,\n top: rect.top * scaleY,\n bottom: rect.bottom * scaleY\n };\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n lineView.measure.caches[i] = {};\n }\n }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n\n for (var i = 0; i < cm.display.view.length; i++) {\n clearLineMeasurementCacheFor(cm.display.view[i]);\n }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n\n if (!cm.options.lineWrapping) {\n cm.display.maxLineChanged = true;\n }\n\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n }\n\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n }\n\n function pageScrollY() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n }\n\n return window.pageYOffset || (document.documentElement || document.body).scrollTop;\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n\n if (widgets) {\n for (var i = 0; i < widgets.length; ++i) {\n if (widgets[i].above) {\n height += widgetHeight(widgets[i]);\n }\n }\n }\n\n return height;\n } // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n\n\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height;\n rect.bottom += height;\n }\n\n if (context == \"line\") {\n return rect;\n }\n\n if (!context) {\n context = \"local\";\n }\n\n var yOff = heightAtLine(lineObj);\n\n if (context == \"local\") {\n yOff += paddingTop(cm.display);\n } else {\n yOff -= cm.display.viewOffset;\n }\n\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff;\n rect.right += xOff;\n }\n\n rect.top += yOff;\n rect.bottom += yOff;\n return rect;\n } // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n\n\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") {\n return coords;\n }\n\n var left = coords.left,\n top = coords.top; // First move into \"page\" coordinate system\n\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {\n left: left - lineSpaceBox.left,\n top: top - lineSpaceBox.top\n };\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) {\n lineObj = getLine(cm.doc, pos.line);\n }\n\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n } // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n\n\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n\n if (right) {\n m.left = m.right;\n } else {\n m.right = m.left;\n }\n\n return intoCoordSystem(cm, lineObj, m, context);\n }\n\n var order = getOrder(lineObj, cm.doc.direction),\n ch = pos.ch,\n sticky = pos.sticky;\n\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n\n if (!order) {\n return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos],\n right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert);\n }\n\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n\n if (other != null) {\n val.other = getBidi(ch, other, sticky != \"before\");\n }\n\n return val;\n } // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n\n\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n\n if (!cm.options.lineWrapping) {\n left = charWidth(cm.display) * pos.ch;\n }\n\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {\n left: left,\n right: left,\n top: top,\n bottom: top + lineObj.height\n };\n } // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n\n\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n\n if (outside) {\n pos.outside = outside;\n }\n\n return pos;\n } // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n\n\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n\n if (y < 0) {\n return PosWithInfo(doc.first, 0, null, -1, -1);\n }\n\n var lineN = lineAtHeight(doc, y),\n last = doc.first + doc.size - 1;\n\n if (lineN > last) {\n return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n }\n\n if (x < 0) {\n x = 0;\n }\n\n var lineObj = getLine(doc, lineN);\n\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n\n if (!collapsed) {\n return found;\n }\n\n var rangeEnd = collapsed.find(1);\n\n if (rangeEnd.line == lineN) {\n return rangeEnd;\n }\n\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n }, end, 0);\n end = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n }, begin, end);\n return {\n begin: begin,\n end: end\n };\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\n } // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n\n\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x;\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj); // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0,\n end = lineObj.text.length,\n ltr = true;\n var order = getOrder(lineObj, cm.doc.direction); // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)(cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1; // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n } // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n\n\n var chAround = null,\n boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight;\n box.bottom += widgetHeight;\n\n if (!boxIsAfter(box, x, y, false)) {\n return false;\n }\n\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n\n return true;\n }, begin, end);\n var baseX,\n sticky,\n outside = false; // If a box around the coordinates was found, use that\n\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x,\n atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) {\n ch++;\n } // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n\n\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y == ltr ? \"after\" : \"before\"; // Now get accurate coordinates for this place, in order to get a\n // base X position\n\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX);\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i],\n ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"), \"line\", lineObj, preparedMeasure), x, y, true);\n }, 0, order.length - 1);\n var part = order[index]; // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"), \"line\", lineObj, preparedMeasure);\n\n if (boxIsAfter(start, x, y, true) && start.top > y) {\n part = order[index - 1];\n }\n }\n\n return part;\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n\n if (/\\s/.test(lineObj.text.charAt(end - 1))) {\n end--;\n }\n\n var part = null,\n closestDist = null;\n\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n\n if (p.from >= end || p.to <= begin) {\n continue;\n }\n\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right; // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n\n if (!part) {\n part = order[order.length - 1];\n } // Clip the part to the wrapped line.\n\n\n if (part.from < begin) {\n part = {\n from: begin,\n to: part.to,\n level: part.level\n };\n }\n\n if (part.to > end) {\n part = {\n from: part.from,\n to: end,\n level: part.level\n };\n }\n\n return part;\n }\n\n var measureText; // Compute the default text height.\n\n function textHeight(display) {\n if (display.cachedTextHeight != null) {\n return display.cachedTextHeight;\n }\n\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\"); // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n\n if (height > 3) {\n display.cachedTextHeight = height;\n }\n\n removeChildren(display.measure);\n return height || 1;\n } // Compute the default character width.\n\n\n function charWidth(display) {\n if (display.cachedCharWidth != null) {\n return display.cachedCharWidth;\n }\n\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(),\n width = (rect.right - rect.left) / 10;\n\n if (width > 2) {\n display.cachedCharWidth = width;\n }\n\n return width || 10;\n } // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n\n\n function getDimensions(cm) {\n var d = cm.display,\n left = {},\n width = {};\n var gutterLeft = d.gutters.clientLeft;\n\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n\n return {\n fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth\n };\n } // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n\n\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n } // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n\n\n function estimateHeight(cm) {\n var th = textHeight(cm.display),\n wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) {\n return 0;\n }\n\n var widgetsHeight = 0;\n\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) {\n widgetsHeight += line.widgets[i].height;\n }\n }\n }\n\n if (wrapping) {\n return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n } else {\n return widgetsHeight + th;\n }\n };\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc,\n est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n });\n } // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n\n\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n return null;\n }\n\n var x,\n y,\n space = display.lineSpace.getBoundingClientRect(); // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n\n try {\n x = e.clientX - space.left;\n y = e.clientY - space.top;\n } catch (e$1) {\n return null;\n }\n\n var coords = coordsChar(cm, x, y),\n line;\n\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n\n return coords;\n } // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n\n\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) {\n return null;\n }\n\n n -= cm.display.viewFrom;\n\n if (n < 0) {\n return null;\n }\n\n var view = cm.display.view;\n\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n\n if (n < 0) {\n return i;\n }\n }\n } // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n\n\n function regChange(cm, from, to, lendiff) {\n if (from == null) {\n from = cm.doc.first;\n }\n\n if (to == null) {\n to = cm.doc.first + cm.doc.size;\n }\n\n if (!lendiff) {\n lendiff = 0;\n }\n\n var display = cm.display;\n\n if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n display.updateLineNumbers = from;\n }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) {\n // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n resetView(cm);\n }\n } else if (to <= display.viewFrom) {\n // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) {\n // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) {\n // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) {\n // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else {\n // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n\n if (ext) {\n if (to < ext.lineN) {\n ext.lineN += lendiff;\n } else if (from < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n }\n } // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n\n\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display,\n ext = cm.display.externalMeasured;\n\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n\n if (line < display.viewFrom || line >= display.viewTo) {\n return;\n }\n\n var lineView = display.view[findViewIndex(cm, line)];\n\n if (lineView.node == null) {\n return;\n }\n\n var arr = lineView.changes || (lineView.changes = []);\n\n if (indexOf(arr, type) == -1) {\n arr.push(type);\n }\n } // Clear the view.\n\n\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN),\n diff,\n view = cm.display.view;\n\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n return {\n index: index,\n lineN: newN\n };\n }\n\n var n = cm.display.viewFrom;\n\n for (var i = 0; i < index; i++) {\n n += view[i].size;\n }\n\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) {\n return null;\n }\n\n diff = n + view[index].size - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n\n oldN += diff;\n newN += diff;\n }\n\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) {\n return null;\n }\n\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n\n return {\n index: index,\n lineN: newN\n };\n } // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n\n\n function adjustView(cm, from, to) {\n var display = cm.display,\n view = display.view;\n\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from) {\n display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n } else if (display.viewFrom < from) {\n display.view = display.view.slice(findViewIndex(cm, from));\n }\n\n display.viewFrom = from;\n\n if (display.viewTo < to) {\n display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n } else if (display.viewTo > to) {\n display.view = display.view.slice(0, findViewIndex(cm, to));\n }\n }\n\n display.viewTo = to;\n } // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n\n\n function countDirtyView(cm) {\n var view = cm.display.view,\n dirty = 0;\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n\n if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n ++dirty;\n }\n }\n\n return dirty;\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if (primary === void 0) primary = true;\n var doc = cm.doc,\n result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n var customCursor = cm.options.$customCursor;\n\n if (customCursor) {\n primary = true;\n }\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) {\n continue;\n }\n\n var range = doc.sel.ranges[i];\n\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) {\n continue;\n }\n\n var collapsed = range.empty();\n\n if (customCursor) {\n var head = customCursor(cm, range);\n\n if (head) {\n drawSelectionCursor(cm, head, curFragment);\n }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n\n if (!collapsed) {\n drawSelectionRange(cm, range, selFragment);\n }\n }\n\n return result;\n } // Draws a cursor for the given range\n\n\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) {\n return a.top - b.top || a.left - b.left;\n } // Draws the given range as a highlighted selection\n\n\n function drawSelectionRange(cm, range, output) {\n var display = cm.display,\n doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display),\n leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) {\n top = 0;\n }\n\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\"));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = dir == \"ltr\" == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop];\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n var openStart = fromArg == null && from == 0,\n openEnd = toArg == null && to == lineLen;\n var first = i == 0,\n last = !order || i == order.length - 1;\n\n if (toPos.top - fromPos.top <= 3) {\n // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else {\n // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n\n if (fromPos.bottom < toPos.top) {\n add(leftSide, fromPos.bottom, null, toPos.top);\n }\n\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) {\n start = fromPos;\n }\n\n if (cmpCoords(toPos, start) < 0) {\n start = toPos;\n }\n\n if (!end || cmpCoords(fromPos, end) < 0) {\n end = fromPos;\n }\n\n if (cmpCoords(toPos, end) < 0) {\n end = toPos;\n }\n });\n return {\n start: start,\n end: end\n };\n }\n\n var sFrom = range.from(),\n sTo = range.to();\n\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line),\n toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n\n if (leftEnd.bottom < rightStart.top) {\n add(leftSide, leftEnd.bottom, null, rightStart.top);\n }\n }\n\n output.appendChild(fragment);\n } // Cursor-blinking\n\n\n function restartBlink(cm) {\n if (!cm.state.focused) {\n return;\n }\n\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n\n if (cm.options.cursorBlinkRate > 0) {\n display.blinker = setInterval(function () {\n if (!cm.hasFocus()) {\n onBlur(cm);\n }\n\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate);\n } else if (cm.options.cursorBlinkRate < 0) {\n display.cursorDiv.style.visibility = \"hidden\";\n }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n\n if (!cm.state.focused) {\n onFocus(cm);\n }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n\n if (cm.state.focused) {\n onBlur(cm);\n }\n }\n }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) {\n cm.state.delayingBlurEvent = false;\n }\n\n if (cm.options.readOnly == \"nocursor\") {\n return;\n }\n\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\"); // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n\n if (webkit) {\n setTimeout(function () {\n return cm.display.input.reset(true);\n }, 20);\n } // Issue #1730\n\n }\n\n cm.display.input.receivedFocus();\n }\n\n restartBlink(cm);\n }\n\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) {\n return;\n }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n\n clearInterval(cm.display.blinker);\n setTimeout(function () {\n if (!cm.state.focused) {\n cm.display.shift = false;\n }\n }, 150);\n } // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n\n\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i],\n wrapping = cm.options.lineWrapping;\n var height = void 0,\n width = 0;\n\n if (cur.hidden) {\n continue;\n }\n\n oldHeight += cur.line.height;\n\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top; // Check that lines don't extend past the right of the current\n // editor width\n\n if (!wrapping && cur.text.firstChild) {\n width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n }\n }\n\n var diff = cur.line.height - height;\n\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) {\n mustScroll -= diff;\n }\n\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n\n if (cur.rest) {\n for (var j = 0; j < cur.rest.length; j++) {\n updateWidgetHeight(cur.rest[j]);\n }\n }\n }\n\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n\n if (Math.abs(mustScroll) > 2) {\n display.scroller.scrollTop += mustScroll;\n }\n } // Read and store the height of line widgets associated with the\n // given line.\n\n\n function updateWidgetHeight(line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i],\n parent = w.node.parentNode;\n\n if (parent) {\n w.height = parent.offsetHeight;\n }\n }\n }\n } // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n\n\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n var from = lineAtHeight(doc, top),\n to = lineAtHeight(doc, bottom); // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line,\n ensureTo = viewport.ensure.to.line;\n\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n\n return {\n from: from,\n to: Math.max(to, from + 1)\n };\n } // SCROLLING THINGS INTO VIEW\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n\n\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n return;\n }\n\n var display = cm.display,\n box = display.sizer.getBoundingClientRect(),\n doScroll = null;\n\n if (rect.top + box.top < 0) {\n doScroll = true;\n } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n doScroll = false;\n }\n\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, \"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + rect.left + \"px; width: \" + Math.max(2, rect.right - rect.left) + \"px;\");\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n } // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n\n\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) {\n margin = 0;\n }\n\n var rect;\n\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {\n left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin\n };\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop,\n startLeft = cm.doc.scrollLeft;\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n changed = true;\n }\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n changed = true;\n }\n }\n\n if (!changed) {\n break;\n }\n }\n\n return rect;\n } // Scroll a given set of coordinates into view (immediately).\n\n\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n }\n } // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n\n\n function calculateScrollPos(cm, rect) {\n var display = cm.display,\n snapMargin = textHeight(cm.display);\n\n if (rect.top < 0) {\n rect.top = 0;\n }\n\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm),\n result = {};\n\n if (rect.bottom - rect.top > screen) {\n rect.bottom = rect.top + screen;\n }\n\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin,\n atBottom = rect.bottom > docBottom - snapMargin;\n\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n\n if (newTop != screentop) {\n result.scrollTop = newTop;\n }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n\n if (tooWide) {\n rect.right = rect.left + screenw;\n }\n\n if (rect.left < 10) {\n result.scrollLeft = 0;\n } else if (rect.left < screenleft) {\n result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10));\n } else if (rect.right > screenw + screenleft - 3) {\n result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n }\n\n return result;\n } // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n\n\n function addToScrollTop(cm, top) {\n if (top == null) {\n return;\n }\n\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n } // Make sure that at the end of the operation the current cursor is\n // shown.\n\n\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {\n from: cur,\n to: cur,\n margin: cm.options.cursorScrollMargin\n };\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) {\n resolveScrollToPos(cm);\n }\n\n if (x != null) {\n cm.curOp.scrollLeft = x;\n }\n\n if (y != null) {\n cm.curOp.scrollTop = y;\n }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n } // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n\n\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from),\n to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n } // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n\n\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) {\n return;\n }\n\n if (!gecko) {\n updateDisplaySimple(cm, {\n top: val\n });\n }\n\n setScrollTop(cm, val, true);\n\n if (gecko) {\n updateDisplaySimple(cm);\n }\n\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n\n if (cm.display.scroller.scrollTop == val && !forceScroll) {\n return;\n }\n\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n\n if (cm.display.scroller.scrollTop != val) {\n cm.display.scroller.scrollTop = val;\n }\n } // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n\n\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n return;\n }\n\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n\n if (cm.display.scroller.scrollLeft != val) {\n cm.display.scroller.scrollLeft = val;\n }\n\n cm.display.scrollbars.setScrollLeft(val);\n } // SCROLLBARS\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n\n\n function measureForScrollbars(cm) {\n var d = cm.display,\n gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth,\n clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n };\n }\n\n var NativeScrollbars = function (place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert);\n place(horiz);\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) {\n scroll(vert.scrollTop, \"vertical\");\n }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) {\n scroll(horiz.scrollLeft, \"horizontal\");\n }\n });\n this.checkedZeroWidth = false; // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n\n if (ie && ie_version < 8) {\n this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); // A bug in IE8 can cause this value to be negative, so guard it.\n\n this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width = Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) {\n this.zeroWidthHack();\n }\n\n this.checkedZeroWidth = true;\n }\n\n return {\n right: needsV ? sWidth : 0,\n bottom: needsH ? sWidth : 0\n };\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) {\n this.horiz.scrollLeft = pos;\n }\n\n if (this.disableHoriz) {\n this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) {\n this.vert.scrollTop = pos;\n }\n\n if (this.disableVert) {\n this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed();\n this.disableVert = new Delayed();\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n\n if (elt != bar) {\n bar.style.pointerEvents = \"none\";\n } else {\n delay.set(1000, maybeDisable);\n }\n }\n\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () {\n return {\n bottom: 0,\n right: 0\n };\n };\n\n NullScrollbars.prototype.setScrollLeft = function () {};\n\n NullScrollbars.prototype.setScrollTop = function () {};\n\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) {\n measure = measureForScrollbars(cm);\n }\n\n var startWidth = cm.display.barWidth,\n startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping) {\n updateHeightsInViewport(cm);\n }\n\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth;\n startHeight = cm.display.barHeight;\n }\n } // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n\n\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else {\n d.scrollbarFiller.style.display = \"\";\n }\n\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else {\n d.gutterFiller.style.display = \"\";\n }\n }\n\n var scrollbarModel = {\n \"native\": NativeScrollbars,\n \"null\": NullScrollbars\n };\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n\n if (cm.display.scrollbars.addClass) {\n rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); // Prevent clicks in the scrollbars from killing focus\n\n on(node, \"mousedown\", function () {\n if (cm.state.focused) {\n setTimeout(function () {\n return cm.display.input.focus();\n }, 0);\n }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") {\n setScrollLeft(cm, pos);\n } else {\n updateScrollTop(cm, pos);\n }\n }, cm);\n\n if (cm.display.scrollbars.addClass) {\n addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n } // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n\n var nextOpId = 0; // Start a new operation.\n\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false,\n // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height,\n // Used to detect need to update scrollbar\n forceUpdate: false,\n // Used to force a redraw\n updateInput: 0,\n // Whether to reset the input textarea\n typing: false,\n // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null,\n // Accumulated changes, for firing change events\n cursorActivityHandlers: null,\n // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0,\n // Tracks which cursorActivity handlers have been called already\n selectionChanged: false,\n // Whether the selection needs to be redrawn\n updateMaxLine: false,\n // Set when the widest line needs to be determined anew\n scrollLeft: null,\n scrollTop: null,\n // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null,\n // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId,\n // Unique ID\n markArrays: null // Used by addMarkedSpan\n\n };\n pushOperation(cm.curOp);\n } // Finish an operation, updating the display and signalling delayed events\n\n\n function endOperation(cm) {\n var op = cm.curOp;\n\n if (op) {\n finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++) {\n group.ops[i].cm.curOp = null;\n }\n\n endOperations(group);\n });\n }\n } // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n\n\n function endOperations(group) {\n var ops = group.ops;\n\n for (var i = 0; i < ops.length; i++) // Read DOM\n {\n endOperation_R1(ops[i]);\n }\n\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n {\n endOperation_W1(ops[i$1]);\n }\n\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n {\n endOperation_R2(ops[i$2]);\n }\n\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n {\n endOperation_W2(ops[i$3]);\n }\n\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n {\n endOperation_finish(ops[i$4]);\n }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm,\n display = cm.display;\n maybeClipScrollbars(cm);\n\n if (op.updateMaxLine) {\n findMaxLine(cm);\n }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {\n top: op.scrollTop,\n ensure: op.scrollToPos\n }, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm,\n display = cm.display;\n\n if (op.updatedDisplay) {\n updateHeightsInViewport(cm);\n }\n\n op.barMeasure = measureForScrollbars(cm); // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged) {\n op.preparedSelection = display.input.prepareSelection();\n }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n\n if (op.maxScrollLeft < cm.doc.scrollLeft) {\n setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n }\n\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n\n if (op.preparedSelection) {\n cm.display.input.showSelection(op.preparedSelection, takeFocus);\n }\n\n if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n updateScrollbars(cm, op.barMeasure);\n }\n\n if (op.updatedDisplay) {\n setDocumentHeight(cm, op.barMeasure);\n }\n\n if (op.selectionChanged) {\n restartBlink(cm);\n }\n\n if (cm.state.focused && op.updateInput) {\n cm.display.input.reset(op.typing);\n }\n\n if (takeFocus) {\n ensureFocus(op.cm);\n }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm,\n display = cm.display,\n doc = cm.doc;\n\n if (op.updatedDisplay) {\n postUpdateDisplay(cm, op.update);\n } // Abort mouse wheel delta measurement, when scrolling explicitly\n\n\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n display.wheelStartX = display.wheelStartY = null;\n } // Propagate the scroll position to the actual DOM scroller\n\n\n if (op.scrollTop != null) {\n setScrollTop(cm, op.scrollTop, op.forceScroll);\n }\n\n if (op.scrollLeft != null) {\n setScrollLeft(cm, op.scrollLeft, true, true);\n } // If we need to scroll a specific position into view, do so.\n\n\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n } // Fire events for markers that are hidden/unidden by editing or\n // undoing\n\n\n var hidden = op.maybeHiddenMarkers,\n unhidden = op.maybeUnhiddenMarkers;\n\n if (hidden) {\n for (var i = 0; i < hidden.length; ++i) {\n if (!hidden[i].lines.length) {\n signal(hidden[i], \"hide\");\n }\n }\n }\n\n if (unhidden) {\n for (var i$1 = 0; i$1 < unhidden.length; ++i$1) {\n if (unhidden[i$1].lines.length) {\n signal(unhidden[i$1], \"unhide\");\n }\n }\n }\n\n if (display.wrapper.offsetHeight) {\n doc.scrollTop = cm.display.scroller.scrollTop;\n } // Fire change events, and delayed event handlers\n\n\n if (op.changeObjs) {\n signal(cm, \"changes\", cm, op.changeObjs);\n }\n\n if (op.update) {\n op.update.finish();\n }\n } // Run the given function in an operation\n\n\n function runInOp(cm, f) {\n if (cm.curOp) {\n return f();\n }\n\n startOperation(cm);\n\n try {\n return f();\n } finally {\n endOperation(cm);\n }\n } // Wraps a function in an operation. Returns the wrapped function.\n\n\n function operation(cm, f) {\n return function () {\n if (cm.curOp) {\n return f.apply(cm, arguments);\n }\n\n startOperation(cm);\n\n try {\n return f.apply(cm, arguments);\n } finally {\n endOperation(cm);\n }\n };\n } // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n\n\n function methodOp(f) {\n return function () {\n if (this.curOp) {\n return f.apply(this, arguments);\n }\n\n startOperation(this);\n\n try {\n return f.apply(this, arguments);\n } finally {\n endOperation(this);\n }\n };\n }\n\n function docMethodOp(f) {\n return function () {\n var cm = this.cm;\n\n if (!cm || cm.curOp) {\n return f.apply(this, arguments);\n }\n\n startOperation(cm);\n\n try {\n return f.apply(this, arguments);\n } finally {\n endOperation(cm);\n }\n };\n } // HIGHLIGHT WORKER\n\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo) {\n cm.state.highlight.set(time, bind(highlightWorker, cm));\n }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n\n if (doc.highlightFrontier >= cm.display.viewTo) {\n return;\n }\n\n var end = +new Date() + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) {\n // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses,\n newCls = highlighted.classes;\n\n if (newCls) {\n line.styleClasses = newCls;\n } else if (oldCls) {\n line.styleClasses = null;\n }\n\n var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n\n for (var i = 0; !ischange && i < oldStyles.length; ++i) {\n ischange = oldStyles[i] != line.styles[i];\n }\n\n if (ischange) {\n changedLines.push(context.line);\n }\n\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength) {\n processLine(cm, line.text, context);\n }\n\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n\n if (+new Date() > end) {\n startWorker(cm, cm.options.workDelay);\n return true;\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n\n if (changedLines.length) {\n runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++) {\n regLineChange(cm, changedLines[i], \"text\");\n }\n });\n }\n } // DISPLAY DRAWING\n\n\n var DisplayUpdate = function (cm, viewport, force) {\n var display = cm.display;\n this.viewport = viewport; // Store some values that we'll need later (but don't want to force a relayout for)\n\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type)) {\n this.events.push(arguments);\n }\n };\n\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++) {\n signal.apply(null, this.events[i]);\n }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) {\n return null;\n }\n\n var active = activeElt();\n\n if (!active || !contains(cm.display.lineDiv, active)) {\n return null;\n }\n\n var result = {\n activeElt: active\n };\n\n if (window.getSelection) {\n var sel = window.getSelection();\n\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n\n return result;\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n return;\n }\n\n snapshot.activeElt.focus();\n\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(),\n range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n } // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n\n\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display,\n doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false;\n } // Bail out if the visible area is already rendered and nothing changed.\n\n\n if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n return false;\n }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n } // Compute a suitable new viewport (from & to)\n\n\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n\n if (display.viewFrom < from && from - display.viewFrom < 20) {\n from = Math.max(doc.first, display.viewFrom);\n }\n\n if (display.viewTo > to && display.viewTo - to < 20) {\n to = Math.min(end, display.viewTo);\n }\n\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); // Position the mover div to align with the current scroll position\n\n cm.display.mover.style.top = display.viewOffset + \"px\";\n var toUpdate = countDirtyView(cm);\n\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) {\n return false;\n } // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n\n\n var selSnapshot = selectionSnapshot(cm);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"none\";\n }\n\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"\";\n }\n\n display.renderedView = display.view; // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n\n restoreSelection(selSnapshot); // Prevent selection and cursors from interfering with the scroll\n // width and height.\n\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n return true;\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null) {\n viewport = {\n top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n };\n } // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n\n\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) {\n break;\n }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n\n if (!updateDisplayIfNeeded(cm, update)) {\n break;\n }\n\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom;\n cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n } // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n\n\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display,\n lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv,\n cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling; // Works around a throw-scroll bug in OS X Webkit\n\n if (webkit && mac && cm.display.currentWheelTarget == node) {\n node.style.display = \"none\";\n } else {\n node.parentNode.removeChild(node);\n }\n\n return next;\n }\n\n var view = display.view,\n lineN = display.viewFrom; // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ;else if (!lineView.node || lineView.node.parentNode != container) {\n // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else {\n // Already drawn\n while (cur != lineView.node) {\n cur = rm(cur);\n }\n\n var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) {\n updateNumber = false;\n }\n\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n\n while (cur) {\n cur = rm(cur);\n }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\"; // Send an event to consumers responding to changes in gutter width.\n\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = measure.docHeight + cm.display.barHeight + scrollGap(cm) + \"px\";\n } // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n\n\n function alignHorizontally(cm) {\n var display = cm.display,\n view = display.view;\n\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n return;\n }\n\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth,\n left = comp + \"px\";\n\n for (var i = 0; i < view.length; i++) {\n if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter) {\n view[i].gutter.style.left = left;\n }\n\n if (view[i].gutterBackground) {\n view[i].gutterBackground.style.left = left;\n }\n }\n\n var align = view[i].alignable;\n\n if (align) {\n for (var j = 0; j < align.length; j++) {\n align[j].style.left = left;\n }\n }\n }\n }\n\n if (cm.options.fixedGutter) {\n display.gutters.style.left = comp + gutterW + \"px\";\n }\n } // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n\n\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) {\n return false;\n }\n\n var doc = cm.doc,\n last = lineNumberFor(cm.options, doc.first + doc.size - 1),\n display = cm.display;\n\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)], \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth,\n padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true;\n }\n\n return false;\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [],\n sawLineNumbers = false;\n\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i],\n style = null;\n\n if (typeof name != \"string\") {\n style = name.style;\n name = name.className;\n }\n\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) {\n continue;\n } else {\n sawLineNumbers = true;\n }\n }\n\n result.push({\n className: name,\n style: style\n });\n }\n\n if (lineNumbers && !sawLineNumbers) {\n result.push({\n className: \"CodeMirror-linenumbers\",\n style: null\n });\n }\n\n return result;\n } // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n\n\n function renderGutters(display) {\n var gutters = display.gutters,\n specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n\n if (style) {\n gElt.style.cssText = style;\n }\n\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n } // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input; // Covers bottom-right square when both scrollbars are present.\n\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\"); // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\"); // Will contain the actual code, positioned to cover the viewport.\n\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\"); // Elements are added to these to represent selection and cursors.\n\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\"); // A visibility: hidden element used to find the size of things.\n\n d.measure = elt(\"div\", null, \"CodeMirror-measure\"); // When lines outside of the viewport are measured, they are drawn in this.\n\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\"); // Wraps everything that needs to exist inside the vertically-padded coordinate system\n\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\"); // Moved around its parent to cover visible view.\n\n d.mover = elt(\"div\", [lines], null, \"position: relative\"); // Set to the height of the document, allowing scrolling.\n\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null; // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\"); // Will contain the gutters, if any.\n\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null; // Actual scrollable element.\n\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\"); // The element in which the editor lives.\n\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\"); // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n\n d.wrapper.setAttribute('translate', 'no'); // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n\n if (ie && ie_version < 8) {\n d.gutters.style.zIndex = -1;\n d.scroller.style.paddingRight = 0;\n }\n\n if (!webkit && !(gecko && mobile)) {\n d.scroller.draggable = true;\n }\n\n if (place) {\n if (place.appendChild) {\n place.appendChild(d.wrapper);\n } else {\n place(d.wrapper);\n }\n } // Current rendered range (may be bigger than the view window).\n\n\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first; // Information about the rendered lines.\n\n d.view = [];\n d.renderedView = null; // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n\n d.externalMeasured = null; // Empty space (in pixels) above the view\n\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false; // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n\n d.alignWidgets = false;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false; // Used for measuring wheel scrolling granularity\n\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; // True when shift is held down.\n\n d.shift = false; // Used to track whether anything happened since the context menu\n // was opened.\n\n d.selForContextMenu = null;\n d.activeTouch = null;\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n input.init(d);\n } // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n\n var wheelSamples = 0,\n wheelPixelsPerUnit = null; // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n\n if (ie) {\n wheelPixelsPerUnit = -.53;\n } else if (gecko) {\n wheelPixelsPerUnit = 15;\n } else if (chrome) {\n wheelPixelsPerUnit = -.7;\n } else if (safari) {\n wheelPixelsPerUnit = -1 / 3;\n }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX,\n dy = e.wheelDeltaY;\n\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n dx = e.detail;\n }\n\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n dy = e.detail;\n } else if (dy == null) {\n dy = e.wheelDelta;\n }\n\n return {\n x: dx,\n y: dy\n };\n }\n\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta;\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e),\n dx = delta.x,\n dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display,\n scroll = display.scroller; // Quit if there's nothing to scroll here\n\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n\n if (!(dx && canScrollX || dy && canScrollY)) {\n return;\n } // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n\n\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer;\n }\n }\n }\n } // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n\n\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY) {\n updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit));\n }\n\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit)); // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n\n if (!dy || dy && canScrollY) {\n e_preventDefault(e);\n }\n\n display.wheelStartX = null; // Abort measurement, if in progress\n\n return;\n } // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n\n\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop,\n bot = top + display.wrapper.clientHeight;\n\n if (pixels < 0) {\n top = Math.max(0, top + pixels - 50);\n } else {\n bot = Math.min(cm.doc.height, bot + pixels + 50);\n }\n\n updateDisplaySimple(cm, {\n top: top,\n bottom: bot\n });\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft;\n display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx;\n display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) {\n return;\n }\n\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = movedY && display.wheelDY && movedY / display.wheelDY || movedX && display.wheelDX && movedX / display.wheelDX;\n display.wheelStartX = display.wheelStartY = null;\n\n if (!sample) {\n return;\n }\n\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx;\n display.wheelDY += dy;\n }\n }\n } // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n\n\n var Selection = function (ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () {\n return this.ranges[this.primIndex];\n };\n\n Selection.prototype.equals = function (other) {\n if (other == this) {\n return true;\n }\n\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n return false;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i],\n there = other.ranges[i];\n\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n return false;\n }\n }\n\n return true;\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n\n for (var i = 0; i < this.ranges.length; i++) {\n out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));\n }\n\n return new Selection(out, this.primIndex);\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++) {\n if (!this.ranges[i].empty()) {\n return true;\n }\n }\n\n return false;\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) {\n end = pos;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) {\n return i;\n }\n }\n\n return -1;\n };\n\n var Range = function (anchor, head) {\n this.anchor = anchor;\n this.head = head;\n };\n\n Range.prototype.from = function () {\n return minPos(this.anchor, this.head);\n };\n\n Range.prototype.to = function () {\n return maxPos(this.anchor, this.head);\n };\n\n Range.prototype.empty = function () {\n return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n }; // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n\n\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) {\n return cmp(a.from(), b.from());\n });\n primIndex = indexOf(ranges, prim);\n\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i],\n prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()),\n to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n\n if (i <= primIndex) {\n --primIndex;\n }\n\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n\n return new Selection(ranges, primIndex);\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0);\n } // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n\n\n function changeEnd(change) {\n if (!change.text) {\n return change.to;\n }\n\n return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n } // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n\n\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) {\n return pos;\n }\n\n if (cmp(pos, change.to) <= 0) {\n return changeEnd(change);\n }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1,\n ch = pos.ch;\n\n if (pos.line == change.to.line) {\n ch += changeEnd(change).ch - change.to.ch;\n }\n\n return Pos(line, ch);\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change), adjustForChange(range.head, change)));\n }\n\n return normalizeSelection(doc.cm, out, doc.sel.primIndex);\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line) {\n return Pos(nw.line, pos.ch - old.ch + nw.ch);\n } else {\n return Pos(nw.line + (pos.line - old.line), pos.ch);\n }\n } // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n\n\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0),\n newPrev = oldPrev;\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n\n if (hint == \"around\") {\n var range = doc.sel.ranges[i],\n inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n\n return new Selection(out, doc.sel.primIndex);\n } // Used to get the editor into a consistent state again when options change.\n\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n\n if (cm.curOp) {\n regChange(cm);\n }\n } // DOCUMENT DATA STRUCTURE\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n\n\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n } // Perform a change on the document data structure.\n\n\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {\n return markedSpans ? markedSpans[n] : null;\n }\n\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n\n function linesFor(start, end) {\n var result = [];\n\n for (var i = start; i < end; ++i) {\n result.push(new Line(text[i], spansFor(i), estimateHeight));\n }\n\n return result;\n }\n\n var from = change.from,\n to = change.to,\n text = change.text;\n var firstLine = getLine(doc, from.line),\n lastLine = getLine(doc, to.line);\n var lastText = lst(text),\n lastSpans = spansFor(text.length - 1),\n nlines = to.line - from.line; // Adjust the line structure\n\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n\n if (nlines) {\n doc.remove(from.line, nlines);\n }\n\n if (added.length) {\n doc.insert(from.line, added);\n }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n\n if (nlines > 1) {\n doc.remove(from.line + 1, nlines - 1);\n }\n\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n } // Call f for all linked documents.\n\n\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) {\n for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n\n if (rel.doc == skip) {\n continue;\n }\n\n var shared = sharedHist && rel.sharedHist;\n\n if (sharedHistOnly && !shared) {\n continue;\n }\n\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n }\n }\n }\n\n propagate(doc, null, true);\n } // Attach a document to an editor.\n\n\n function attachDoc(cm, doc) {\n if (doc.cm) {\n throw new Error(\"This document is already in use.\");\n }\n\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n\n if (!cm.options.lineWrapping) {\n findMaxLine(cm);\n }\n\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = [];\n this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity; // Used to track when changes can be merged into a single undo\n // event\n\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null; // Used by the isClean() method\n\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n } // Create a history change event from an updateDoc-style change\n // object.\n\n\n function historyChangeFromChange(doc, change) {\n var histChange = {\n from: copyPos(change.from),\n to: changeEnd(change),\n text: getBetween(doc, change.from, change.to)\n };\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) {\n return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n }, true);\n return histChange;\n } // Pop all selection events off the end of a history array. Stop at\n // a change event.\n\n\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n\n if (last.ranges) {\n array.pop();\n } else {\n break;\n }\n }\n } // Find the top change event in the history. Pop off selection\n // events that are in the way.\n\n\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done);\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done);\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done);\n }\n } // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n\n\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date(),\n cur;\n var last;\n\n if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n\n if (!before || !before.ranges) {\n pushSelectionToHistory(doc.sel, hist.done);\n }\n\n cur = {\n changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation\n };\n hist.done.push(cur);\n\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n\n if (!hist.done[0].ranges) {\n hist.done.shift();\n }\n }\n }\n\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) {\n signal(doc, \"historyAdded\");\n }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date() - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n } // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n\n\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history,\n origin = options && options.origin; // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n\n if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n hist.done[hist.done.length - 1] = sel;\n } else {\n pushSelectionToHistory(sel, hist.done);\n }\n\n hist.lastSelTime = +new Date();\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n\n if (options && options.clearRedo !== false) {\n clearSelectionEvents(hist.undone);\n }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n\n if (!(top && top.ranges && top.equals(sel))) {\n dest.push(sel);\n }\n } // Used to store marked span information in the history.\n\n\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id],\n n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans) {\n (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n }\n\n ++n;\n });\n } // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n\n\n function removeClearedSpans(spans) {\n if (!spans) {\n return null;\n }\n\n var out;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) {\n if (!out) {\n out = spans.slice(0, i);\n }\n } else if (out) {\n out.push(spans[i]);\n }\n }\n\n return !out ? spans : out.length ? out : null;\n } // Retrieve and filter the old marked spans stored in a change event.\n\n\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n\n if (!found) {\n return null;\n }\n\n var nw = [];\n\n for (var i = 0; i < change.text.length; ++i) {\n nw.push(removeClearedSpans(found[i]));\n }\n\n return nw;\n } // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n\n\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n\n if (!old) {\n return stretched;\n }\n\n if (!stretched) {\n return old;\n }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i],\n stretchCur = stretched[i];\n\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n\n for (var k = 0; k < oldCur.length; ++k) {\n if (oldCur[k].marker == span.marker) {\n continue spans;\n }\n }\n\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n\n return old;\n } // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n\n\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue;\n }\n\n var changes = event.changes,\n newChanges = [];\n copy.push({\n changes: newChanges\n });\n\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j],\n m = void 0;\n newChanges.push({\n from: change.from,\n to: change.to,\n text: change.text\n });\n\n if (newGroup) {\n for (var prop in change) {\n if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n }\n }\n }\n }\n }\n\n return copy;\n } // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n\n\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n\n if (posBefore != cmp(other, anchor) < 0) {\n anchor = head;\n head = other;\n } else if (posBefore != cmp(head, other) < 0) {\n head = other;\n }\n }\n\n return new Range(anchor, head);\n } else {\n return new Range(other || head, head);\n }\n } // Extend the primary selection range, discard the rest.\n\n\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) {\n extend = doc.cm && (doc.cm.display.shift || doc.extend);\n }\n\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n } // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n\n\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend);\n }\n\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n } // Updates a single range in the selection.\n\n\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n } // Reset the selection to a single range.\n\n\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n } // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n\n\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function (ranges) {\n this.ranges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), clipPos(doc, ranges[i].head));\n }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n }\n\n if (obj.ranges != sel.ranges) {\n return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n } else {\n return sel;\n }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done,\n last = lst(done);\n\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n } // Set a new selection.\n\n\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) {\n sel = filterSelectionChange(doc, sel, options);\n }\n\n var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\") {\n ensureCursorVisible(doc.cm);\n }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) {\n return;\n }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n\n signalLater(doc, \"cursorActivity\", doc);\n } // Verify that the selection does not partially select any atomic\n // marked ranges.\n\n\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n } // Return a selection that does not partially select any atomic\n // ranges.\n\n\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) {\n out = sel.ranges.slice(0, i);\n }\n\n out[i] = new Range(newAnchor, newHead);\n }\n }\n\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel;\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i],\n m = sp.marker; // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n\n var preventCursorLeft = \"selectLeft\" in m ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = \"selectRight\" in m ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n\n if (m.explicitlyCleared) {\n if (!line.markedSpans) {\n break;\n } else {\n --i;\n continue;\n }\n }\n }\n\n if (!m.atomic) {\n continue;\n }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1),\n diff = void 0;\n\n if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n }\n\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) {\n return skipAtomicInner(doc, near, pos, dir, mayClear);\n }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n\n if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n }\n\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n }\n }\n }\n\n return pos;\n } // Ensure a given position is not inside an atomic range.\n\n\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true);\n\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0);\n }\n\n return found;\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) {\n return clipPos(doc, Pos(pos.line - 1));\n } else {\n return null;\n }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) {\n return Pos(pos.line + 1, 0);\n } else {\n return null;\n }\n } else {\n return new Pos(pos.line, pos.ch + dir);\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n } // UPDATING\n // Allow \"beforeChange\" event handlers to influence a change\n\n\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () {\n return obj.canceled = true;\n }\n };\n\n if (update) {\n obj.update = function (from, to, text, origin) {\n if (from) {\n obj.from = clipPos(doc, from);\n }\n\n if (to) {\n obj.to = clipPos(doc, to);\n }\n\n if (text) {\n obj.text = text;\n }\n\n if (origin !== undefined) {\n obj.origin = origin;\n }\n };\n }\n\n signal(doc, \"beforeChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeChange\", doc.cm, obj);\n }\n\n if (obj.canceled) {\n if (doc.cm) {\n doc.cm.curOp.updateInput = 2;\n }\n\n return null;\n }\n\n return {\n from: obj.from,\n to: obj.to,\n text: obj.text,\n origin: obj.origin\n };\n } // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n\n\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) {\n return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n }\n\n if (doc.cm.state.suppressEdits) {\n return;\n }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n\n if (!change) {\n return;\n }\n } // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n\n\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n\n if (split) {\n for (var i = split.length - 1; i >= 0; --i) {\n makeChangeInner(doc, {\n from: split[i].from,\n to: split[i].to,\n text: i ? [\"\"] : change.text,\n origin: change.origin\n });\n }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) {\n return;\n }\n\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n } // Revert a change stored in a document's history.\n\n\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n\n if (suppress && !allowSelectionOnly) {\n return;\n }\n\n var hist = doc.history,\n event,\n selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone,\n dest = type == \"undo\" ? hist.undone : hist.done; // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n\n var i = 0;\n\n for (; i < source.length; i++) {\n event = source[i];\n\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n break;\n }\n }\n\n if (i == source.length) {\n return;\n }\n\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {\n clearRedo: false\n });\n return;\n }\n\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return;\n } else {\n break;\n }\n } // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n\n\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({\n changes: antiChanges,\n generation: hist.generation\n });\n hist.generation = event.generation || ++hist.maxGeneration;\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function (i) {\n var change = event.changes[i];\n change.origin = type;\n\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {};\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n\n if (!i && doc.cm) {\n doc.cm.scrollIntoView({\n from: change.from,\n to: changeEnd(change)\n });\n }\n\n var rebased = []; // Propagate to the linked documents\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop(i$1);\n if (returned) return returned.v;\n }\n } // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n\n\n function shiftDoc(doc, distance) {\n if (distance == 0) {\n return;\n }\n\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) {\n return new Range(Pos(range.anchor.line + distance, range.anchor.ch), Pos(range.head.line + distance, range.head.ch));\n }), doc.sel.primIndex);\n\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) {\n regLineChange(doc.cm, l, \"gutter\");\n }\n }\n } // More lower-level change function, handling only a single document\n // (not linked ones).\n\n\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return;\n }\n\n if (change.from.line > doc.lastLine()) {\n return;\n } // Clip the change to the size of this doc\n\n\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {\n from: Pos(doc.first, 0),\n to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)],\n origin: change.origin\n };\n }\n\n var last = doc.lastLine();\n\n if (change.to.line > last) {\n change = {\n from: change.from,\n to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]],\n origin: change.origin\n };\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) {\n selAfter = computeSelAfterChange(doc, change);\n }\n\n if (doc.cm) {\n makeChangeSingleDocInEditor(doc.cm, change, spans);\n } else {\n updateDoc(doc, change, spans);\n }\n\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n doc.cantEdit = false;\n }\n } // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n\n\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc,\n display = cm.display,\n from = change.from,\n to = change.to;\n var recomputeMaxLength = false,\n checkWidthStart = from.line;\n\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true;\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1) {\n signalCursorActivity(cm);\n }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n\n if (recomputeMaxLength) {\n cm.curOp.updateMaxLine = true;\n }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n var lendiff = change.text.length - (to.line - from.line) - 1; // Remember that these lines changed, for updating the display\n\n if (change.full) {\n regChange(cm);\n } else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) {\n regLineChange(cm, from.line, \"text\");\n } else {\n regChange(cm, from.line, to.line + 1, lendiff);\n }\n\n var changesHandler = hasHandler(cm, \"changes\"),\n changeHandler = hasHandler(cm, \"change\");\n\n if (changeHandler || changesHandler) {\n var obj = {\n from: from,\n to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n\n if (changeHandler) {\n signalLater(cm, \"change\", cm, obj);\n }\n\n if (changesHandler) {\n (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n }\n }\n\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) {\n to = from;\n }\n\n if (cmp(to, from) < 0) {\n assign = [to, from], from = assign[0], to = assign[1];\n }\n\n if (typeof code == \"string\") {\n code = doc.splitLines(code);\n }\n\n makeChange(doc, {\n from: from,\n to: to,\n text: code,\n origin: origin\n });\n } // Rebasing/resetting history to deal with externally-sourced changes\n\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n } // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n\n\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i],\n ok = true;\n\n if (sub.ranges) {\n if (!sub.copied) {\n sub = array[i] = sub.deepCopy();\n sub.copied = true;\n }\n\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n\n continue;\n }\n\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break;\n }\n }\n\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line,\n to = change.to.line,\n diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n } // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n\n\n function changeLine(doc, handle, changeType, op) {\n var no = handle,\n line = handle;\n\n if (typeof handle == \"number\") {\n line = getLine(doc, clipLine(doc, handle));\n } else {\n no = lineNo(handle);\n }\n\n if (no == null) {\n return null;\n }\n\n if (op(line, no) && doc.cm) {\n regLineChange(doc.cm, no, changeType);\n }\n\n return line;\n } // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function () {\n return this.lines.length;\n },\n // Remove the n lines at offset 'at'.\n removeInner: function (at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n\n this.lines.splice(at, n);\n },\n // Helper used to collapse a small branch into a single leaf.\n collapse: function (lines) {\n lines.push.apply(lines, this.lines);\n },\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function (at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n }\n },\n // Used to iterate over a part of the tree.\n iterN: function (at, n, op) {\n for (var e = at + n; at < e; ++at) {\n if (op(this.lines[at])) {\n return true;\n }\n }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0,\n height = 0;\n\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize();\n height += ch.height;\n ch.parent = this;\n }\n\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function () {\n return this.size;\n },\n removeInner: function (at, n) {\n this.size -= n;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var rm = Math.min(n, sz - at),\n oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n\n if (sz == rm) {\n this.children.splice(i--, 1);\n child.parent = null;\n }\n\n if ((n -= rm) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n } // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n\n\n if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n collapse: function (lines) {\n for (var i = 0; i < this.children.length; ++i) {\n this.children[i].collapse(lines);\n }\n },\n insertInner: function (at, lines, height) {\n this.size += lines.length;\n this.height += height;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at <= sz) {\n child.insertInner(at, lines, height);\n\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n\n break;\n }\n\n at -= sz;\n }\n },\n // When a node has grown, check whether it should be split.\n maybeSpill: function () {\n if (this.children.length <= 10) {\n return;\n }\n\n var me = this;\n\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n\n if (!me.parent) {\n // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n\n sibling.parent = me.parent;\n } while (me.children.length > 10);\n\n me.parent.maybeSpill();\n },\n iterN: function (at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var used = Math.min(n, sz - at);\n\n if (child.iterN(at, used, op)) {\n return true;\n }\n\n if ((n -= used) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n }\n }\n }; // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function (doc, node, options) {\n if (options) {\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n this[opt] = options[opt];\n }\n }\n }\n\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm,\n ws = this.line.widgets,\n line = this.line,\n no = lineNo(line);\n\n if (no == null || !ws) {\n return;\n }\n\n for (var i = 0; i < ws.length; ++i) {\n if (ws[i] == this) {\n ws.splice(i--, 1);\n }\n }\n\n if (!ws.length) {\n line.widgets = null;\n }\n\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n var oldH = this.height,\n cm = this.doc.cm,\n line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n\n if (!diff) {\n return;\n }\n\n if (!lineIsHidden(this.doc, line)) {\n updateLineHeight(line, line.height + diff);\n }\n\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) {\n addToScrollTop(cm, diff);\n }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n\n if (cm && widget.noHScroll) {\n cm.display.alignWidgets = true;\n }\n\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n\n if (widget.insertAt == null) {\n widgets.push(widget);\n } else {\n widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget);\n }\n\n widget.line = line;\n\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n\n if (aboveVisible) {\n addToScrollTop(cm, widget.height);\n }\n\n cm.curOp.forceUpdate = true;\n }\n\n return true;\n });\n\n if (cm) {\n signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n }\n\n return widget;\n } // TEXTMARKERS\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n\n\n var nextMarkerId = 0;\n\n var TextMarker = function (doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n }; // Clear the marker.\n\n\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n var cm = this.doc.cm,\n withOp = cm && !cm.curOp;\n\n if (withOp) {\n startOperation(cm);\n }\n\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n\n if (found) {\n signalLater(this, \"clear\", found.from, found.to);\n }\n }\n\n var min = null,\n max = null;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (cm && !this.collapsed) {\n regLineChange(cm, lineNo(line), \"text\");\n } else if (cm) {\n if (span.to != null) {\n max = lineNo(line);\n }\n\n if (span.from != null) {\n min = lineNo(line);\n }\n }\n\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) {\n updateLineHeight(line, textHeight(cm.display));\n }\n }\n\n if (cm && this.collapsed && !cm.options.lineWrapping) {\n for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]),\n len = lineLength(visual);\n\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n }\n }\n\n if (min != null && cm && this.collapsed) {\n regChange(cm, min, max + 1);\n }\n\n this.lines.length = 0;\n this.explicitlyCleared = true;\n\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n\n if (cm) {\n reCheckSelection(cm.doc);\n }\n }\n\n if (cm) {\n signalLater(cm, \"markerCleared\", cm, this, min, max);\n }\n\n if (withOp) {\n endOperation(cm);\n }\n\n if (this.parent) {\n this.parent.clear();\n }\n }; // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n\n\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") {\n side = 1;\n }\n\n var from, to;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n\n if (side == -1) {\n return from;\n }\n }\n\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n\n if (side == 1) {\n return to;\n }\n }\n }\n\n return from && {\n from: from,\n to: to\n };\n }; // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n\n\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n var pos = this.find(-1, true),\n widget = this,\n cm = this.doc.cm;\n\n if (!pos || !cm) {\n return;\n }\n\n runInOp(cm, function () {\n var line = pos.line,\n lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n\n cm.curOp.updateMaxLine = true;\n\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n\n if (dHeight) {\n updateLineHeight(line, line.height + dHeight);\n }\n }\n\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) {\n (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n }\n }\n\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n\n eventMixin(TextMarker); // Create a marker, wire it up to the right lines, and\n\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) {\n return markTextShared(doc, from, to, options, type);\n } // Ensure we are in an operation.\n\n\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, markText)(doc, from, to, options, type);\n }\n\n var marker = new TextMarker(doc, type),\n diff = cmp(from, to);\n\n if (options) {\n copyObj(options, marker, false);\n } // Don't connect empty markers unless clearWhenEmpty is false\n\n\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n return marker;\n }\n\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n\n if (!options.handleMouseEvents) {\n marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n if (options.insertLeft) {\n marker.widgetNode.insertLeft = true;\n }\n }\n\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) {\n throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n }\n\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory) {\n addChangeToHistory(doc, {\n from: from,\n to: to,\n origin: \"markText\"\n }, doc.sel, NaN);\n }\n\n var curLine = from.line,\n cm = doc.cm,\n updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) {\n updateMaxLine = true;\n }\n\n if (marker.collapsed && curLine != from.line) {\n updateLineHeight(line, 0);\n }\n\n addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n }); // lineIsHidden depends on the presence of the spans, so needs a second pass\n\n if (marker.collapsed) {\n doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) {\n updateLineHeight(line, 0);\n }\n });\n }\n\n if (marker.clearOnEnter) {\n on(marker, \"beforeCursorEnter\", function () {\n return marker.clear();\n });\n }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n\n if (doc.history.done.length || doc.history.undone.length) {\n doc.clearHistory();\n }\n }\n\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n\n if (cm) {\n // Sync editor state\n if (updateMaxLine) {\n cm.curOp.updateMaxLine = true;\n }\n\n if (marker.collapsed) {\n regChange(cm, from.line, to.line + 1);\n } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n for (var i = from.line; i <= to.line; i++) {\n regLineChange(cm, i, \"text\");\n }\n }\n\n if (marker.atomic) {\n reCheckSelection(cm.doc);\n }\n\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n\n return marker;\n } // SHARED TEXTMARKERS\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n\n\n var SharedTextMarker = function (markers, primary) {\n this.markers = markers;\n this.primary = primary;\n\n for (var i = 0; i < markers.length; ++i) {\n markers[i].parent = this;\n }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n this.explicitlyCleared = true;\n\n for (var i = 0; i < this.markers.length; ++i) {\n this.markers[i].clear();\n }\n\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj);\n };\n\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)],\n primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) {\n options.widgetNode = widget.cloneNode(true);\n }\n\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n\n for (var i = 0; i < doc.linked.length; ++i) {\n if (doc.linked[i].isParent) {\n return;\n }\n }\n\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary);\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) {\n return m.parent;\n });\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i],\n pos = marker.find();\n var mFrom = doc.clipPos(pos.from),\n mTo = doc.clipPos(pos.to);\n\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function (i) {\n var marker = markers[i],\n linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) {\n return linked.push(d);\n });\n\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop(i);\n }\n\n var nextDocId = 0;\n\n var Doc = function (text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) {\n return new Doc(text, mode, firstLine, lineSep, direction);\n }\n\n if (firstLine == null) {\n firstLine = 0;\n }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = direction == \"rtl\" ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") {\n text = this.splitLines(text);\n }\n\n updateDoc(this, {\n from: start,\n to: start,\n text: text\n });\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function (from, to, op) {\n if (op) {\n this.iterN(from - this.first, to - from, op);\n } else {\n this.iterN(this.first, this.first + this.size, from);\n }\n },\n // Non-public interface for adding and removing lines.\n insert: function (at, lines) {\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n height += lines[i].height;\n }\n\n this.insertInner(at - this.first, lines, height);\n },\n remove: function (at, n) {\n this.removeInner(at - this.first, n);\n },\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n getValue: function (lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n setValue: docMethodOp(function (code) {\n var top = Pos(this.first, 0),\n last = this.first + this.size - 1;\n makeChange(this, {\n from: top,\n to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code),\n origin: \"setValue\",\n full: true\n }, true);\n\n if (this.cm) {\n scrollToCoords(this.cm, 0, 0);\n }\n\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function (code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function (from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n\n if (lineSep === false) {\n return lines;\n }\n\n if (lineSep === '') {\n return lines.join('');\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n getLine: function (line) {\n var l = this.getLineHandle(line);\n return l && l.text;\n },\n getLineHandle: function (line) {\n if (isLine(this, line)) {\n return getLine(this, line);\n }\n },\n getLineNumber: function (line) {\n return lineNo(line);\n },\n getLineHandleVisualStart: function (line) {\n if (typeof line == \"number\") {\n line = getLine(this, line);\n }\n\n return visualLine(line);\n },\n lineCount: function () {\n return this.size;\n },\n firstLine: function () {\n return this.first;\n },\n lastLine: function () {\n return this.first + this.size - 1;\n },\n clipPos: function (pos) {\n return clipPos(this, pos);\n },\n getCursor: function (start) {\n var range = this.sel.primary(),\n pos;\n\n if (start == null || start == \"head\") {\n pos = range.head;\n } else if (start == \"anchor\") {\n pos = range.anchor;\n } else if (start == \"end\" || start == \"to\" || start === false) {\n pos = range.to();\n } else {\n pos = range.from();\n }\n\n return pos;\n },\n listSelections: function () {\n return this.sel.ranges;\n },\n somethingSelected: function () {\n return this.sel.somethingSelected();\n },\n setCursor: docMethodOp(function (line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function (anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function (head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function (heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function (f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function (ranges, primary, options) {\n if (!ranges.length) {\n return;\n }\n\n var out = [];\n\n for (var i = 0; i < ranges.length; i++) {\n out[i] = new Range(clipPos(this, ranges[i].anchor), clipPos(this, ranges[i].head || ranges[i].anchor));\n }\n\n if (primary == null) {\n primary = Math.min(ranges.length - 1, this.sel.primIndex);\n }\n\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function (anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n getSelection: function (lineSep) {\n var ranges = this.sel.ranges,\n lines;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n\n if (lineSep === false) {\n return lines;\n } else {\n return lines.join(lineSep || this.lineSeparator());\n }\n },\n getSelections: function (lineSep) {\n var parts = [],\n ranges = this.sel.ranges;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n\n if (lineSep !== false) {\n sel = sel.join(lineSep || this.lineSeparator());\n }\n\n parts[i] = sel;\n }\n\n return parts;\n },\n replaceSelection: function (code, collapse, origin) {\n var dup = [];\n\n for (var i = 0; i < this.sel.ranges.length; i++) {\n dup[i] = code;\n }\n\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function (code, collapse, origin) {\n var changes = [],\n sel = this.sel;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {\n from: range.from(),\n to: range.to(),\n text: this.splitLines(code[i]),\n origin: origin\n };\n }\n\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) {\n makeChange(this, changes[i$1]);\n }\n\n if (newSel) {\n setSelectionReplaceHistory(this, newSel);\n } else if (this.cm) {\n ensureCursorVisible(this.cm);\n }\n }),\n undo: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\");\n }),\n redo: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\");\n }),\n undoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\", true);\n }),\n redoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\", true);\n }),\n setExtending: function (val) {\n this.extend = val;\n },\n getExtending: function () {\n return this.extend;\n },\n historySize: function () {\n var hist = this.history,\n done = 0,\n undone = 0;\n\n for (var i = 0; i < hist.done.length; i++) {\n if (!hist.done[i].ranges) {\n ++done;\n }\n }\n\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) {\n if (!hist.undone[i$1].ranges) {\n ++undone;\n }\n }\n\n return {\n undo: done,\n redo: undone\n };\n },\n clearHistory: function () {\n var this$1 = this;\n this.history = new History(this.history);\n linkedDocs(this, function (doc) {\n return doc.history = this$1.history;\n }, true);\n },\n markClean: function () {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function (forceSplit) {\n if (forceSplit) {\n this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n }\n\n return this.history.generation;\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration);\n },\n getHistory: function () {\n return {\n done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)\n };\n },\n setHistory: function (histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n setGutterMarker: docMethodOp(function (line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n\n if (!value && isEmpty(markers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }),\n clearGutter: docMethodOp(function (gutterID) {\n var this$1 = this;\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n\n if (isEmpty(line.gutterMarkers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }\n });\n }),\n lineInfo: function (line) {\n var n;\n\n if (typeof line == \"number\") {\n if (!isLine(this, line)) {\n return null;\n }\n\n n = line;\n line = getLine(this, line);\n\n if (!line) {\n return null;\n }\n } else {\n n = lineNo(line);\n\n if (n == null) {\n return null;\n }\n }\n\n return {\n line: n,\n handle: line,\n text: line.text,\n gutterMarkers: line.gutterMarkers,\n textClass: line.textClass,\n bgClass: line.bgClass,\n wrapClass: line.wrapClass,\n widgets: line.widgets\n };\n },\n addLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n\n if (!line[prop]) {\n line[prop] = cls;\n } else if (classTest(cls).test(line[prop])) {\n return false;\n } else {\n line[prop] += \" \" + cls;\n }\n\n return true;\n });\n }),\n removeLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n\n if (!cur) {\n return false;\n } else if (cls == null) {\n line[prop] = null;\n } else {\n var found = cur.match(classTest(cls));\n\n if (!found) {\n return false;\n }\n\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n\n return true;\n });\n }),\n addLineWidget: docMethodOp(function (handle, node, options) {\n return addLineWidget(this, handle, node, options);\n }),\n removeLineWidget: function (widget) {\n widget.clear();\n },\n markText: function (from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\");\n },\n setBookmark: function (pos, options) {\n var realOpts = {\n replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false,\n shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents\n };\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\");\n },\n findMarksAt: function (pos) {\n pos = clipPos(this, pos);\n var markers = [],\n spans = getLine(this, pos.line).markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) {\n markers.push(span.marker.parent || span.marker);\n }\n }\n }\n\n return markers;\n },\n findMarks: function (from, to, filter) {\n from = clipPos(this, from);\n to = clipPos(this, to);\n var found = [],\n lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to || span.from == null && lineNo != from.line || span.from != null && lineNo == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) {\n found.push(span.marker.parent || span.marker);\n }\n }\n }\n\n ++lineNo;\n });\n return found;\n },\n getAllMarks: function () {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n if (sps[i].from != null) {\n markers.push(sps[i].marker);\n }\n }\n }\n });\n return markers;\n },\n posFromIndex: function (off) {\n var ch,\n lineNo = this.first,\n sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n\n if (sz > off) {\n ch = off;\n return true;\n }\n\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch));\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n\n if (coords.line < this.first || coords.ch < 0) {\n return 0;\n }\n\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) {\n // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index;\n },\n copy: function (copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop;\n doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n\n return doc;\n },\n linkedDoc: function (options) {\n if (!options) {\n options = {};\n }\n\n var from = this.first,\n to = this.first + this.size;\n\n if (options.from != null && options.from > from) {\n from = options.from;\n }\n\n if (options.to != null && options.to < to) {\n to = options.to;\n }\n\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n\n if (options.sharedHist) {\n copy.history = this.history;\n }\n\n (this.linked || (this.linked = [])).push({\n doc: copy,\n sharedHist: options.sharedHist\n });\n copy.linked = [{\n doc: this,\n isParent: true,\n sharedHist: options.sharedHist\n }];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy;\n },\n unlinkDoc: function (other) {\n if (other instanceof CodeMirror) {\n other = other.doc;\n }\n\n if (this.linked) {\n for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n\n if (link.doc != other) {\n continue;\n }\n\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break;\n }\n } // If the histories were shared, split them again\n\n\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) {\n return splitIds.push(doc.id);\n }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function (f) {\n linkedDocs(this, f);\n },\n getMode: function () {\n return this.mode;\n },\n getEditor: function () {\n return this.cm;\n },\n splitLines: function (str) {\n if (this.lineSep) {\n return str.split(this.lineSep);\n }\n\n return splitLinesAuto(str);\n },\n lineSeparator: function () {\n return this.lineSep || \"\\n\";\n },\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") {\n dir = \"ltr\";\n }\n\n if (dir == this.direction) {\n return;\n }\n\n this.direction = dir;\n this.iter(function (line) {\n return line.order = null;\n });\n\n if (this.cm) {\n directionChanged(this.cm);\n }\n })\n }); // Public alias.\n\n Doc.prototype.eachLine = Doc.prototype.iter; // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n\n if (ie) {\n lastDrop = +new Date();\n }\n\n var pos = posFromMouse(cm, e, true),\n files = e.dataTransfer.files;\n\n if (!pos || cm.isReadOnly()) {\n return;\n } // Might be a file drop, in which case we simply extract the text\n // and insert it.\n\n\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length,\n text = Array(n),\n read = 0;\n\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {\n from: pos,\n to: pos,\n text: cm.doc.splitLines(text.filter(function (t) {\n return t != null;\n }).join(cm.doc.lineSeparator())),\n origin: \"paste\"\n };\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n var reader = new FileReader();\n\n reader.onerror = function () {\n return markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.onload = function () {\n var content = reader.result;\n\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.readAsText(file);\n };\n\n for (var i = 0; i < files.length; i++) {\n readTextFromFile(files[i], i);\n }\n } else {\n // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e); // Ensure the editor is re-focused\n\n setTimeout(function () {\n return cm.display.input.focus();\n }, 20);\n return;\n }\n\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n\n if (text$1) {\n var selected;\n\n if (cm.state.draggingText && !cm.state.draggingText.copy) {\n selected = cm.listSelections();\n }\n\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n\n if (selected) {\n for (var i$1 = 0; i$1 < selected.length; ++i$1) {\n replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\");\n }\n }\n\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n } catch (e$1) {}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date() - lastDrop < 100)) {\n e_stop(e);\n return;\n }\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\"; // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img); // Force a relayout, or Opera won't use our image for some obscure reason\n\n img._top = img.offsetTop;\n }\n\n e.dataTransfer.setDragImage(img, 0, 0);\n\n if (presto) {\n img.parentNode.removeChild(img);\n }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n\n if (!pos) {\n return;\n }\n\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n } // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) {\n return;\n }\n\n var byClass = document.getElementsByClassName(\"CodeMirror\"),\n editors = [];\n\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n\n if (cm) {\n editors.push(cm);\n }\n }\n\n if (editors.length) {\n editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) {\n f(editors[i]);\n }\n });\n }\n }\n\n var globalsRegistered = false;\n\n function ensureGlobalHandlers() {\n if (globalsRegistered) {\n return;\n }\n\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) {\n resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100);\n }\n }); // When the window loses focus, we want to show the editor as blurred\n\n on(window, \"blur\", function () {\n return forEachCodeMirror(onBlur);\n });\n } // Called when the window resizes\n\n\n function onResize(cm) {\n var d = cm.display; // Might be a text scaling operation, clear size caches.\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\",\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Ctrl\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"PrintScrn\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Mod\",\n 92: \"Mod\",\n 93: \"Mod\",\n 106: \"*\",\n 107: \"=\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 145: \"ScrollLock\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 224: \"Mod\",\n 63232: \"Up\",\n 63233: \"Down\",\n 63234: \"Left\",\n 63235: \"Right\",\n 63272: \"Delete\",\n 63273: \"Home\",\n 63275: \"End\",\n 63276: \"PageUp\",\n 63277: \"PageDown\",\n 63302: \"Insert\"\n }; // Number keys\n\n for (var i = 0; i < 10; i++) {\n keyNames[i + 48] = keyNames[i + 96] = String(i);\n } // Alphabetic keys\n\n\n for (var i$1 = 65; i$1 <= 90; i$1++) {\n keyNames[i$1] = String.fromCharCode(i$1);\n } // Function keys\n\n\n for (var i$2 = 1; i$2 <= 12; i$2++) {\n keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n }\n\n var keyMap = {};\n keyMap.basic = {\n \"Left\": \"goCharLeft\",\n \"Right\": \"goCharRight\",\n \"Up\": \"goLineUp\",\n \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\",\n \"Home\": \"goLineStartSmart\",\n \"PageUp\": \"goPageUp\",\n \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\",\n \"Backspace\": \"delCharBefore\",\n \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\",\n \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\",\n \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n }; // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\",\n \"Ctrl-D\": \"deleteLine\",\n \"Ctrl-Z\": \"undo\",\n \"Shift-Ctrl-Z\": \"redo\",\n \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\",\n \"Ctrl-End\": \"goDocEnd\",\n \"Ctrl-Up\": \"goLineUp\",\n \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\",\n \"Ctrl-Right\": \"goGroupRight\",\n \"Alt-Left\": \"goLineStart\",\n \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\",\n \"Ctrl-Delete\": \"delGroupAfter\",\n \"Ctrl-S\": \"save\",\n \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\",\n \"Shift-Ctrl-G\": \"findPrev\",\n \"Shift-Ctrl-F\": \"replace\",\n \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\",\n \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\",\n \"Shift-Ctrl-U\": \"redoSelection\",\n \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n }; // Very basic readline/emacs-style bindings, which are standard on Mac.\n\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\",\n \"Ctrl-B\": \"goCharLeft\",\n \"Ctrl-P\": \"goLineUp\",\n \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\",\n \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\",\n \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\",\n \"Ctrl-H\": \"delCharBefore\",\n \"Alt-Backspace\": \"delWordBefore\",\n \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\",\n \"Cmd-D\": \"deleteLine\",\n \"Cmd-Z\": \"undo\",\n \"Shift-Cmd-Z\": \"redo\",\n \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\",\n \"Cmd-Up\": \"goDocStart\",\n \"Cmd-End\": \"goDocEnd\",\n \"Cmd-Down\": \"goDocEnd\",\n \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\",\n \"Cmd-Left\": \"goLineLeft\",\n \"Cmd-Right\": \"goLineRight\",\n \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n \"Alt-Delete\": \"delGroupAfter\",\n \"Cmd-S\": \"save\",\n \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\",\n \"Shift-Cmd-G\": \"findPrev\",\n \"Cmd-Alt-F\": \"replace\",\n \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\",\n \"Cmd-]\": \"indentMore\",\n \"Cmd-Backspace\": \"delWrappedLineLeft\",\n \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\",\n \"Shift-Cmd-U\": \"redoSelection\",\n \"Ctrl-Up\": \"goDocStart\",\n \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault; // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n\n if (/^(cmd|meta|m)$/i.test(mod)) {\n cmd = true;\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n } else {\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n }\n\n if (alt) {\n name = \"Alt-\" + name;\n }\n\n if (ctrl) {\n name = \"Ctrl-\" + name;\n }\n\n if (cmd) {\n name = \"Cmd-\" + name;\n }\n\n if (shift) {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n\n\n function normalizeKeyMap(keymap) {\n var copy = {};\n\n for (var keyname in keymap) {\n if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n continue;\n }\n\n if (value == \"...\") {\n delete keymap[keyname];\n continue;\n }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n\n for (var i = 0; i < keys.length; i++) {\n var val = void 0,\n name = void 0;\n\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n\n var prev = copy[name];\n\n if (!prev) {\n copy[name] = val;\n } else if (prev != val) {\n throw new Error(\"Inconsistent bindings for \" + name);\n }\n }\n\n delete keymap[keyname];\n }\n }\n\n for (var prop in copy) {\n keymap[prop] = copy[prop];\n }\n\n return keymap;\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n\n if (found === false) {\n return \"nothing\";\n }\n\n if (found === \"...\") {\n return \"multi\";\n }\n\n if (found != null && handle(found)) {\n return \"handled\";\n }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\") {\n return lookupKey(key, map.fallthrough, handle, context);\n }\n\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n\n if (result) {\n return result;\n }\n }\n }\n } // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n\n\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n\n if (event.altKey && base != \"Alt\") {\n name = \"Alt-\" + name;\n }\n\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") {\n name = \"Ctrl-\" + name;\n }\n\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") {\n name = \"Cmd-\" + name;\n }\n\n if (!noShift && event.shiftKey && base != \"Shift\") {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // Look up the name of a key as indicated by an event object.\n\n\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) {\n return false;\n }\n\n var name = keyNames[event.keyCode];\n\n if (name == null || event.altGraphKey) {\n return false;\n } // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n\n\n if (event.keyCode == 3 && event.code) {\n name = event.code;\n }\n\n return addModifierNames(name, event, noShift);\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val;\n } // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n\n\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges,\n kill = []; // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break;\n }\n }\n\n kill.push(toKill);\n } // Next, remove those actual ranges.\n\n\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--) {\n replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\");\n }\n\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target;\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\");\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") {\n dir = -dir;\n }\n\n var order = getOrder(lineObj, cm.doc.direction);\n\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = dir < 0 == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch; // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) {\n return measureCharPrepared(cm, prep, ch).top == targetTop;\n }, dir < 0 == (part.level == 1) ? part.from : part.to - 1, ch);\n\n if (sticky == \"before\") {\n ch = moveCharLogically(lineObj, ch, 1);\n }\n } else {\n ch = dir < 0 ? part.to : part.from;\n }\n\n return new Pos(lineNo, ch, sticky);\n }\n }\n\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\");\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n\n if (!bidi) {\n return moveLogically(line, start, dir);\n }\n\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky),\n part = bidi[partPos];\n\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir);\n }\n\n var mv = function (pos, dir) {\n return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir);\n };\n\n var prep;\n\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) {\n return {\n begin: 0,\n end: line.text.length\n };\n }\n\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch);\n };\n\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = part.level == 1 == dir < 0;\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky);\n }\n } // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) {\n return moveInStorageOrder ? new Pos(start.line, mv(ch, 1), \"before\") : new Pos(start.line, ch, \"after\");\n };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = dir > 0 == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n\n if (part.from <= ch && ch < part.to) {\n return getRes(ch, moveInStorageOrder);\n }\n\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) {\n return getRes(ch, moveInStorageOrder);\n }\n }\n }; // Case 3a: Look for other bidi parts on the same visual line\n\n\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n\n if (res) {\n return res;\n } // Case 3b: Look for other bidi parts on the next visual line\n\n\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n\n if (res) {\n return res;\n }\n } // Case 4: Nowhere to move\n\n\n return null;\n } // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n\n\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) {\n return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n },\n killLine: function (cm) {\n return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n\n if (range.head.ch == len && range.head.line < cm.lastLine()) {\n return {\n from: range.head,\n to: Pos(range.head.line + 1, 0)\n };\n } else {\n return {\n from: range.head,\n to: Pos(range.head.line, len)\n };\n }\n } else {\n return {\n from: range.from(),\n to: range.to()\n };\n }\n });\n },\n deleteLine: function (cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n };\n });\n },\n delLineLeft: function (cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: range.from()\n };\n });\n },\n delWrappedLineLeft: function (cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n return {\n from: leftPos,\n to: range.from()\n };\n });\n },\n delWrappedLineRight: function (cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n return {\n from: range.from(),\n to: rightPos\n };\n });\n },\n undo: function (cm) {\n return cm.undo();\n },\n redo: function (cm) {\n return cm.redo();\n },\n undoSelection: function (cm) {\n return cm.undoSelection();\n },\n redoSelection: function (cm) {\n return cm.redoSelection();\n },\n goDocStart: function (cm) {\n return cm.extendSelection(Pos(cm.firstLine(), 0));\n },\n goDocEnd: function (cm) {\n return cm.extendSelection(Pos(cm.lastLine()));\n },\n goLineStart: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStart(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineStartSmart: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStartSmart(cm, range.head);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineEnd: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineEnd(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: -1\n });\n },\n goLineRight: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeft: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeftSmart: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) {\n return lineStartSmart(cm, range.head);\n }\n\n return pos;\n }, sel_move);\n },\n goLineUp: function (cm) {\n return cm.moveV(-1, \"line\");\n },\n goLineDown: function (cm) {\n return cm.moveV(1, \"line\");\n },\n goPageUp: function (cm) {\n return cm.moveV(-1, \"page\");\n },\n goPageDown: function (cm) {\n return cm.moveV(1, \"page\");\n },\n goCharLeft: function (cm) {\n return cm.moveH(-1, \"char\");\n },\n goCharRight: function (cm) {\n return cm.moveH(1, \"char\");\n },\n goColumnLeft: function (cm) {\n return cm.moveH(-1, \"column\");\n },\n goColumnRight: function (cm) {\n return cm.moveH(1, \"column\");\n },\n goWordLeft: function (cm) {\n return cm.moveH(-1, \"word\");\n },\n goGroupRight: function (cm) {\n return cm.moveH(1, \"group\");\n },\n goGroupLeft: function (cm) {\n return cm.moveH(-1, \"group\");\n },\n goWordRight: function (cm) {\n return cm.moveH(1, \"word\");\n },\n delCharBefore: function (cm) {\n return cm.deleteH(-1, \"codepoint\");\n },\n delCharAfter: function (cm) {\n return cm.deleteH(1, \"char\");\n },\n delWordBefore: function (cm) {\n return cm.deleteH(-1, \"word\");\n },\n delWordAfter: function (cm) {\n return cm.deleteH(1, \"word\");\n },\n delGroupBefore: function (cm) {\n return cm.deleteH(-1, \"group\");\n },\n delGroupAfter: function (cm) {\n return cm.deleteH(1, \"group\");\n },\n indentAuto: function (cm) {\n return cm.indentSelection(\"smart\");\n },\n indentMore: function (cm) {\n return cm.indentSelection(\"add\");\n },\n indentLess: function (cm) {\n return cm.indentSelection(\"subtract\");\n },\n insertTab: function (cm) {\n return cm.replaceSelection(\"\\t\");\n },\n insertSoftTab: function (cm) {\n var spaces = [],\n ranges = cm.listSelections(),\n tabSize = cm.options.tabSize;\n\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) {\n cm.indentSelection(\"add\");\n } else {\n cm.execCommand(\"insertTab\");\n }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) {\n return runInOp(cm, function () {\n var ranges = cm.listSelections(),\n newSel = [];\n\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) {\n continue;\n }\n\n var cur = ranges[i].head,\n line = getLine(cm.doc, cur.line).text;\n\n if (line) {\n if (cur.ch == line.length) {\n cur = new Pos(cur.line, cur.ch - 1);\n }\n\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n\n newSel.push(new Range(cur, cur));\n }\n\n cm.setSelections(newSel);\n });\n },\n newlineAndIndent: function (cm) {\n return runInOp(cm, function () {\n var sels = cm.listSelections();\n\n for (var i = sels.length - 1; i >= 0; i--) {\n cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\");\n }\n\n sels = cm.listSelections();\n\n for (var i$1 = 0; i$1 < sels.length; i$1++) {\n cm.indentLine(sels[i$1].from().line, null, true);\n }\n\n ensureCursorVisible(cm);\n });\n },\n openLine: function (cm) {\n return cm.replaceSelection(\"\\n\", \"start\");\n },\n toggleOverwrite: function (cm) {\n return cm.toggleOverwrite();\n }\n };\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, visual, lineN, 1);\n }\n\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, line, lineN, -1);\n }\n\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky);\n }\n\n return start;\n } // Run a handler that was bound to a key.\n\n\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n\n if (!bound) {\n return false;\n }\n } // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n\n\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift,\n done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n if (dropShift) {\n cm.display.shift = false;\n }\n\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n\n return done;\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n\n if (result) {\n return result;\n }\n }\n\n return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n } // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n\n var stopSeq = new Delayed();\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n\n if (seq) {\n if (isModifierKey(name)) {\n return \"handled\";\n }\n\n if (/\\'$/.test(name)) {\n cm.state.keySeq = null;\n } else {\n stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n });\n }\n\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n return true;\n }\n }\n\n return dispatchKeyInner(cm, name, e, handle);\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\") {\n cm.state.keySeq = name;\n }\n\n if (result == \"handled\") {\n signalLater(cm, \"keyHandled\", cm, name, e);\n }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result;\n } // Handle a key from the keydown event.\n\n\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n\n if (!name) {\n return false;\n }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) {\n return doHandleBinding(cm, b, true);\n }) || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion) {\n return doHandleBinding(cm, b);\n }\n });\n } else {\n return dispatchKey(cm, name, e, function (b) {\n return doHandleBinding(cm, b);\n });\n }\n } // Handle a key from the keypress event\n\n\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) {\n return doHandleBinding(cm, b, true);\n });\n }\n\n var lastStoppedKey = null;\n\n function onKeyDown(e) {\n var cm = this;\n\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n\n cm.curOp.focus = activeElt();\n\n if (signalDOMEvent(cm, e)) {\n return;\n } // IE does strange things with escape.\n\n\n if (ie && ie_version < 11 && e.keyCode == 27) {\n e.returnValue = false;\n }\n\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n\n if (presto) {\n lastStoppedKey = handled ? code : null; // Opera has no cut event... we try to at least catch the key combo\n\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n }\n\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) {\n document.execCommand(\"cut\");\n } // Turn mouse into crosshair when Alt is held on Mac.\n\n\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n showCrossHair(cm);\n }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) {\n this.doc.sel.shift = false;\n }\n\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n return;\n }\n\n var keyCode = e.keyCode,\n charCode = e.charCode;\n\n if (presto && keyCode == lastStoppedKey) {\n lastStoppedKey = null;\n e_preventDefault(e);\n return;\n }\n\n if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) {\n return;\n }\n\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode); // Some browsers fire keypress events for backspace\n\n if (ch == \"\\x08\") {\n return;\n }\n\n if (handleCharBinding(cm, e, ch)) {\n return;\n }\n\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function (time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time && cmp(pos, this.pos) == 0 && button == this.button;\n };\n\n var lastClick, lastDoubleClick;\n\n function clickRepeat(pos, button) {\n var now = +new Date();\n\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\";\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\";\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\";\n }\n } // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n\n\n function onMouseDown(e) {\n var cm = this,\n display = cm.display;\n\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n return;\n }\n\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () {\n return display.scroller.draggable = true;\n }, 100);\n }\n\n return;\n }\n\n if (clickInGutter(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e),\n button = e_button(e),\n repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus(); // #3261: make sure, that we're not starting a second selection\n\n if (button == 1 && cm.state.selectingText) {\n cm.state.selectingText(e);\n }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n return;\n }\n\n if (button == 1) {\n if (pos) {\n leftButtonDown(cm, pos, repeat, e);\n } else if (e_target(e) == display.scroller) {\n e_preventDefault(e);\n }\n } else if (button == 2) {\n if (pos) {\n extendSelection(cm.doc, pos);\n }\n\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n } else if (button == 3) {\n if (captureRightClick) {\n cm.display.input.onContextMenu(e);\n } else {\n delayBlurEvent(cm);\n }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n\n if (repeat == \"double\") {\n name = \"Double\" + name;\n } else if (repeat == \"triple\") {\n name = \"Triple\" + name;\n }\n\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n }\n\n if (!bound) {\n return false;\n }\n\n var done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n\n return done;\n });\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n\n if (value.extend == null || cm.doc.extend) {\n value.extend = cm.doc.extend || event.shiftKey;\n }\n\n if (value.addNew == null) {\n value.addNew = mac ? event.metaKey : event.ctrlKey;\n }\n\n if (value.moveOnDrag == null) {\n value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n }\n\n return value;\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) {\n setTimeout(bind(ensureFocus, cm), 0);\n } else {\n cm.curOp.focus = activeElt();\n }\n\n var behavior = configureMouse(cm, repeat, event);\n var sel = cm.doc.sel,\n contained;\n\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) {\n leftButtonStartDrag(cm, event, pos, behavior);\n } else {\n leftButtonSelect(cm, event, pos, behavior);\n }\n } // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n\n\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display,\n moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) {\n display.scroller.draggable = false;\n }\n\n cm.state.draggingText = false;\n\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) {\n cm.state.delayingBlurEvent = false;\n } else {\n delayBlurEvent(cm);\n }\n }\n\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n\n if (!moved) {\n e_preventDefault(e);\n\n if (!behavior.addNew) {\n extendSelection(cm.doc, pos, null, null, behavior.extend);\n } // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n\n\n if (webkit && !safari || ie && ie_version == 9) {\n setTimeout(function () {\n display.wrapper.ownerDocument.body.focus({\n preventScroll: true\n });\n display.input.focus();\n }, 20);\n } else {\n display.input.focus();\n }\n }\n });\n\n var mouseMove = function (e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n\n var dragStart = function () {\n return moved = true;\n }; // Let the drag handler handle this.\n\n\n if (webkit) {\n display.scroller.draggable = true;\n }\n\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n return display.input.focus();\n }, 20); // IE's approach to draggable\n\n if (display.scroller.dragDrop) {\n display.scroller.dragDrop();\n }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") {\n return new Range(pos, pos);\n }\n\n if (unit == \"word\") {\n return cm.findWordAt(pos);\n }\n\n if (unit == \"line\") {\n return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n var result = unit(cm, pos);\n return new Range(result.from, result.to);\n } // Normal selection, as opposed to text dragging.\n\n\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) {\n delayBlurEvent(cm);\n }\n\n var display = cm.display,\n doc = cm.doc;\n e_preventDefault(event);\n var ourRange,\n ourIndex,\n startSel = doc.sel,\n ranges = startSel.ranges;\n\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n\n if (ourIndex > -1) {\n ourRange = ranges[ourIndex];\n } else {\n ourRange = new Range(start, start);\n }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) {\n ourRange = new Range(start, start);\n }\n\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n\n if (behavior.extend) {\n ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend);\n } else {\n ourRange = range;\n }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), {\n scroll: false,\n origin: \"*mouse\"\n });\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {\n scroll: false,\n origin: \"*mouse\"\n });\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) {\n return;\n }\n\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [],\n tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol),\n right = Math.max(startCol, posCol);\n\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) {\n var text = getLine(doc, line).text,\n leftPos = findColumn(text, left, tabSize);\n\n if (left == right) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n } else if (text.length > leftPos) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n }\n }\n\n if (!ranges.length) {\n ranges.push(new Range(start, start));\n }\n\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), {\n origin: \"*mouse\",\n scroll: false\n });\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor,\n head;\n\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect(); // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n\n if (!cur) {\n return;\n }\n\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n\n if (cur.line >= visible.to || cur.line < visible.from) {\n setTimeout(operation(cm, function () {\n if (counter == curCount) {\n extend(e);\n }\n }), 150);\n }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n\n if (outside) {\n setTimeout(operation(cm, function () {\n if (counter != curCount) {\n return;\n }\n\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50);\n }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity; // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) {\n done(e);\n } else {\n extend(e);\n }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n } // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n\n\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {\n return range;\n }\n\n var order = getOrder(anchorLine);\n\n if (!order) {\n return range;\n }\n\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky),\n part = order[index];\n\n if (part.from != anchor.ch && part.to != anchor.ch) {\n return range;\n }\n\n var boundary = index + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n\n if (boundary == 0 || boundary == order.length) {\n return range;\n } // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n\n\n var leftSide;\n\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n\n if (headIndex == boundary - 1 || headIndex == boundary) {\n leftSide = dir < 0;\n } else {\n leftSide = dir > 0;\n }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to,\n sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head);\n } // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n\n\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try {\n mX = e.clientX;\n mY = e.clientY;\n } catch (e$1) {\n return false;\n }\n }\n\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n return false;\n }\n\n if (prevent) {\n e_preventDefault(e);\n }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n return e_defaultPrevented(e);\n }\n\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e);\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true);\n } // CONTEXT MENU HANDLING\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n\n\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n return;\n }\n\n if (signalDOMEvent(cm, e, \"contextmenu\")) {\n return;\n }\n\n if (!captureRightClick) {\n cm.display.input.onContextMenu(e);\n }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) {\n return false;\n }\n\n return gutterEvent(cm, e, \"gutterContextMenu\", false);\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {\n toString: function () {\n return \"CodeMirror.Init\";\n }\n };\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n\n if (handle) {\n optionHandlers[name] = notOnInit ? function (cm, val, old) {\n if (old != Init) {\n handle(cm, val, old);\n }\n } : handle;\n }\n }\n\n CodeMirror.defineOption = option; // Passed to option handlers when there is no old value.\n\n CodeMirror.Init = Init; // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n\n option(\"value\", \"\", function (cm, val) {\n return cm.setValue(val);\n }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n\n if (!val) {\n return;\n }\n\n var newBreaks = [],\n lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n\n if (found == -1) {\n break;\n }\n\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n\n lineNo++;\n });\n\n for (var i = newBreaks.length - 1; i >= 0; i--) {\n replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length));\n }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n\n if (old != Init) {\n cm.refresh();\n }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) {\n return cm.refresh();\n }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\"); // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) {\n return cm.getInputField().spellcheck = val;\n }, true);\n option(\"autocorrect\", false, function (cm, val) {\n return cm.getInputField().autocorrect = val;\n }, true);\n option(\"autocapitalize\", false, function (cm, val) {\n return cm.getInputField().autocapitalize = val;\n }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n\n if (prev && prev.detach) {\n prev.detach(cm, next);\n }\n\n if (next.attach) {\n next.attach(cm, prev || null);\n }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) {\n return updateScrollbars(cm);\n }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) {\n return integer;\n }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n\n cm.display.input.readOnlyChanged(val);\n });\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = val === '' ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {\n if (!val) {\n cm.display.input.reset();\n }\n }, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) {\n return cm.doc.history.undoDepth = val;\n });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) {\n return cm.refresh();\n }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) {\n cm.display.input.resetPosition();\n }\n });\n option(\"tabindex\", null, function (cm, val) {\n return cm.display.input.getField().tabIndex = val || \"\";\n });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) {\n return cm.doc.setDirection(val);\n }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () {\n return updateScrollbars(cm);\n }, 100);\n } // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) {\n return new CodeMirror(place, options);\n }\n\n this.options = options = options ? copyObj(options) : {}; // Determine effective options based on given values and defaults.\n\n copyObj(defaults, options, false);\n var doc = options.value;\n\n if (typeof doc == \"string\") {\n doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n } else if (options.mode) {\n doc.modeOption = options.mode;\n }\n\n this.doc = doc;\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n\n if (options.lineWrapping) {\n this.display.wrapper.className += \" CodeMirror-wrap\";\n }\n\n initScrollbars(this);\n this.state = {\n keyMaps: [],\n // stores maps added by addKeyMap\n overlays: [],\n // highlighting overlays, as added by addOverlay\n modeGen: 0,\n // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false,\n // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1,\n cutIncoming: -1,\n // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(),\n // stores highlight worker timeout\n keySeq: null,\n // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) {\n display.input.focus();\n } // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n\n\n if (ie && ie_version < 11) {\n setTimeout(function () {\n return this$1.display.input.reset(true);\n }, 20);\n }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if (options.autofocus && !mobile || this.hasFocus()) {\n setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) {\n onFocus(this$1);\n }\n }, 20);\n } else {\n onBlur(this);\n }\n\n for (var opt in optionHandlers) {\n if (optionHandlers.hasOwnProperty(opt)) {\n optionHandlers[opt](this, options[opt], Init);\n }\n }\n\n maybeUpdateLineNumberWidth(this);\n\n if (options.finishInit) {\n options.finishInit(this);\n }\n\n for (var i = 0; i < initHooks.length; ++i) {\n initHooks[i](this);\n }\n\n endOperation(this); // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n\n if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") {\n display.lineDiv.style.textRendering = \"auto\";\n }\n } // The default configuration options.\n\n\n CodeMirror.defaults = defaults; // Functions to run when options are changed.\n\n CodeMirror.optionHandlers = optionHandlers; // Attach the necessary event handlers when initializing the editor\n\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown)); // Older IE's will not fire a second mousedown for a double click\n\n if (ie && ie_version < 11) {\n on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e);\n\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n }));\n } else {\n on(d.scroller, \"dblclick\", function (e) {\n return signalDOMEvent(cm, e) || e_preventDefault(e);\n });\n } // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n\n\n on(d.scroller, \"contextmenu\", function (e) {\n return onContextMenu(cm, e);\n });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) {\n onContextMenu(cm, e);\n }\n }); // Used to suppress mouse event handling when a touch happens\n\n var touchFinished,\n prevTouch = {\n end: 0\n };\n\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () {\n return d.activeTouch = null;\n }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date();\n }\n }\n\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) {\n return false;\n }\n\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1;\n }\n\n function farAway(touch, other) {\n if (other.left == null) {\n return true;\n }\n\n var dx = other.left - touch.left,\n dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20;\n }\n\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date();\n d.activeTouch = {\n start: now,\n moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null\n };\n\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) {\n d.activeTouch.moved = true;\n }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n\n if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && new Date() - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"),\n range;\n\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n {\n range = new Range(pos, pos);\n } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n {\n range = cm.findWordAt(pos);\n } else // Triple tap\n {\n range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch); // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n }); // Listen to wheel events in order to try and update the viewport on time.\n\n on(d.scroller, \"mousewheel\", function (e) {\n return onScrollWheel(cm, e);\n });\n on(d.scroller, \"DOMMouseScroll\", function (e) {\n return onScrollWheel(cm, e);\n }); // Prevent wrapper from ever scrolling\n\n on(d.wrapper, \"scroll\", function () {\n return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n });\n d.dragFunctions = {\n enter: function (e) {\n if (!signalDOMEvent(cm, e)) {\n e_stop(e);\n }\n },\n over: function (e) {\n if (!signalDOMEvent(cm, e)) {\n onDragOver(cm, e);\n e_stop(e);\n }\n },\n start: function (e) {\n return onDragStart(cm, e);\n },\n drop: operation(cm, onDrop),\n leave: function (e) {\n if (!signalDOMEvent(cm, e)) {\n clearDragCursor(cm);\n }\n }\n };\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) {\n return onKeyUp.call(cm, e);\n });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) {\n return onFocus(cm, e);\n });\n on(inp, \"blur\", function (e) {\n return onBlur(cm, e);\n });\n }\n\n var initHooks = [];\n\n CodeMirror.defineInitHook = function (f) {\n return initHooks.push(f);\n }; // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n\n\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc,\n state;\n\n if (how == null) {\n how = \"add\";\n }\n\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) {\n how = \"prev\";\n } else {\n state = getContextBefore(cm, n).state;\n }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n),\n curSpace = countColumn(line.text, null, tabSize);\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n var curSpaceString = line.text.match(/^\\s*/)[0],\n indentation;\n\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) {\n return;\n }\n\n how = \"prev\";\n }\n }\n\n if (how == \"prev\") {\n if (n > doc.first) {\n indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n } else {\n indentation = 0;\n }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n\n indentation = Math.max(0, indentation);\n var indentString = \"\",\n pos = 0;\n\n if (cm.options.indentWithTabs) {\n for (var i = Math.floor(indentation / tabSize); i; --i) {\n pos += tabSize;\n indentString += \"\\t\";\n }\n }\n\n if (pos < indentation) {\n indentString += spaceStr(indentation - pos);\n }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true;\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break;\n }\n }\n }\n } // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n\n\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n\n if (!sel) {\n sel = doc.sel;\n }\n\n var recent = +new Date() - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted),\n multiPaste = null; // When pasting N lines into N selections, insert one line per selection\n\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n\n for (var i = 0; i < lastCopied.text.length; i++) {\n multiPaste.push(doc.splitLines(lastCopied.text[i]));\n }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) {\n return [l];\n });\n }\n }\n\n var updateInput = cm.curOp.updateInput; // Normal behavior is to insert the new text into every selection\n\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(),\n to = range.to();\n\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n {\n from = Pos(from.line, from.ch - deleted);\n } else if (cm.state.overwrite && !paste) // Handle overwrite\n {\n to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n } else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\")) {\n from = to = Pos(from.line, 0);\n }\n }\n\n var changeEvent = {\n from: from,\n to: to,\n text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n };\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n\n if (inserted && !paste) {\n triggerElectric(cm, inserted);\n }\n\n ensureCursorVisible(cm);\n\n if (cm.curOp.updateInput < 2) {\n cm.curOp.updateInput = updateInput;\n }\n\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n\n if (pasted) {\n e.preventDefault();\n\n if (!cm.isReadOnly() && !cm.options.disableInput) {\n runInOp(cm, function () {\n return applyTextInput(cm, pasted, 0, null, \"paste\");\n });\n }\n\n return true;\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) {\n return;\n }\n\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n\n if (range.head.ch > 100 || i && sel.ranges[i - 1].head.line == range.head.line) {\n continue;\n }\n\n var mode = cm.getModeAt(range.head);\n var indented = false;\n\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++) {\n if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break;\n }\n }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) {\n indented = indentLine(cm, range.head.line, \"smart\");\n }\n }\n\n if (indented) {\n signalLater(cm, \"electricInput\", cm, range.head.line);\n }\n }\n }\n\n function copyableRanges(cm) {\n var text = [],\n ranges = [];\n\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {\n anchor: Pos(line, 0),\n head: Pos(line + 1, 0)\n };\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n\n return {\n text: text,\n ranges: ranges\n };\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\"); // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n\n if (webkit) {\n te.style.width = \"1000px\";\n } else {\n te.setAttribute(\"wrap\", \"off\");\n } // If border: 0; -- iOS fails to open keyboard (issue #1287)\n\n\n if (ios) {\n te.style.border = \"1px solid black\";\n }\n\n disableBrowserMagic(te);\n return div;\n } // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n var helpers = CodeMirror.helpers = {};\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function () {\n window.focus();\n this.display.input.focus();\n },\n setOption: function (option, value) {\n var options = this.options,\n old = options[option];\n\n if (options[option] == value && option != \"mode\") {\n return;\n }\n\n options[option] = value;\n\n if (optionHandlers.hasOwnProperty(option)) {\n operation(this, optionHandlers[option])(this, value, old);\n }\n\n signal(this, \"optionChange\", this, option);\n },\n getOption: function (option) {\n return this.options[option];\n },\n getDoc: function () {\n return this.doc;\n },\n addKeyMap: function (map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function (map) {\n var maps = this.state.keyMaps;\n\n for (var i = 0; i < maps.length; ++i) {\n if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true;\n }\n }\n },\n addOverlay: methodOp(function (spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n\n if (mode.startState) {\n throw new Error(\"Overlays may not be stateful.\");\n }\n\n insertSorted(this.state.overlays, {\n mode: mode,\n modeSpec: spec,\n opaque: options && options.opaque,\n priority: options && options.priority || 0\n }, function (overlay) {\n return overlay.priority;\n });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function (spec) {\n var overlays = this.state.overlays;\n\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return;\n }\n }\n }),\n indentLine: methodOp(function (n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) {\n dir = this.options.smartIndent ? \"smart\" : \"prev\";\n } else {\n dir = dir ? \"add\" : \"subtract\";\n }\n }\n\n if (isLine(this.doc, n)) {\n indentLine(this, n, dir, aggressive);\n }\n }),\n indentSelection: methodOp(function (how) {\n var ranges = this.doc.sel.ranges,\n end = -1;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n\n if (!range.empty()) {\n var from = range.from(),\n to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n\n for (var j = start; j < end; ++j) {\n indentLine(this, j, how);\n }\n\n var newRanges = this.doc.sel.ranges;\n\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) {\n replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);\n }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n\n if (i == this.doc.sel.primIndex) {\n ensureCursorVisible(this);\n }\n }\n }\n }),\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function (pos, precise) {\n return takeToken(this, pos, precise);\n },\n getLineTokens: function (line, precise) {\n return takeToken(this, Pos(line), precise, true);\n },\n getTokenTypeAt: function (pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0,\n after = (styles.length - 1) / 2,\n ch = pos.ch;\n var type;\n\n if (ch == 0) {\n type = styles[2];\n } else {\n for (;;) {\n var mid = before + after >> 1;\n\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n after = mid;\n } else if (styles[mid * 2 + 1] < ch) {\n before = mid + 1;\n } else {\n type = styles[mid * 2 + 2];\n break;\n }\n }\n }\n\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n },\n getModeAt: function (pos) {\n var mode = this.doc.mode;\n\n if (!mode.innerMode) {\n return mode;\n }\n\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;\n },\n getHelper: function (pos, type) {\n return this.getHelpers(pos, type)[0];\n },\n getHelpers: function (pos, type) {\n var found = [];\n\n if (!helpers.hasOwnProperty(type)) {\n return found;\n }\n\n var help = helpers[type],\n mode = this.getModeAt(pos);\n\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) {\n found.push(help[mode[type]]);\n }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n\n if (val) {\n found.push(val);\n }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) {\n found.push(cur.val);\n }\n }\n\n return found;\n },\n getStateAfter: function (line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line);\n return getContextBefore(this, line + 1, precise).state;\n },\n cursorCoords: function (start, mode) {\n var pos,\n range = this.doc.sel.primary();\n\n if (start == null) {\n pos = range.head;\n } else if (typeof start == \"object\") {\n pos = clipPos(this.doc, start);\n } else {\n pos = start ? range.from() : range.to();\n }\n\n return cursorCoords(this, pos, mode || \"page\");\n },\n charCoords: function (pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\");\n },\n coordsChar: function (coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top);\n },\n lineAtHeight: function (height, mode) {\n height = fromCoordSystem(this, {\n top: height,\n left: 0\n }, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset);\n },\n heightAtLine: function (line, mode, includeWidgets) {\n var end = false,\n lineObj;\n\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n\n if (line < this.doc.first) {\n line = this.doc.first;\n } else if (line > last) {\n line = last;\n end = true;\n }\n\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n\n return intoCoordSystem(this, lineObj, {\n top: 0,\n left: 0\n }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - heightAtLine(lineObj) : 0);\n },\n defaultTextHeight: function () {\n return textHeight(this.display);\n },\n defaultCharWidth: function () {\n return charWidth(this.display);\n },\n getViewport: function () {\n return {\n from: this.display.viewFrom,\n to: this.display.viewTo\n };\n },\n addWidget: function (pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom,\n left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); // Default to positioning above (if specified and possible); otherwise default to positioning below\n\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) {\n top = pos.top - node.offsetHeight;\n } else if (pos.bottom + node.offsetHeight <= vspace) {\n top = pos.bottom;\n }\n\n if (left + node.offsetWidth > hspace) {\n left = hspace - node.offsetWidth;\n }\n }\n\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") {\n left = 0;\n } else if (horiz == \"middle\") {\n left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n }\n\n node.style.left = left + \"px\";\n }\n\n if (scroll) {\n scrollIntoView(this, {\n left: left,\n top: top,\n right: left + node.offsetWidth,\n bottom: top + node.offsetHeight\n });\n }\n },\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n execCommand: function (cmd) {\n if (commands.hasOwnProperty(cmd)) {\n return commands[cmd].call(null, this);\n }\n },\n triggerElectric: methodOp(function (text) {\n triggerElectric(this, text);\n }),\n findPosH: function (from, amount, unit, visually) {\n var dir = 1;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveH: methodOp(function (dir, unit) {\n var this$1 = this;\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty()) {\n return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually);\n } else {\n return dir < 0 ? range.from() : range.to();\n }\n }, sel_move);\n }),\n deleteH: methodOp(function (dir, unit) {\n var sel = this.doc.sel,\n doc = this.doc;\n\n if (sel.somethingSelected()) {\n doc.replaceSelection(\"\", null, \"+delete\");\n } else {\n deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {\n from: other,\n to: range.head\n } : {\n from: range.head,\n to: other\n };\n });\n }\n }),\n findPosV: function (from, amount, unit, goalColumn) {\n var dir = 1,\n x = goalColumn;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n\n if (x == null) {\n x = coords.left;\n } else {\n coords.left = x;\n }\n\n cur = findPosV(this, coords, dir, unit);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveV: methodOp(function (dir, unit) {\n var this$1 = this;\n var doc = this.doc,\n goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse) {\n return dir < 0 ? range.from() : range.to();\n }\n\n var headPos = cursorCoords(this$1, range.head, \"div\");\n\n if (range.goalColumn != null) {\n headPos.left = range.goalColumn;\n }\n\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n\n if (unit == \"page\" && range == doc.sel.primary()) {\n addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top);\n }\n\n return pos;\n }, sel_move);\n\n if (goals.length) {\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n doc.sel.ranges[i].goalColumn = goals[i];\n }\n }\n }),\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function (pos) {\n var doc = this.doc,\n line = getLine(doc, pos.line).text;\n var start = pos.ch,\n end = pos.ch;\n\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n\n if ((pos.sticky == \"before\" || end == line.length) && start) {\n --start;\n } else {\n ++end;\n }\n\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper) ? function (ch) {\n return isWordChar(ch, helper);\n } : /\\s/.test(startChar) ? function (ch) {\n return /\\s/.test(ch);\n } : function (ch) {\n return !/\\s/.test(ch) && !isWordChar(ch);\n };\n\n while (start > 0 && check(line.charAt(start - 1))) {\n --start;\n }\n\n while (end < line.length && check(line.charAt(end))) {\n ++end;\n }\n }\n\n return new Range(Pos(pos.line, start), Pos(pos.line, end));\n },\n toggleOverwrite: function (value) {\n if (value != null && value == this.state.overwrite) {\n return;\n }\n\n if (this.state.overwrite = !this.state.overwrite) {\n addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n } else {\n rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function () {\n return this.display.input.getField() == activeElt();\n },\n isReadOnly: function () {\n return !!(this.options.readOnly || this.doc.cantEdit);\n },\n scrollTo: methodOp(function (x, y) {\n scrollToCoords(this, x, y);\n }),\n getScrollInfo: function () {\n var scroller = this.display.scroller;\n return {\n left: scroller.scrollLeft,\n top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this),\n clientWidth: displayWidth(this)\n };\n },\n scrollIntoView: methodOp(function (range, margin) {\n if (range == null) {\n range = {\n from: this.doc.sel.primary().head,\n to: null\n };\n\n if (margin == null) {\n margin = this.options.cursorScrollMargin;\n }\n } else if (typeof range == \"number\") {\n range = {\n from: Pos(range, 0),\n to: null\n };\n } else if (range.from == null) {\n range = {\n from: range,\n to: null\n };\n }\n\n if (!range.to) {\n range.to = range.from;\n }\n\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n setSize: methodOp(function (width, height) {\n var this$1 = this;\n\n var interpret = function (val) {\n return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n };\n\n if (width != null) {\n this.display.wrapper.style.width = interpret(width);\n }\n\n if (height != null) {\n this.display.wrapper.style.height = interpret(height);\n }\n\n if (this.options.lineWrapping) {\n clearLineMeasurementCache(this);\n }\n\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].noHScroll) {\n regLineChange(this$1, lineNo, \"widget\");\n break;\n }\n }\n }\n\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n operation: function (f) {\n return runInOp(this, f);\n },\n startOperation: function () {\n return startOperation(this);\n },\n endOperation: function () {\n return endOperation(this);\n },\n refresh: methodOp(function () {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping) {\n estimateLineHeights(this);\n }\n\n signal(this, \"refresh\", this);\n }),\n swapDoc: methodOp(function (doc) {\n var old = this.doc;\n old.cm = null; // Cancel the current text selection if any (#5821)\n\n if (this.state.selectingText) {\n this.state.selectingText();\n }\n\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old;\n }),\n phrase: function (phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n },\n getInputField: function () {\n return this.display.input.getField();\n },\n getWrapperElement: function () {\n return this.display.wrapper;\n },\n getScrollerElement: function () {\n return this.display.scroller;\n },\n getGutterElement: function () {\n return this.display.gutters;\n }\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function (type, name, value) {\n if (!helpers.hasOwnProperty(type)) {\n helpers[type] = CodeMirror[type] = {\n _global: []\n };\n }\n\n helpers[type][name] = value;\n };\n\n CodeMirror.registerGlobalHelper = function (type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n\n helpers[type]._global.push({\n pred: predicate,\n val: value\n });\n };\n } // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n\n\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n\n function findNextLine() {\n var l = pos.line + lineDir;\n\n if (l < doc.first || l >= doc.first + doc.size) {\n return false;\n }\n\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l);\n }\n\n function moveOnce(boundToLine) {\n var next;\n\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n\n if (next == null) {\n if (!boundToLine && findNextLine()) {\n pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n } else {\n return false;\n }\n } else {\n pos = next;\n }\n\n return true;\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null,\n group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) {\n break;\n }\n\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n\n if (group && !first && !type) {\n type = \"s\";\n }\n\n if (sawType && sawType != type) {\n if (dir < 0) {\n dir = 1;\n moveOnce();\n pos.sticky = \"after\";\n }\n\n break;\n }\n\n if (type) {\n sawType = type;\n }\n\n if (dir > 0 && !moveOnce(!first)) {\n break;\n }\n }\n }\n\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n\n if (equalCursorPos(oldPos, result)) {\n result.hitSide = true;\n }\n\n return result;\n } // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n\n\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc,\n x = pos.left,\n y;\n\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n\n var target;\n\n for (;;) {\n target = coordsChar(cm, x, y);\n\n if (!target.outside) {\n break;\n }\n\n if (dir < 0 ? y <= 0 : y >= doc.height) {\n target.hitSide = true;\n break;\n }\n\n y += dir * 5;\n }\n\n return target;\n } // CONTENTEDITABLE INPUT STYLE\n\n\n var ContentEditableInput = function (cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) {\n return true;\n }\n\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) {\n break;\n }\n }\n\n return false;\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n } // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n\n\n if (ie_version <= 11) {\n setTimeout(operation(cm, function () {\n return this$1.updateFromDOM();\n }), 20);\n }\n });\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) {\n this$1.readFromDOMSoon();\n }\n\n this$1.composing.done = true;\n }\n });\n on(div, \"touchstart\", function () {\n return input.forceCompositionEnd();\n });\n on(div, \"input\", function () {\n if (!this$1.composing) {\n this$1.readFromDOMSoon();\n }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n\n if (e.type == \"cut\") {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\"); // iOS exposes the clipboard API, but seems to discard content inserted into it\n\n e.clipboardData.setData(\"Text\", content);\n\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return;\n }\n } // Old-fashioned briefly-focus-a-textarea hack\n\n\n var kludge = hiddenTextarea(),\n te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n\n if (hadFocus == div) {\n input.showPrimarySelection();\n }\n }, 50);\n }\n\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result;\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) {\n return;\n }\n\n if (info.focus || takeFocus) {\n this.showPrimarySelection();\n }\n\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection();\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(),\n cm = this.cm,\n prim = cm.doc.sel.primary();\n var from = prim.from(),\n to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return;\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) {\n return;\n }\n\n var view = cm.display.view;\n var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || {\n node: view[0].measure.map[2],\n offset: 0\n };\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {\n node: map[map.length - 1],\n offset: map[map.length - 2] - map[map.length - 3]\n };\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return;\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0),\n rng;\n\n try {\n rng = range(start.node, start.offset, end.offset, end.node);\n } catch (e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n\n\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n\n if (old && sel.anchorNode == null) {\n sel.addRange(old);\n } else if (gecko) {\n this.startGracePeriod();\n }\n }\n\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n\n if (this$1.selectionChanged()) {\n this$1.cm.operation(function () {\n return this$1.cm.curOp.selectionChanged = true;\n });\n }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode;\n this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode;\n this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n\n if (!sel.rangeCount) {\n return false;\n }\n\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node);\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div) {\n this.showSelection(this.prepareSelection(), true);\n }\n\n this.div.focus();\n }\n };\n\n ContentEditableInput.prototype.blur = function () {\n this.div.blur();\n };\n\n ContentEditableInput.prototype.getField = function () {\n return this.div;\n };\n\n ContentEditableInput.prototype.supportsTouch = function () {\n return true;\n };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n var input = this;\n\n if (this.selectionInEditor()) {\n setTimeout(function () {\n return this$1.pollSelection();\n }, 20);\n } else {\n runInOp(this.cm, function () {\n return input.cm.curOp.selectionChanged = true;\n });\n }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) {\n return;\n }\n\n var sel = this.getSelection(),\n cm = this.cm; // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({\n type: \"keydown\",\n keyCode: 8,\n preventDefault: Math.abs\n });\n this.blur();\n this.focus();\n return;\n }\n\n if (this.composing) {\n return;\n }\n\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (anchor && head) {\n runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n\n if (anchor.bad || head.bad) {\n cm.curOp.selectionChanged = true;\n }\n });\n }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm,\n display = cm.display,\n sel = cm.doc.sel.primary();\n var from = sel.from(),\n to = sel.to();\n\n if (from.ch == 0 && from.line > cm.firstLine()) {\n from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n }\n\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n to = Pos(to.line + 1, 0);\n }\n\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n return false;\n }\n\n var fromIndex, fromLine, fromNode;\n\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) {\n return false;\n }\n\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) {\n newText.pop();\n oldText.pop();\n toLine--;\n } else if (newText[0] == oldText[0]) {\n newText.shift();\n oldText.shift();\n fromLine++;\n } else {\n break;\n }\n }\n\n var cutFront = 0,\n cutEnd = 0;\n var newTop = newText[0],\n oldTop = oldText[0],\n maxCutFront = Math.min(newTop.length, oldTop.length);\n\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n ++cutFront;\n }\n\n var newBot = lst(newText),\n oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0));\n\n while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n ++cutEnd;\n } // Try to move start of change to start of selection if ambiguous\n\n\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true;\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) {\n return;\n }\n\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) {\n return;\n }\n\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n\n if (this$1.composing) {\n if (this$1.composing.done) {\n this$1.composing = null;\n } else {\n return;\n }\n }\n\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent()) {\n runInOp(this.cm, function () {\n return regChange(this$1.cm);\n });\n }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) {\n return;\n }\n\n e.preventDefault();\n\n if (!this.cm.isReadOnly()) {\n operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n\n if (!view || view.hidden) {\n return null;\n }\n\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n var order = getOrder(line, cm.doc.direction),\n side = \"left\";\n\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result;\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode) {\n if (/CodeMirror-gutter-wrapper/.test(scan.className)) {\n return true;\n }\n }\n\n return false;\n }\n\n function badPos(pos, bad) {\n if (bad) {\n pos.bad = true;\n }\n\n return pos;\n }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\",\n closing = false,\n lineSep = cm.doc.lineSeparator(),\n extraLinebreak = false;\n\n function recognizeMarker(id) {\n return function (marker) {\n return marker.id == id;\n };\n }\n\n function close() {\n if (closing) {\n text += lineSep;\n\n if (extraLinebreak) {\n text += lineSep;\n }\n\n closing = extraLinebreak = false;\n }\n }\n\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n\n if (cmText) {\n addText(cmText);\n return;\n }\n\n var markerID = node.getAttribute(\"cm-marker\"),\n range;\n\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n\n if (found.length && (range = found[0].find(0))) {\n addText(getBetween(cm.doc, range.from, range.to).join(lineSep));\n }\n\n return;\n }\n\n if (node.getAttribute(\"contenteditable\") == \"false\") {\n return;\n }\n\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n return;\n }\n\n if (isBlock) {\n close();\n }\n\n for (var i = 0; i < node.childNodes.length; i++) {\n walk(node.childNodes[i]);\n }\n\n if (/^(pre|p)$/i.test(node.nodeName)) {\n extraLinebreak = true;\n }\n\n if (isBlock) {\n closing = true;\n }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n\n for (;;) {\n walk(from);\n\n if (from == to) {\n break;\n }\n\n from = from.nextSibling;\n extraLinebreak = false;\n }\n\n return text;\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n\n if (!lineNode) {\n return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n }\n\n node = null;\n offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) {\n return null;\n }\n\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n break;\n }\n }\n }\n\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n\n if (lineView.node == lineNode) {\n return locateNodeInLineView(lineView, node, offset);\n }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild,\n bad = false;\n\n if (!node || !contains(wrapper, node)) {\n return badPos(Pos(lineNo(lineView.line), 0), true);\n }\n\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad);\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null,\n topNode = node;\n\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n\n if (offset) {\n offset = textNode.nodeValue.length;\n }\n }\n\n while (topNode.parentNode != wrapper) {\n topNode = topNode.parentNode;\n }\n\n var measure = lineView.measure,\n maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n\n if (offset < 0 || curNode != textNode) {\n ch = map[j + (offset ? 1 : 0)];\n }\n\n return Pos(line, ch);\n }\n }\n }\n }\n\n var found = find(textNode, topNode, offset);\n\n if (found) {\n return badPos(found, bad);\n } // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n\n\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n\n if (found) {\n return badPos(Pos(found.line, found.ch - dist), bad);\n } else {\n dist += after.textContent.length;\n }\n }\n\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n\n if (found) {\n return badPos(Pos(found.line, found.ch + dist$1), bad);\n } else {\n dist$1 += before.textContent.length;\n }\n }\n } // TEXTAREA INPUT STYLE\n\n\n var TextareaInput = function (cm) {\n this.cm = cm; // See input.poll and input.reset\n\n this.prevInput = \"\"; // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n\n this.pollingFast = false; // Self-resetting timeout for the poller\n\n this.polling = new Delayed(); // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild); // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n\n if (ios) {\n te.style.width = \"0px\";\n }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) {\n this$1.hasSelection = null;\n }\n\n input.poll();\n });\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n\n cm.state.pasteIncoming = +new Date();\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n\n if (e.type == \"cut\") {\n cm.state.cutIncoming = +new Date();\n }\n }\n\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date();\n input.focus();\n return;\n } // Pass the `paste` event to the textarea so it's handled by its event listener.\n\n\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n }); // Prevent normal selection in the editor (we handle our own)\n\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) {\n e_preventDefault(e);\n }\n });\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n\n if (input.composing) {\n input.composing.range.clear();\n }\n\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n })\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea(); // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm,\n display = cm.display,\n doc = cm.doc;\n var result = prepareSelection(cm); // Move the hidden textarea near the cursor to prevent scrolling artifacts\n\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(),\n lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result;\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm,\n display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n }; // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n\n\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) {\n return;\n }\n\n var cm = this.cm;\n\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n\n if (cm.state.focused) {\n selectInput(this.textarea);\n }\n\n if (ie && ie_version >= 9) {\n this.hasSelection = content;\n }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n }\n };\n\n TextareaInput.prototype.getField = function () {\n return this.textarea;\n };\n\n TextareaInput.prototype.supportsTouch = function () {\n return false;\n };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try {\n this.textarea.focus();\n } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n\n }\n };\n\n TextareaInput.prototype.blur = function () {\n this.textarea.blur();\n };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () {\n this.slowPoll();\n }; // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n\n\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) {\n return;\n }\n\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n\n if (this$1.cm.state.focused) {\n this$1.slowPoll();\n }\n });\n }; // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n\n\n TextareaInput.prototype.fastPoll = function () {\n var missed = false,\n input = this;\n input.pollingFast = true;\n\n function p() {\n var changed = input.poll();\n\n if (!changed && !missed) {\n missed = true;\n input.polling.set(60, p);\n } else {\n input.pollingFast = false;\n input.slowPoll();\n }\n }\n\n input.polling.set(20, p);\n }; // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n\n\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n var cm = this.cm,\n input = this.textarea,\n prevInput = this.prevInput; // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n\n if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n return false;\n }\n\n var text = input.value; // If nothing changed, bail.\n\n if (text == prevInput && !cm.somethingSelected()) {\n return false;\n } // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n\n\n if (ie && ie_version >= 9 && this.hasSelection === text || mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false;\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n\n if (first == 0x200b && !prevInput) {\n prevInput = \"\\u200b\";\n }\n\n if (first == 0x21da) {\n this.reset();\n return this.cm.execCommand(\"undo\");\n }\n } // Find the part of the input that is actually new\n\n\n var same = 0,\n l = Math.min(prevInput.length, text.length);\n\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) {\n ++same;\n }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1.composing ? \"*compose\" : null); // Don't leave long text in the textarea, since it makes further polling slow\n\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) {\n input.value = this$1.prevInput = \"\";\n } else {\n this$1.prevInput = text;\n }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n });\n }\n });\n return true;\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) {\n this.pollingFast = false;\n }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this,\n cm = input.cm,\n display = cm.display,\n te = input.textarea;\n\n if (input.contextMenuPending) {\n input.contextMenuPending();\n }\n\n var pos = posFromMouse(cm, e),\n scrollPos = display.scroller.scrollTop;\n\n if (!pos || presto) {\n return;\n } // Opera is difficult.\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n\n\n var reset = cm.options.resetSelectionOnContextMenu;\n\n if (reset && cm.doc.sel.contains(pos) == -1) {\n operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n }\n\n var oldCSS = te.style.cssText,\n oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n\n if (webkit) {\n oldScrollY = window.scrollY;\n } // Work around Chrome issue (#2712)\n\n\n display.input.focus();\n\n if (webkit) {\n window.scrollTo(null, oldScrollY);\n }\n\n display.input.reset(); // Adds \"Select all\" to context menu in FF\n\n if (!cm.somethingSelected()) {\n te.value = input.prevInput = \" \";\n }\n\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll); // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1;\n te.selectionEnd = extval.length; // Re-set this, in case some other handler touched the\n // selection in the meantime.\n\n display.selForContextMenu = cm.doc.sel;\n }\n }\n\n function rehide() {\n if (input.contextMenuPending != rehide) {\n return;\n }\n\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n\n if (ie && ie_version < 9) {\n display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n } // Try to detect the user choosing select-all\n\n\n if (te.selectionStart != null) {\n if (!ie || ie && ie_version < 9) {\n prepareSelectAllHack();\n }\n\n var i = 0,\n poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) {\n prepareSelectAllHack();\n }\n\n if (captureRightClick) {\n e_stop(e);\n\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) {\n this.reset();\n }\n\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n\n if (!options.tabindex && textarea.tabIndex) {\n options.tabindex = textarea.tabIndex;\n }\n\n if (!options.placeholder && textarea.placeholder) {\n options.placeholder = textarea.placeholder;\n } // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n\n\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {\n textarea.value = cm.getValue();\n }\n\n var realSubmit;\n\n if (textarea.form) {\n on(textarea.form, \"submit\", save); // Deplorable hack to make the submit method do the right thing.\n\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch (e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n\n cm.getTextArea = function () {\n return textarea;\n };\n\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\") {\n textarea.form.submit = realSubmit;\n }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) {\n return textarea.parentNode.insertBefore(node, textarea.nextSibling);\n }, options);\n return cm;\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n } // EDITOR CONSTRUCTOR\n\n\n defineOptions(CodeMirror);\n addEditorMethods(CodeMirror); // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n\n for (var prop in Doc.prototype) {\n if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n CodeMirror.prototype[prop] = function (method) {\n return function () {\n return method.apply(this.doc, arguments);\n };\n }(Doc.prototype[prop]);\n }\n }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\n \"textarea\": TextareaInput,\n \"contenteditable\": ContentEditableInput\n }; // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n\n CodeMirror.defineMode = function (name\n /*, mode, …*/\n ) {\n if (!CodeMirror.defaults.mode && name != \"null\") {\n CodeMirror.defaults.mode = name;\n }\n\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME; // Minimal default mode.\n\n CodeMirror.defineMode(\"null\", function () {\n return {\n token: function (stream) {\n return stream.skipToEnd();\n }\n };\n });\n CodeMirror.defineMIME(\"text/plain\", \"null\"); // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n addLegacyProps(CodeMirror);\n CodeMirror.version = \"5.65.1\";\n return CodeMirror;\n});","import { am_pm_to_hours, tConvert, user_prefers_12hr } from 'core/helpers/format_helpers.js';\n/*\n * Model that represents a ShiftType\n *\n * @param {Object} data JSON attributes\n *\n * @return {Object} ShiftType instance\n */\nexport var ShiftType = function(data) {\n\n var startTime = data.start_time;\n var endTime = data.end_time;\n\n if (user_prefers_12hr())\n {\n startTime = tConvert(startTime).replace('am','a').replace('pm','p');\n endTime = tConvert(endTime).replace('am','a').replace('pm','p');\n }\n\n this.id = data.id;\n this.name = data.name;\n this.departmentId = data.department_id;\n this.hideEndsAt = data.hide_ends_at;\n this.startTime = startTime;\n this.endTime = data.hide_ends_at ? \"(\"+endTime+\")\" : endTime;\n this.duration = data.duration;\n this.secondsSinceMidnight = data.seconds_since_midnight;\n this.breaks = data.breaks;\n this.totalBreaks = data.total_breaks;\n this.notes = data.notes;\n this.time_reporting_code = data.time_reporting_code;\n this.pay_code_id = data.pay_code_id;\n\n};\n\n\n/*\n * Function that convert both the startTime and the endTime fields to a 12 hours\n * or 24 hours format.\n *\n * @param {startTime} {object} text input field\n * @param {endTime} {object} text input field\n * @param {format} integer 12/24\n */\nexport function reverse_shifts_time(startTime,endTime,format) {\n if (format === 12) {\n if (startTime.val()) {\n startTime.val(am_pm_to_hours(startTime.val()));\n }\n if (endTime.val()) {\n endTime.val(am_pm_to_hours(endTime.val()));\n }\n };\n if (format === 24) {\n if (startTime.val()) {\n startTime.val(tConvert(startTime.val()));\n }\n if (endTime.val()) {\n endTime.val(tConvert(endTime.val()));\n }\n };\n}\n\nwindow.reverse_shifts_time = reverse_shifts_time;\n\n/*\n * Function the converts a pair of time units ( 'xx:xx - xx:xx')\n * from a 24 hours format to a 12 hours format\n *\n * @param {eventTime} string\n * returns eventTime string ('xx:xx pm/am - xx:xx pm/am')\n */\n\nexport function convert_pair(eventTime) {\n\n if (eventTime.match(/\\d\\d:\\d\\d - \\d\\d:\\d\\d/)){\n eventTime = (user_prefers_12hr()) ?\n tConvert(eventTime.split('-')[0].trim()) + ' - ' + tConvert(eventTime.split('-')[1].trim()) :\n eventTime ;\n }\n\n return eventTime;\n}\n\nwindow.convert_pair = convert_pair;\n","import { calendarHelper } from 'core/calendar_helper.js';\nimport { convert_pair } from 'core/models/shift_type.js';\n\nexport const userCalendarModals = {};\n\nuserCalendarModals.conflictsWithAnotherDepartmentDialog = function() {\n bootbox.alert(I18n.t('user_calendar_modal.js.cannot_overwrite_shifts'));\n};\n\nuserCalendarModals.conflictsWithEventDialog = function() {\n bootbox.alert(I18n.t('user_calendar_modal.js.cannot_overwrite'));\n};\n\nuserCalendarModals.conflictsWithUnavailableDialog = function() {\n bootbox.alert(I18n.t('user_calendar_modal.js.cannot_overwrite_time_off'));\n};\n\nuserCalendarModals.conflictsWhenCreatingRotationsWarning = function() {\n bootbox.alert(I18n.t('user_calendar_modal.js.conflicting_rotations'));\n};\n\nuserCalendarModals.promptForDeleteRotationDialog = function(existingRotation) {\n const dialogMessage =\n '

' +\n I18n.t('user_calendar_modal.js.overwrite_unsaved_rotation') +\n '

';\n\n const buttons = [];\n buttons.push({\n label: I18n.t('user_calendar_modal.js.unsaved_rotation_clear'),\n class: 'btn-red pull-left',\n callback: function() {\n userCalendar.deleteRotation(existingRotation);\n }\n });\n buttons.push({\n label: I18n.t('user_calendar_modal.js.unsaved_rotation_save'),\n class: 'btn-green',\n callback: function() {\n userCalendar.saveCalendarChanges();\n }\n });\n buttons.push({\n label: I18n.t('buttons.cancel'),\n class: 'btn-blue',\n callback: function() {}\n });\n\n const headerText = I18n.t('user_calendar_modal.js.unsaved_rotation');\n\n bootbox.dialog($(dialogMessage), buttons, { header: headerText });\n};\n\nuserCalendarModals.duplicateShiftDialog = function() {\n bootbox.alert(I18n.t('user_calendar_modal.js.duplicate_shift'));\n};\n\n// User clicks on event which opens a modal with details of that event\nuserCalendarModals.eventClickDialog = function(event, isReadOnlySchedule = false) {\n const dialogMessage = ['
'];\n const buttons = [];\n const localeColon = I18n.locale === 'fr' ? ' : ' : ': ';\n let headerText = `${I18n.t('xlsx.export.shift')}${localeColon}`;\n\n if (event.type === 'shift') {\n shiftContent(event, dialogMessage, isReadOnlySchedule);\n } else if (event.type === 'unavailable-request') {\n unavailableRequestContent(event, dialogMessage,isReadOnlySchedule);\n headerText = I18n.t('user_calendar_modal.js.time_off_request_header');\n } else if (event.type === 'unavailable' && event.unavailable_request_id) {\n unavailableRequestContent(event, dialogMessage,isReadOnlySchedule);\n headerText = I18n.t('user_calendar_modal.js.time_off_header');\n } else if (event.type === 'unavailable') {\n unavailableContent(event, dialogMessage,isReadOnlySchedule);\n headerText = I18n.t('user_calendar_modal.js.time_off_header');\n }\n dialogMessage.push('
');\n // End Row Fluid\n\n // Add buttons at bottom of modal\n addModalButtons(event, buttons,isReadOnlySchedule);\n\n // Modal Title with date\n headerText += getEventTime(event, true);\n\n // Create modal with content, buttons, and title\n bootbox.dialog($(dialogMessage.join('\\n')), buttons, { header: headerText });\n\n const textarea = document.querySelector('#event_notes');\n if (textarea) {\n textarea.addEventListener('input', function(){\n const notesNotice = document.querySelector('#notes-length-notice');\n const currentLength = this.value.length;\n\n if (currentLength > 550) {\n notesNotice.style.display = 'block';\n } else {\n notesNotice.style.display = 'none';\n }\n });\n }\n};\n\nuserCalendarModals.rotationClickDialog = function(addedRotation, event) {\n const dialogMessage = HandlebarsTemplates[\n 'user_calendar/rotation_click_dialog'\n ]({\n department_id: addedRotation.department_id,\n calendar_user: MKS.calendar_user,\n start: $.fullCalendar.formatDate(\n new Date(addedRotation.start),\n 'MMMM dd, yyyy'\n ),\n end: $.fullCalendar.formatDate(\n new Date(addedRotation.end),\n 'MMMM dd, yyyy'\n ),\n rotation: I18n.t('user_calendar_modal.js.rotation'),\n employee_name: I18n.t('user_calendar_modal.js.employee_name')\n });\n\n const buttons = [];\n buttons.push({\n label: I18n.t('user_calendar_modal.js.delete_rotation'),\n class: 'btn-red pull-left',\n callback: function() {\n userCalendar.deleteRotation(addedRotation);\n }\n });\n buttons.push({\n label: I18n.t('buttons.cancel'),\n class: 'btn-blue',\n callback: function() {}\n });\n\n const headerText =\n I18n.t('user_calendar_modal.js.rotation') +\n ': ' +\n $.fullCalendar.formatDate(new Date(event.start), 'MMMM dd, yyyy');\n bootbox.dialog($(dialogMessage), buttons, { header: headerText });\n};\n\nuserCalendarModals.waitMessageDialog = function() {\n const dialogMessage = ['
'];\n dialogMessage.push(\n '

' + I18n.t('user_calendar_modal.js.wait_message_dialog') + '

'\n );\n dialogMessage.push('
');\n\n const headerText = I18n.t('user_calendar_modal.js.please_wait');\n bootbox.dialog($(dialogMessage.join('\\n')), [], { header: headerText });\n $('.bootbox')\n .find('.close')\n .remove();\n};\n\nuserCalendarModals.datePicker = function(startDate, event, rotation) {\n const dialogMessage = ['
'];\n const rotationDays = Object.keys(rotation).length - 1;\n const nextDay = startDate\n .clone()\n .add(rotationDays)\n .day();\n\n dialogMessage.push(\n '
'\n );\n dialogMessage.push(\n '
'\n );\n dialogMessage.push('
');\n\n const buttons = [];\n buttons.push({ label: I18n.t('buttons.cancel'), callback: function() {} });\n buttons.push({\n label: I18n.t('buttons.ok'),\n class: 'btn-blue',\n callback: function() {\n setupRotation(startDate, event, rotation);\n }\n });\n\n const headerText = I18n.t('user_calendar_modal.js.what_end_date');\n bootbox.dialog($(dialogMessage.join('\\n')), buttons, { header: headerText });\n showDatePicker(startDate);\n};\n\nuserCalendarModals.clearDatesDialog = function() {\n const dialogMessage = HandlebarsTemplates['user_calendar/clear_dates_dialog'](\n {\n by_performing: I18n.t('user_calendar_modal.js.by_performing'),\n existing_shifts: I18n.t(\n 'user_calendar_modal.js.affected.existing_shifts'\n ),\n existing_days_off: I18n.t(\n 'user_calendar_modal.js.affected.existing_days_off'\n ),\n available_shifts: I18n.t(\n 'user_calendar_modal.js.affected.available_shifts'\n ),\n exchanges: I18n.t('user_calendar_modal.js.affected.exchanges'),\n greatly_alter: I18n.t('user_calendar_modal.js.greatly_alter'),\n clear_from: I18n.t('user_calendar_modal.js.clear_from'),\n to: I18n.t('user_calendar_modal.js.to')\n }\n );\n const buttons = [];\n buttons.push({\n label: I18n.t('buttons.cancel'),\n callback: function() {\n $('div#modal-alert').remove();\n }\n });\n buttons.push({\n label: I18n.t('buttons.ok'),\n class: 'btn-blue',\n callback: function() {\n\n const startDateStr = $('#date-range-start').val();\n const endDateStr = $('#date-range-end').val();\n\n // Don't allow empty/invalid settings for date range start and end\n // Send focus back to start date and disallow closing\n if (!startDateStr) {\n $('#date-range-start')[0].focus();\n return false;\n } else if (!endDateStr) {\n $('#date-range-end')[0].focus();\n return false;\n }\n\n userCalendar.deleteEventsBetween(\n startDateStr,\n endDateStr,\n true, // Clearing Dates DOES clear time off and time off requests\n 'clear_dates'\n );\n }\n });\n\n const headerText = I18n.t('user_calendar_modal.js.clear_schedule');\n\n bootbox.dialog(dialogMessage, buttons, { header: headerText });\n\n selectDateRangeToClear();\n};\n\nfunction getTranslatedEmployeeType() {\n // one of: \"Full Time\", \"Part Time\", \"Casual\"\n // if not one of those option return raw string\n const employmentType = MKS.calendar_user_employment_type;\n const translationMap = {\n 'Full Time': 'employment_type.full_time',\n 'Part Time': 'employment_type.part_time',\n Casual: 'employment_type.casual'\n };\n const employmentTypeTranslated = I18n.t(translationMap[employmentType]);\n\n if(!employmentTypeTranslated) {\n return employmentType;\n }\n\n return (\n (typeof employmentTypeTranslated === 'string' &&\n employmentTypeTranslated) ||\n '---'\n );\n}\n\nfunction selectDateRangeToClear() {\n const date = new Date();\n const now = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n 0,\n 0,\n 0,\n 0\n );\n\n // Allow deleting back to \"yesterday\" because calendar doesn't know about time zone\n // Clearing dates is based on a calendar day\n // If you are a day ahead in your system/browser time zone, you may not be able to clear\n // events that have yet to happen (but don't appear to be \"today\" to you)\n $('#date-range-start')\n .datepicker({\n autoclose: true,\n language: I18n.locale,\n weekStart: MKS.departmentStartOfWeek\n })\n .datepicker('setStartDate', now.addDays(-1), 'setDate', now)\n .on('changeDate', e => {\n const possibleEndDate = new Date(e.date);\n $('#date-range-end')\n .datepicker('setDate', possibleEndDate)\n .datepicker('setStartDate', possibleEndDate)\n .datepicker('update');\n\n $('#date-range-end')[0].focus();\n })\n .data('datepicker');\n\n $('#date-range-end')\n .datepicker({ autoclose: true, weekStart: MKS.departmentStartOfWeek, language: I18n.locale })\n .data('datepicker');\n}\n\nfunction showDatePicker(startDate) {\n $('.datepicker')\n .datepicker({ weekStart: MKS.departmentStartOfWeek, language: I18n.locale })\n .datepicker('setStartDate', startDate)\n .on('changeDate', function(e) {\n $(this)\n .parent()\n .find('input#endDate')\n .val($.datepicker.formatDate('yy-mm-dd', e.date));\n });\n}\n\nfunction setupRotation(startDate, event, rotation) {\n const endDateStr = $('input#endDate').val();\n $('.bootbox')\n .first()\n .modal('hide');\n\n userCalendarModals.waitMessageDialog();\n setTimeout(() => {\n userCalendar.createRotation(startDate, endDateStr, event, rotation);\n $('.bootbox')\n .first()\n .modal('hide');\n // userCalendarModals.conflictsWhenCreatingRotationsWarning();\n }, 1000);\n}\n\n// format_as_date is boolean which determines if it should be formatted as a date or time\nfunction getEventTime(event, format_as_date) {\n format_as_date = format_as_date || false;\n const mStart = moment(event.start);\n const moEnd = moment(event.real_end);\n if (calendarHelper.isUnavailable(event) || format_as_date) {\n const locale = mStart.locale();\n if (locale === 'es') {\n // use a replace because moment doesn't support formatting without a trailing\n // period (on short form months)\n return mStart.format('dddd, D MMM').replace('.', '');\n }\n if (locale === 'fr') {\n return mStart.format('dddd D MMM');\n }\n return mStart.format('dddd, MMM D');\n }\n\n return event.hide_ends_at\n ? mStart.format('HH:mm') + ' - (' + moEnd.format('HH:mm') + ')'\n : mStart.format('HH:mm') + ' - ' + moEnd.format('HH:mm');\n}\n\n/**\n * Formats breaks based on if the event is persisted or a new event\n * @param {fullCalendarEvent} event Current Full Calendar event\n * @return {String} Formatted label\n */\nfunction formatBreaks(event) {\n if (event.formatted_breaks) {\n return event.formatted_breaks;\n } else if (event.breaks_in_minutes) {\n return formatUnformattedBreaks(event);\n } else {\n return '-';\n }\n}\n\n/**\n * Formats Shift Breaks the same way as the backend\n * @param {fullCalendarEvent} event Current Full Calendar event\n * @return {String} Formatted Label\n */\nfunction formatUnformattedBreaks(event) {\n return _.chain(event.breaks_in_minutes.split(','))\n .reduce((hash, duration) => {\n hash[duration] = (hash[duration] || 0) + 1;\n return hash;\n }, {})\n .map((count, duration) => {\n let breakString = I18n.t('user_calendar_modal.js.num_minutes', {\n duration: duration\n });\n if (count > 1) breakString += ' (' + count + ')';\n return breakString;\n })\n .value()\n .join(', ');\n}\n\n///////// MODAL CONTENT and BUTTONS /////////\n\n// Returns true if the event is a shift in the future\nfunction showShiftFooter(event) {\n return (\n event.type != 'unavailable' &&\n event.type != 'unavailable-request' &&\n calendarHelper.persistedEvent(event) &&\n !calendarHelper.earlierDayThanToday(event.start)\n );\n}\n\n// Modal content for shift notes\nfunction shiftNotes(event, isReadOnlySchedule = false) {\n var eventDescription = event.notes === null ? '' : event.notes;\n var disableNotes;\n if (\n !calendarHelper.isInCurrentDepartment(event) ||\n event.locked ||\n scheduleSyncError(event) ||\n isReadOnlySchedule\n ) {\n disableNotes = 'disabled';\n } else {\n disableNotes = '';\n }\n var shiftNotesArea =\n calendarHelper.isInCurrentDepartment(event) || eventDescription != ''\n ? '

' +\n I18n.t('user_calendar_modal.js.notes_label') +\n '

' +\n '' +\n I18n.t('shifts.edit.notes_limit') +\n ''\n : '';\n\n return shiftNotesArea;\n}\n\n// Modal content for shift position\nfunction shiftPosition(event) {\n return $(HandlebarsTemplates['shared/p_strong_label_with_value']({\n label: I18n.t('user_calendar_modal.js.position'),\n value: event.position || '-'\n })).addClass('word-wrap').prop('outerHTML');\n}\n\n// Modal content for shift job site\nfunction shiftJobSite(event) {\n return $(HandlebarsTemplates['shared/p_strong_label_with_value']({\n label: I18n.t('user_calendar_modal.js.job_site'),\n value: event.job_site || '-'\n })).addClass('word-wrap').prop('outerHTML');\n}\n\n// Modal content for shift time reporting code\nfunction shiftTRC(trc) {\n return $(HandlebarsTemplates['shared/p_strong_label_with_value']({\n label: I18n.t('user_calendar_modal.js.time_reporting_code'),\n value: filterXSS(trc)\n })).addClass('word-wrap').prop('outerHTML');\n}\n\n// Modal content for shift pay code\nfunction shiftPayCode(payCode) {\n return $(HandlebarsTemplates['shared/p_strong_label_with_value']({\n label: I18n.t('user_calendar_modal.js.pay_code'),\n value: filterXSS(payCode)\n })).addClass('word-wrap').prop('outerHTML');\n}\n\nfunction alertError(msg) {\n let list = '
';\n list += msg;\n list += '
';\n return list;\n}\n\n// Modal content for ADP Eti Error\nfunction adpEtiError() {\n let list = '
';\n list += '

' + I18n.t('adp.shift_exporter.user_error_info_1') + '

';\n list += '

' + I18n.t('adp.shift_exporter.user_error_info_2') + '

';\n list += '
    ';\n list += '
  • ' + I18n.t('adp.shift_exporter.user_error_info_3') + '
  • ';\n list += '
  • ' + I18n.t('adp.shift_exporter.user_error_info_4') + '
  • ';\n list += '
  • ' + I18n.t('adp.shift_exporter.user_error_info_5') + '
  • ';\n list += '
  • ' + I18n.t('adp.shift_exporter.user_error_info_6') + '
  • ';\n list += '
';\n list += '

' + I18n.t('adp.shift_exporter.user_error_info_7') + '

';\n list += '
';\n\n return list;\n}\n\n// Modal content for a locked shift\nfunction lockedShift() {\n let message = '
';\n message += I18n.t('integrations.shift_exporter.locked');\n message += '
';\n\n return message;\n}\n\n// Buttons associated for shift notes\nfunction shiftNotesButton(event) {\n if (event.locked || scheduleSyncError(event)) {\n return null;\n } else {\n return {\n label: I18n.t('user_calendar_modal.js.save_shift_notes'),\n class: 'btn btn-green',\n callback: function() {\n userCalendar.submitNotes(\n event,\n $('#event_notes')\n .val()\n .trim()\n );\n }\n };\n }\n}\n\n// Modal content for Shift details\nfunction shiftContent(event, dialogMessage, isReadOnlySchedule = false) {\n // Shift Details\n if (scheduleSyncError(event)) {\n if (event.schedule_integration === 'adp') {\n dialogMessage.push(adpEtiError());\n } else {\n const message = I18n.t(\n 'integrations.' +\n event.schedule_integration +\n '.errors.' +\n event.shift_export_attempt.status_reason\n );\n dialogMessage.push(alertError(message));\n }\n } else if (event.locked) {\n dialogMessage.push(lockedShift());\n }\n\n dialogMessage.push('
');\n dialogMessage.push();\n if (event.type === 'shift') {\n let eventTime = getEventTime(event);\n\n eventTime = convert_pair(eventTime);\n\n dialogMessage.push(\n '

' +\n I18n.t('location.location_label') +\n ' ' +\n event.location_name +\n '

'\n );\n dialogMessage.push(\n '

' +\n I18n.t('department.department_label') +\n ' ' +\n event.department_name +\n '

'\n );\n dialogMessage.push(\n '

' +\n I18n.t('user_calendar_modal.js.time_label') +\n ' ' +\n eventTime +\n '

'\n );\n dialogMessage.push(\n '

' +\n I18n.t('user_calendar_modal.js.breaks_label') +\n ' ' +\n formatBreaks(event) +\n '

'\n );\n if (event.time_reporting_code && MKS.trc_enabled)\n dialogMessage.push(shiftTRC(event.time_reporting_code));\n if (event.pay_code && MKS.pay_code_enabled)\n dialogMessage.push(shiftPayCode(event.pay_code));\n }\n dialogMessage.push('
');\n // End Shift Details\n\n // Employee Details\n dialogMessage.push('
');\n dialogMessage.push(\n '

' +\n I18n.t('user_calendar_modal.js.employee_details') +\n '

'\n );\n dialogMessage.push('

' + MKS.calendar_user + '

');\n dialogMessage.push(\n '

' +\n I18n.t('user_calendar_modal.js.employment_type_label') +\n ' ' +\n getTranslatedEmployeeType() +\n '

'\n );\n dialogMessage.push('
');\n // End Employee Details\n\n // Shift Footer: hide ends at, position, and shift notes\n dialogMessage.push('
');\n\n if (showShiftFooter(event)) {\n dialogMessage.push(shiftPosition(event));\n if (event.job_sites_enabled) {\n dialogMessage.push(shiftJobSite(event));\n }\n dialogMessage.push(shiftNotes(event,isReadOnlySchedule));\n }\n dialogMessage.push('
');\n // End Shift Footer\n}\n\n// Modal content for Unavailable (time off) details\nfunction unavailableContent(event, dialogMessage) {\n dialogMessage.push('

' + MKS.calendar_user + '

');\n dialogMessage.push(\n '

' +\n I18n.t('user_calendar_modal.js.employment_type_label') +\n ' ' +\n getTranslatedEmployeeType() +\n '

'\n );\n dialogMessage.push(\n '

' +\n I18n.t('user_calendar_modal.js.time_off_label') +\n ' ' +\n event.duration +\n '

'\n );\n dialogMessage.push(\n '

' +\n (!event.import_source || event.import_source == 'ms'\n ? I18n.t('user_calendar_modal.js.time_off_type_label')\n : I18n.t('activerecord.attributes.unavailable.unavailable_policy')\n ) +\n ' ' +\n event.unavailable_type_name +\n '

'\n );\n if (event.admin_notes) {\n dialogMessage.push(\n '

' +\n I18n.t('unavailable_requests.edit.admin_notes') +\n ' ' +\n event.admin_notes +\n '

'\n );\n }\n}\n\n// Modal content for UnavailableRequest (time off request) details\nfunction unavailableRequestContent(event, dialogMessage,isReadOnlySchedule) {\n dialogMessage.push('

' + MKS.calendar_user + '

');\n dialogMessage.push(\n '

' +\n I18n.t('user_calendar_modal.js.employment_type_label') +\n ' ' +\n getTranslatedEmployeeType() +\n '

'\n );\n dialogMessage.push(\n '

' +\n I18n.t('user_calendar_modal.js.request_label') +\n ' ' +\n event.duration +\n '

'\n );\n\n // I18n plural of \"day\"\n let time_off = '';\n if (event.annual_total === 1) {\n time_off = I18n.t('user_calendar_modal.js.time_off_single', {\n total: event.annual_total,\n year: event.start.getFullYear()\n });\n } else {\n time_off = I18n.t('user_calendar_modal.js.time_off_plural', {\n total: event.annual_total,\n year: event.start.getFullYear()\n });\n }\n\n dialogMessage.push(\n '

' +\n ((event.import_source || event.import_source == 'ms')\n ? I18n.t('user_calendar_modal.js.time_off_type_label')\n : I18n.t('activerecord.attributes.unavailable.unavailable_policy')\n ) +\n ' ' +\n event.unavailable_type_name +\n '

'\n );\n\n if (!event.import_source || event.import_source == 'ms') {\n dialogMessage.push(\n '

' +\n I18n.t('user_calendar_modal.js.requested_label') +\n ' ' +\n event.created_at +\n '

'\n );\n\n dialogMessage.push(\n '

' +\n I18n.t('user_calendar_modal.js.annual_total_label', {\n type: event.unavailable_type_name\n }) +\n ' ' +\n event.annual_total +\n '

'\n );\n }\n\n if (event.notes) dialogMessage.push('

' + I18n.t('activerecord.attributes.unavailable_request.notes') + ' ' + event.notes + '

');\n if (event.admin_notes) dialogMessage.push('

' + I18n.t('unavailable_requests.edit.admin_notes') + ' ' + event.admin_notes + '

');\n\n if (MKS.show_time_off && event.state === 'new' && !isReadOnlySchedule) {\n dialogMessage.push(\n '' +\n I18n.t('user_calendar_modal.js.approve_request_link', {\n link:\n '' +\n I18n.t('user_calendar_modal.js.time_off_requests_page') +\n ''\n }) +\n ''\n );\n }\n}\n\n// Modal buttons to be displayed\nfunction addModalButtons(event, buttons,isReadOnlySchedule = false) {\n if(!isReadOnlySchedule){\n if (event.type === 'shift' && calendarHelper.isInCurrentDepartment(event)) {\n if (!shiftLocked(event)) {\n buttons.push({\n label: I18n.t('buttons.delete_subject', { subject: I18n.t('shift.shift') }),\n class: 'btn-red pull-left',\n callback: function() {\n userCalendar.deleteEvents([event]);\n }\n });\n }\n\n if (showShiftFooter(event) && shiftNotesButton(event)) {\n buttons.push(shiftNotesButton(event));\n }\n } else if (event.type === 'unavailable') {\n if (MKS.show_time_off && (!event.import_source || event.import_source == 'ms')) {\n buttons.push({\n label: I18n.t('user_calendar_modal.js.delete_time_off'),\n class: 'btn-red pull-left',\n callback: function() {\n userCalendar.deleteEvents([event]);\n }\n });\n }\n }\n buttons.push({\n label: I18n.t('buttons.cancel'),\n class: 'btn-blue',\n callback: function() {}\n });\n }else{\n buttons.push({\n label: I18n.t('buttons.close'),\n class: 'btn-grey',\n callback: function() {}\n });\n }\n}\n\nfunction shiftLocked(shift) {\n return shift.locked;\n}\n\nfunction scheduleSyncError(event) {\n return event.shift_export_attempt_error;\n}\n","import { msUtil } from 'core/ms_util.js';\n\nwindow.shiftCustomDialog = (function($, window, document) {\n\n var init = function(settings) {\n $.extend(true, config, settings, {\n selectors: {\n breaksSelect2: $(settings[\"breaksFieldName\"]),\n tooltips: $(config.elements.tooltips)\n }\n });\n\n initSelect2();\n initToolTips();\n };\n\n var initSelect2 = function(){\n var breakTimeRegex = /^[0-9]*/;\n config.breaks = [];\n\n config.selectors.breaksSelect2.select2({\n createSearchChoice: function(term){\n term = breakTimeRegex.exec(term)[0];\n if (term){\n return { id: term + '___' + _.uniqueId(), text: term };\n }\n return null;\n },\n formatSelection: function(object) {\n return select2Formatting(object);\n },\n formatResult: function(object) {\n return select2Formatting(object);\n },\n formatNoMatches: function (term) {\n return I18n.t(\"shift_custom_dialog.js.enter_time\");\n },\n selectOnBlur: true,\n tags: [],\n allowClear: true,\n placeholder: I18n.t(\"shift_custom_dialog.js.eg_15_min\")\n }).select2(\"val\", null);\n };\n\n\n var select2Formatting = function(object) {\n return object.text + ' min';\n };\n\n var initToolTips = function(){\n config.selectors.tooltips.tooltip();\n };\n\n var config = {\n elements: {\n tooltips: '[data-toggle=tooltip]'\n }\n };\n\n return {\n init: init\n }\n\n})(jQuery, window, document);\n\n/*\n * Create reusable tab contents\n * Used by all tabs in the available shifts and shift requirements modals\n *\n * @param tabId ID of the tab content we're hooking up (e.g. 'reply-users')\n * @param url URL to get content to fill the tab with\n *\n */\nwindow.initTab = function initTab(tabId, url)\n{\n // Hook into tab being shown (find a tab with the given data target attribute)\n $('a[data-target=\"#' + tabId + '\"]').on('shown.bs.tab', function(e) {\n\n var $tab = $('#' + tabId);\n\n // Set up a spinner which will continue until we have content to show\n $tab.html('
');\n var spinner = msUtil.spinner(tabId + '-spinner');\n\n // Start to load the content for the tab\n $tab.load(\n url,\n null,\n function(response, status, xhr) {\n // Spinner is done!\n spinner.stop();\n }\n );\n });\n}\n\n/*\n * Initialize a DataTable with a common setup\n *\n * @param tabName: Name for the tab hosting the table.\n * We assume a given table ID and sort dropdown ID based on it. (e.g. 'assigned-users')\n * @param initialSort: Array of columns and directions to initially sort with (e.g. [[0, 'asc']]\n * @param showSort: Whether or not to show the sort dropdown initially. E.g. if there's only one record (or none!), don't need it.\n */\nwindow.initTabWithTable = function(\n tabName,\n initialSort,\n showSort\n) {\n // Set a default value for the initial sort if none was provided\n if (initialSort === undefined) {\n initialSort = [[0, 'asc']];\n }\n\n var $table = $('#' + tabName + '-table');\n var $sortingOptions = $('#' + tabName + '-sorting');\n\n $table.dataTable({\n bProcessing: true, // Show \"Processing...\" when sorting and getting data\n bServerSide: true, // Use server-side processing (must also set AJAX source)\n sAjaxSource: $table.data('source'), // Set source for retrieving data\n sPaginationType: \"full_numbers\", // Either \"two_button\" or \"full_numbers\"\n iDisplayLength: 25, // How many to show on a single page\n sDom: \"<\\\"table-header\\\"r><\\\"table-responsive\\\"t><\\\"table-footer\\\"ip>\", // Where to place \"Processing...\", the table itself, information, and pagination\n aaSorting: initialSort, // _Initial_ sorting column (first pass)\n bAutoWidth: false, // Whether to auto-size columns\n bDeferRender: true, // Speed boost for async-loaded tables\n oLanguage: dataTables_i18n, // Add i18n for works like Processing, First, Next etc.\n aoColumnDefs: [{ aTargets: [\"_all\"], bSortable: false }], // Disallow direct clicking on column headers\n fnDrawCallback: function (oSettings) {\n $('[data-toggle=\"tooltip\"]').tooltip();\n },\n });\n\n // dataTable styles the table itself, the headers, and table data\n // We want to keep our previous settings\n $table.removeClass('dataTable');\n $table.find('td').removeAttr('style');\n $table.find('th').removeAttr('style');\n\n $sortingOptions.find('a').on('click', function(e) {\n sortBy(tabName, $(this).data('tabIndex'), $(this).data('tabOrder'));\n });\n\n // Sort by the initial sorting option, and show that we've done so\n if (showSort) {\n $('#sort-by-' + tabName + ' i').eq(initialSort[0][0]).addClass(\n initialSort[0][1] == 'asc' ? 'fa fa-caret-up' : 'fa fa-caret-down'\n );\n }\n else {\n $('#sort-by-' + tabName).hide();\n }\n}\n\n/*\n * Sort the table on a given sorting option by faking a click on a table column\n * We assume that the columnMapping has been initialized in initTabWithTable\n * so we know which data index to sort the table by.\n *\n * @param tabName: Name for the tab hosting the table.\n * We assume a given table ID and sort dropdown ID based on it. (e.g. 'assigned-users')\n * @param sortOptionIdx: Index of Sort By row we're changing\n * @param defaultDir: Default direction to sort by if this is a \"new\" sort selection. Otherwise invert it.\n *\n */\nexport function sortBy(tabName, sortOptionIdx, defaultDir) {\n var $sortBy = $('#sort-by-' + tabName);\n var $sortOption = $sortBy.find('i').eq(sortOptionIdx);\n\n // If we're already sorting by this column, target class is swapped\n var alreadySorting = $sortOption.hasClass('fa-caret-up') || $sortOption.hasClass('fa-caret-down');\n var targetSortDir = alreadySorting ? ($sortOption.hasClass('fa-caret-up') ? 'desc' : 'asc') : defaultDir;\n var targetClass = targetSortDir == 'asc' ? 'fa fa-caret-up' : 'fa fa-caret-down';\n\n // Clear all sorting carets\n $sortBy.find('i').removeClass();\n\n // Mark the sort column with the target class\n $sortOption.addClass(targetClass);\n\n // Manually sort the table by a given column index\n $('#' + tabName + '-table').dataTable().fnSort(\n [[\n sortOptionIdx,\n targetSortDir\n ]]\n );\n}\n\n/**\n * Update and highight tab counters\n * @param {Object} $label Span that contains the counter\n * @param {Integer} count User count\n */\nexport function adjustCounter(labelId, delta) {\n\n // Default settings\n var config = {\n highlightColor: '#ffcc00',\n highlightInterval: 750\n };\n\n var $label = $('#' + labelId);\n $label.text(parseInt($label.text()) + delta);\n $label.closest('span.label').effect('highlight', {color: config.highlightColor}, config.highlightInterval);\n}\n","var FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call);\n\nmodule.exports = bind ? function (fn) {\n return fn && callBind(call, fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","import FatigueRule from 'core/vue/fatigue_management/fatigue_rule.vue';\nimport {tConvert, user_prefers_12hr} from 'core/helpers/format_helpers.js';\nimport {convert_pair} from 'core/models/shift_type.js';\nimport {flashMessages} from 'core/helpers/flash_messages.js';\n\nexport var fatigueManagement = (function ($, window, document) {\n\n var init = function (settings) {\n\n $.extend(config, {\n departmentId: settings.departmentId,\n routes: {}\n });\n\n };\n\n var config = {};\n\n /**\n * Init bindings to \"tablecrud\" events and init Vue component\n * accordingly.\n */\n var initRuleEditor = function () {\n\n $(document).on('tablecrud:added_row', function () {\n var $fatigueFields = $('.new-record-row .fatigue-fields');\n var vueContainer = document.createElement('div');\n $fatigueFields.append(vueContainer);\n\n new Vue({\n el: vueContainer,\n data: {\n employmentTypeList: $fatigueFields.find('.props').data('employmentTypeList'),\n positionList: $fatigueFields.find('.props').data('positionList'),\n timeAndAttendance: $fatigueFields.find('.props').data('timeAndAttendance')\n },\n components: {FatigueRule},\n template: ''\n });\n });\n\n $(document).on('tablecrud:edit_row', function () {\n var $fatigueFields = $('.edit-record-row .fatigue-fields');\n var vueContainer = document.createElement('div');\n $fatigueFields.append(vueContainer);\n\n new Vue({\n el: vueContainer,\n data: {\n initialRuleType: $fatigueFields.find('.props').data('ruleType'),\n initialTimeUnit: $fatigueFields.find('.props').data('timeUnit'),\n initialTimePeriod: $fatigueFields.find('.props').data('timePeriod'),\n initialTimeValue: $fatigueFields.find('.props').data('timeValue'),\n selectedEmploymentTypeIds: $fatigueFields.find('.props').data('selectedEmploymentTypeIds'),\n selectedPositionIds: $fatigueFields.find('.props').data('selectedPositionIds'),\n employmentTypeList: $fatigueFields.find('.props').data('employmentTypeList'),\n positionList: $fatigueFields.find('.props').data('positionList'),\n timeAndAttendance: $fatigueFields.find('.props').data('timeAndAttendance')\n },\n components: {FatigueRule},\n template: ''\n });\n });\n\n $(document).on('ajax:error', function (e, xhr, status, error) {\n if (\n (e.target.classList.contains('new_fatigue_rule') || (e.target.classList.contains('edit_fatigue_rule'))\n && xhr?.responseJSON?.errors?.time_period)) {\n flashMessages.error(xhr.responseJSON.errors.time_period[0]);\n setTimeout(function () {\n flashMessages.clear();\n }, 8000);\n }\n });\n };\n\n /* Looks for time elements with class \"dynamic\" and flips the 12/24 hour formatting\n * preference. Currently just for fatigue management but could be made more dynamic\n * and used elsewhere.\n */\n $(document).ready(function () {\n if (user_prefers_12hr()) {\n $('time.dynamic').each(function (index) {\n var formattedTime = tConvert($(this).text());\n formattedTime = convert_pair($(this).text());\n $(this).text(formattedTime);\n });\n }\n });\n\n /**\n * Open a prompt warning user about breaching fatigue management rules.\n * Accepts callbacks for how to continue/cancel given the result.\n *\n * @param {String} Main message for the prompt.\n * @param {Function} Callback function if user chooses to continue.\n * @param {Function} Callback function if user choose to cancel.\n */\n var fatiguePrompt = function (message, continueCallback, cancelCallback) {\n\n var promptContent = '

' + I18n.t('fatigue_management.js.warning') + '

';\n promptContent += '
' + message + '
';\n\n bootbox.dialog(promptContent, [\n {\n 'label': I18n.t('buttons.cancel'),\n 'class': 'btn',\n 'callback': function () {\n cancelCallback();\n }\n },\n {\n 'label': I18n.t('fatigue_management.js.continue_assigning'),\n 'class': 'btn-danger',\n 'callback': function () {\n continueCallback();\n }\n }\n ]);\n\n if (user_prefers_12hr()) {\n $('.fatigue-message time').each(function (index) {\n var formattedTime = tConvert($(this).text());\n formattedTime = convert_pair($(this).text());\n $(this).text(formattedTime);\n });\n }\n };\n\n return {\n init: init,\n initRuleEditor: initRuleEditor,\n fatiguePrompt: fatiguePrompt\n };\n\n})(jQuery, window, document);\n\nwindow.fatigueManagement = fatigueManagement;\n","import { User } from 'core/models/user.js';\nimport { Message } from 'core/models/message.js';\nimport { Conversation } from 'core/models/conversation.js';\nexport var messaging = (function($, window, document) {\n\n /* public */\n\n /*\n * Initializes all the things\n *\n * @param {Integer} currentUserId\n * @param {Object} settings\n */\n var init = function(currentUserId, settings) {\n store.currentUserId = currentUserId;\n\n $.extend(true, config, settings, {\n selectors: { // Selectors available at init time\n $conversationHeadersContainer: $(config.elements.conversationHeadersContainer),\n $conversationContentContainer: $('#conversation-content'),\n $conversationUsersContainer: $('#conversation-users-container'),\n $conversationUsers: $('#conversation-users'),\n $newConversationUsersContainer: $('#new-conversation-users-container'),\n $newConversationUsersInput: $('#new-conversation-users'),\n $newMessageInput: $(config.elements.newMessageInput)\n }\n });\n\n initControls();\n initEvents();\n\n loadAndRenderData();\n\n initPusher();\n };\n\n var events = $({});\n\n // Loaded data and associated methods\n var store = {\n // Used for recipient list filtering\n currentUserId: null,\n\n // Conversation objects for currentUser\n // @see assets/javascripts/models/conversation.js\n conversations: [],\n\n // Message objects for currentUser\n // @see assets/javascripts/models/message.js\n messages: [],\n\n // User objects associated with loaded Conversations\n // @see assets/javascripts/models/user.js\n users: [],\n\n // Pagination boolean that specifies whether or not there are more results\n nextPage: false,\n\n // Currently active Conversation\n currentConversation: function() {\n var $activeConversationHeader = config.selectors.$activeConversationHeader();\n if ($activeConversationHeader.length) {\n return this.findConversation(parseInt($activeConversationHeader.attr('data-conversation-id')));\n } else {\n return null;\n }\n },\n\n /*\n * Finds all Conversation objects with conditions\n *\n * @example store.findAllConversations({ rendered: false });\n *\n * @param {Object} conditions\n * @return {Array}\n */\n findAllConversations: function(conditions) {\n return _.where(this.conversations, conditions);\n },\n\n /*\n * Finds selected Conversation object based on its ID\n *\n * @param {Integer} id\n * @return {Conversation} Conversation\n */\n findConversation: function(id) {\n return _.findWhere(this.conversations, { id: id });\n },\n\n /*\n * Finds all Message objects with the specified IDs\n *\n * @param {Array} ids Array of Message IDs\n * @return {Array}\n */\n findMessages: function(ids) {\n return _.filter(this.messages, function(message) {\n return ids.indexOf(message.id) > -1;\n })\n },\n\n /*\n * Finds selected User object based on its ID\n *\n * @param {Integer} id\n * @return {User}\n */\n findUser: function(id) {\n return _.findWhere(this.users, { id: id });\n },\n\n /*\n * Finds all User objects with the specified IDs\n *\n * @param {Array} ids Array of User IDs\n * @return {Array}\n */\n findUsers: function(ids) {\n return _.filter(this.users, function(user) {\n return ids.indexOf(user.id) > -1;\n })\n },\n\n /*\n * Creates new Conversation or updates existing Conversation with new Message(s)\n *\n * @param {String} body\n */\n createConversation: function(body) {\n var userIds = config.selectors.$newConversationUsersInput.val();\n if (!userIds) { return; }\n\n $.ajax({\n url: config.routes.createConversationsPath(),\n data: { format: 'json', conversation: { body: body, user_ids: userIds.split(',') } },\n dataType: 'json',\n method: 'POST'\n })\n .then(function(data) {\n var conversation = store.findConversation(data.conversation.id);\n if (conversation) {\n store.pushMessages(conversation, data.messages);\n conversation.update(data.conversation);\n } else {\n conversation = store.pushConversation(data);\n renderConversationHeader(conversation);\n }\n\n resetNewMessage();\n renderConversation(conversation);\n config.selectors.$conversationHeadersContainer.scrollTop(0);\n });\n },\n\n /*\n * Loads Conversation from back end and pushes it/associated data to store\n *\n * @param {Integer} id Conversation ID\n */\n loadConversation: function(id) {\n $.getJSON(config.routes.conversationPath(id))\n .then(function(data) {\n var conversation = store.findConversation(id);\n if (conversation) {\n store.pushMessages(conversation, data.messages);\n var currentConversation = store.currentConversation();\n conversation.update(data.conversation);\n // If new messages are for current Conversation, re-render the Conversation content\n if (currentConversation && currentConversation.id === conversation.id) {\n renderConversation(conversation);\n }\n } else {\n conversation = store.pushConversation(data);\n renderConversationHeader(conversation);\n }\n });\n },\n\n /*\n * Pushes single Conversation and associated data to the store\n *\n * @param {Object} data JSON data\n * @return {Conversation}\n */\n pushConversation: function(data) {\n var conversation = new Conversation(data.conversation);\n store.conversations.push(conversation);\n\n _.each(data.messages, function(messageData) {\n store.messages.push(new Message(messageData));\n });\n\n _.each(data.users, function(userData) {\n if (store.findUser(userData.id)) { return; }\n store.users.push(new User(userData));\n });\n\n return conversation;\n },\n\n /*\n * Creates new message for Conversation\n *\n * @param {Conversation} conversation\n * @param {String} body\n */\n createMessage: function(conversation, body) {\n $.ajax({\n url: config.routes.createConversationMessagesPath(conversation.id),\n data: { format: 'json', message: { body: body } },\n dataType: 'json',\n method: 'POST'\n })\n .then(function(data) {\n var message = new Message(data.message);\n store.messages.push(message);\n resetNewMessage();\n renderMessage(message);\n conversation.associateMessage(message);\n config.selectors.$conversationHeader(conversation.id).addClass('active');\n config.selectors.$conversationHeadersContainer.scrollTop(0);\n });\n },\n\n /*\n * Pushes Messages to the store, ignoring dups\n *\n * @param {Object} data JSON data\n * @return {Array} New messages that were added to store\n */\n pushMessages: function(conversation, messages) {\n var newMessages = [];\n _.chain(messages)\n .filter(function(messageData) {\n return conversation.messageIds.indexOf(messageData.id) == -1;\n })\n .each(function(messageData) {\n var newMessage = new Message(messageData);\n store.messages.push(newMessage);\n newMessages.push(newMessage);\n });\n\n return newMessages;\n }\n };\n\n /* private */\n\n /*\n * Default settings\n */\n var config = {\n debug: false, // Log to console in Rails.env.development\n elements: {\n conversationHeaders: 'div.conversation-header:not(.new-conversation)',\n conversationHeadersContainer: '#conversation-headers',\n messages: 'div.conversation-message',\n newConversationButton: '#new-conversation-btn',\n newMessageInput: '#new-message-body',\n paginator: '.timestamp-paginator'\n },\n pusherKey: null, // Facilitates live update\n routes: {\n namespace: '' , // Facilitates shared usage between admins/employees\n conversationsPath: function() { return config.routes.namespace + '/messages'; },\n existingConversationsPath: function(userIds) { return config.routes.namespace + '/two_way_conversations/existing?user_ids=' + userIds; },\n conversationPath: function(id) { return config.routes.namespace + '/two_way_conversations/' + id; },\n readConversationPath: function(id) { return config.routes.conversationPath(id) + '?read=1'; },\n newConversationPath: function() { return config.routes.namespace + '/two_way_conversations/new'; },\n createConversationsPath: function() { return config.routes.namespace + '/two_way_conversations/'; },\n createConversationMessagesPath: function(conversationId) { return config.routes.namespace + '/two_way_conversations/' + conversationId + '/two_way_messages'; }\n },\n selectors: {\n $activeConversationHeader: function() { return $(config.elements.conversationHeaders + '.active').first(); },\n $conversationHeaders: function() { return $(config.elements.conversationHeaders); },\n $conversationHeader: function(id) { return $(config.elements.conversationHeaders + '[data-conversation-id=' + id + ']'); },\n $message: function(id) { return $(config.elements.messages + '[data-message-id=' + id + ']'); },\n $newConversationHeader: function() { return $('.new-conversation'); },\n $paginator: function() { return $(config.elements.paginator); }\n },\n ui: {\n highlightColor: '#ffcc00',\n highlightInterval: 750,\n transitionInterval: 300\n }\n };\n\n /*\n * Handles all interactions on headers/content\n */\n var initControls = function() {\n // Auto-complete recipients list\n config.selectors.$newConversationUsersInput.select2({\n minimumInputLength: 3,\n placeholder: I18n.t('messaging.js.placeholder'),\n multiple: true,\n ajax: {\n url: config.routes.newConversationPath(),\n dataType: 'json',\n quietMillis: 250,\n data: function (term, page) {\n return {\n q: term\n };\n },\n results: function (data, page) {\n return {\n results: _.map(data.users, function(user) {\n return { id: user.id, text: user.name };\n })\n }\n },\n cache: true\n }\n })\n // On selecting recipients, query for existing conversations with those recipients.\n // If found, pop in the messages.\n // @note Conversation will still be treated as a new Conversation,\n // but the backend will handle the matching and append a message instead\n .on('change', function(e) {\n var $conversationContentContainer = config.selectors.$conversationContentContainer\n $conversationContentContainer.empty();\n\n if (e.val.length == 0) { return; }\n\n $.getJSON(config.routes.existingConversationsPath(e.val))\n .then(function(data) {\n var renderedMessages = [];\n _.each(data.messages, function(messageData) {\n renderedMessages.push(new Message(messageData).render());\n });\n $conversationContentContainer.append(renderedMessages);\n $conversationContentContainer.scrollTop($conversationContentContainer[0].scrollHeight);\n });\n });\n\n $('body')\n // New Conversation form\n .on('click', config.elements.newConversationButton, function(e) {\n e.preventDefault();\n if (config.selectors.$newConversationHeader().length) { return; }\n renderNewConversation();\n })\n // Render Conversation on header click\n .on('click', config.elements.conversationHeaders, function(e) {\n renderConversation(store.findConversation(parseInt($(this).attr('data-conversation-id'))));\n });\n\n // Create Conversation/Message on new message input field carriage return\n $(config.elements.newMessageInput).keypress(function(e) {\n var keyCode = (e.keyCode ? e.keyCode : e.which);\n if (keyCode == 13) {\n var body = $(this).val().trim();\n if (body.length == 0) { return; }\n\n var currentConversation = store.currentConversation();\n if (currentConversation) {\n store.createMessage(currentConversation, body);\n } else {\n store.createConversation(body);\n }\n }\n });\n };\n\n /*\n * Update DOM in response to events triggered by Conversation and Message objects\n */\n var initEvents = function() {\n events\n // Re-render Conversation header, send request to API\n .on('conversation:read', function(e, conversation) {\n config.selectors.$conversationHeader(conversation.id).replaceWith(conversation.renderHeader());\n $.getJSON(config.routes.readConversationPath(conversation.id));\n })\n // Remove and re-insert updated Conversation header\n .on('conversation:updated', function(e, conversation) {\n config.selectors.$conversationHeader(conversation.id).remove();\n renderConversationHeader(conversation);\n })\n // Handles pagination of Conversation headers\n .on('conversations:paginate', function(e, paginator) {\n var oldestConversation = _.chain(store.conversations)\n .sortBy(function(conversation) {\n return conversation.updatedAt;\n })\n .first()\n .value();\n loadAndRenderData(oldestConversation.updatedAt);\n });\n };\n\n /*\n * Retrieves paginated Conversations and builds/renders all the things\n *\n * @param {Integer} timestamp Optional pagination timestamp\n */\n var loadAndRenderData = function(timestamp) {\n var params = { format: 'json' };\n if (timestamp != undefined) { params.timestamp = timestamp; }\n\n $.ajax({\n url: config.routes.conversationsPath(),\n data: params,\n dataType: 'json',\n cache: false\n })\n .then(function(data) {\n // Create Conversation and Message objects\n serializeObjects(data);\n\n // Render Conversation headers\n renderConversationHeaders();\n\n // Display newest Conversation on first load\n if (timestamp === undefined) {\n var $firstConversationHeader = config.selectors.$conversationHeaders().first();\n if ($firstConversationHeader.length) {\n renderConversation(store.findConversation(parseInt($firstConversationHeader.attr('data-conversation-id'))));\n }\n }\n\n // Bump pagination controls\n setPagination();\n });\n };\n\n /**\n * Initializes Pusher for new Conversation/Message notifications\n */\n var initPusher = function() {\n var pusher = window.getPusherInstance(config.pusherKey);\n var channel = pusher.subscribe('user-' + store.currentUserId);\n\n channel.bind('messaging.message_created', function(data) {\n store.loadConversation(data.conversation_id);\n });\n };\n\n /*\n * Serialize JSON data for current page of results into JS Conversation and Message objects\n *\n * @param {Object} data Raw JSON\n */\n var serializeObjects = function(data) {\n _.each(data.conversations, function(conversationData) {\n store.conversations.push(new Conversation(conversationData));\n });\n\n _.each(data.messages, function(messageData) {\n store.messages.push(new Message(messageData));\n });\n\n _.each(data.users, function(userData) {\n if (store.findUser(userData.id)) { return; }\n store.users.push(new User(userData));\n });\n\n store.nextPage = data.meta.next_page;\n };\n\n /*\n * Renders all unrendered Conversation headers\n */\n var renderConversationHeaders = function() {\n var renderedConversationHeaders = [];\n _.each(store.findAllConversations({ rendered: false }), function(conversation) {\n renderedConversationHeaders.push(conversation.renderHeader());\n });\n config.selectors.$conversationHeadersContainer.append(renderedConversationHeaders);\n };\n\n /*\n * Renders Conversation header at top\n *\n * @param {Conversation} conversation\n */\n var renderConversationHeader = function(conversation) {\n var $conversationHeadersContainer = config.selectors.$conversationHeadersContainer;\n var $conversationHeader = $(conversation.renderHeader());\n $conversationHeader.prependTo($conversationHeadersContainer);\n };\n\n /*\n * Renders Conversation content\n *\n * @param {Conversation} conversation\n */\n var renderConversation = function(conversation) {\n resetNewConversation();\n\n // Flag as read\n conversation.read();\n\n // Highlight selected Conversation\n if (conversation != store.currentConversation()) {\n config.selectors.$conversationHeaders().removeClass('active');\n config.selectors.$conversationHeader(conversation.id).addClass('active');\n }\n\n // Clear prior view\n config.selectors.$conversationContentContainer.empty();\n\n // Render recipients, excluding currentUser\n config.selectors.$conversationUsers.text(_.pluck(conversation.recipients(), 'name').join(', '));\n\n // Render Messages\n var renderedMessages = [];\n _.each(conversation.messages(), function(message) {\n renderedMessages.push(message.render());\n });\n var $conversationContentContainer = config.selectors.$conversationContentContainer;\n $conversationContentContainer.append(renderedMessages);\n $conversationContentContainer.scrollTop($conversationContentContainer[0].scrollHeight);\n\n // Focus on new Message field\n config.selectors.$newMessageInput.focus();\n };\n\n /*\n * Sets up new Conversation placeholder header and form\n */\n var renderNewConversation = function() {\n // clear current Conversation view\n config.selectors.$conversationHeaders().removeClass('active');\n config.selectors.$conversationContentContainer.empty();\n config.selectors.$conversationUsersContainer.hide();\n\n // render new Conversation\n var newConversation = new Conversation({});\n var $conversationHeadersContainer = config.selectors.$conversationHeadersContainer;\n $(newConversation.renderHeader()).prependTo($conversationHeadersContainer).addClass('active');\n $conversationHeadersContainer.scrollTop(0);\n\n // render new Conversation form\n config.selectors.$newConversationUsersContainer.show();\n };\n\n /*\n * Renders Message in current content container\n *\n * @param {Message} message\n */\n var renderMessage = function(message) {\n var $conversationContentContainer = config.selectors.$conversationContentContainer;\n $conversationContentContainer.append(message.render());\n $conversationContentContainer.scrollTop($conversationContentContainer[0].scrollHeight);\n config.selectors.$message(message.id).effect('highlight', {color: config.ui.highlightColor}, config.ui.highlightInterval);\n };\n\n /*\n * Resets new Conversation placeholder and form\n */\n var resetNewConversation = function() {\n config.selectors.$newConversationHeader().remove();\n config.selectors.$newConversationUsersContainer.hide();\n config.selectors.$conversationUsersContainer.show();\n config.selectors.$newConversationUsersInput.select2('val',null);\n };\n\n /*\n * Resets new Message input\n */\n var resetNewMessage = function() {\n config.selectors.$newMessageInput.val('');\n }\n\n /*\n * Sets up paginator control based on current page load\n */\n var setPagination = function() {\n var $conversationHeadersContainer = config.selectors.$conversationHeadersContainer;\n $conversationHeadersContainer.onScreen('remove');\n config.selectors.$paginator().remove();\n\n if (store.nextPage) {\n var $paginator = $('
');\n $conversationHeadersContainer.append($paginator);\n $paginator.onScreen({\n container: config.elements.conversationHeadersContainer,\n direction: 'vertical',\n doIn: function() {\n messaging.events.trigger('conversations:paginate', [$paginator]);\n },\n tolerance: 0,\n throttle: 50\n });\n }\n };\n\n return {\n init: init,\n events: events,\n store: store\n };\n\n})(jQuery, window, document);\n","import { basic_unformat, basic_round, basic_format } from 'core/helpers/format_helpers.js';\n\nexport var spanBudgetBatches = (function() {\n\n var config = {}\n\n var init = function(departmentId) {\n this.departmentId = departmentId;\n\n $.extend(config, {\n routes: {\n update: '/departments/' + this.departmentId + '/span_budget_batches'\n },\n selectors: {\n budgetRow: $('#labor-budget-row'),\n editBudgets: $('#edit-labor-budgets'),\n cancelBudgets: $('#cancel-labor-budgets'),\n saveBudgets: $('#save-labor-budgets')\n }\n });\n\n // Edit labor budgets\n config.selectors.editBudgets.click(function() {\n config.selectors.editBudgets.hide();\n config.selectors.cancelBudgets.show();\n config.selectors.saveBudgets.show();\n\n $.each(config.selectors.budgetRow.find('div.labor-budget-values'), function(i, div) {\n // If we can't edit this budget, then don't create an edit box for it\n if (!$(div).data('editable')) {\n return;\n }\n\n var $existing = $(div).children('.labor-budget-amount').first();\n $existing.hide();\n\n var $form = $(document.createElement('form'));\n $form.addClass('labor-budget-amount-form');\n $form.submit(function(e) {\n e.preventDefault();\n saveSpanBudgets();\n });\n\n var $edit = $(document.createElement('input'));\n $edit.attr('type', 'number');\n $edit.attr('min', 0);\n $edit.attr('max', 10000000); // this should match BudgetsHelper::MAX_BUDGET_VALUE\n $edit.attr('step', 0.01);\n $edit.addClass('labor-budget-amount-edit');\n $edit.val(basic_unformat($existing.text()));\n $edit.data($existing.data());\n $form.append($edit)\n $(div).append($form);\n });\n });\n\n // Cancel labor budgets\n config.selectors.cancelBudgets.click(function() {\n config.selectors.editBudgets.show();\n config.selectors.cancelBudgets.hide();\n config.selectors.saveBudgets.hide();\n\n $.each(config.selectors.budgetRow.find('div.labor-budget-values'), function(i, div) {\n $(div).children('.labor-budget-amount-form').remove();\n $(div).children('.labor-budget-amount').show();\n });\n });\n\n // Save labor budgets\n config.selectors.saveBudgets.click(function() {\n var all_valid = true;\n $('.labor-budget-amount-form').each(function(i,subform) {\n if (!all_valid) return;\n\n // Hack to trigger showing HTML5 validation\n // We add a button to submit the form and click it\n // We know it's invalid, so it won't actually submit\n // It'll just trigger the HTML5 validation errors to show\n if (!subform.checkValidity()) {\n var tmp = document.createElement('button');\n subform.appendChild(tmp);\n tmp.click();\n subform.removeChild(tmp);\n var all_valid = false;\n }\n });\n if (all_valid) {\n saveSpanBudgets();\n }\n });\n }\n\n var onBudgetUpdated = function(f) {\n this.onBudgetUpdatedCallback = f;\n }\n\n var saveSpanBudgets = function() {\n // Collect all budget values and request for them to be saved\n var budgets = [];\n var beginningOfWeek;\n\n $.each(config.selectors.budgetRow.find('.labor-budget-amount-edit'), function(i, input) {\n beginningOfWeek = beginningOfWeek || $(this).data('beginning_of_week');\n var budget = {\n starts_at: $(this).data('starts_at')\n }\n\n // Still want to push empty budgets onto the list, because we'll delete those empty budgets\n if ($(this).val()) {\n if (spanBudgetBatches.mode == 'dollars') {\n budget.amount = $(this).val();\n } else {\n budget.hours = $(this).val();\n }\n }\n\n budgets.push(budget);\n });\n\n $.ajax(config.routes.update, {\n type: \"PATCH\",\n contentType: 'application/json',\n data: JSON.stringify({\n budgets: budgets\n })\n }).then(function(data, status, xhr) {\n spanBudgetBatches.onBudgetUpdatedCallback();\n });\n\n // Go back to normal state...\n config.selectors.editBudgets.show();\n config.selectors.cancelBudgets.hide();\n config.selectors.saveBudgets.hide();\n\n $.each(config.selectors.budgetRow.find('div.labor-budget-values'), function(i, div) {\n $(div).children('.labor-budget-amount-form').remove();\n $(div).children('.labor-budget-amount').show();\n });\n }\n\n var setBudgetMode = function(mode) {\n this.mode = mode;\n }\n\n // Render the budget table row for current week\n // Requires labor budget data and a time\n var updateValues = function(beginningOfWeek, spanBudgetData) {\n // NOTE: This can be called BEFORE we've been init-ed (due to the way department_schedules.js works)\n // We just bail out if we haven't been initialized yet\n // We also require a budget this.mode (dollars/hours) for this to run\n if (!this.departmentId) return;\n if (!this.mode) return;\n\n var mode = this.mode;\n\n var $row = config.selectors.budgetRow;\n $row.find('div').remove();\n\n // Reset the edit/cancel/save buttons\n // This is necessary if somebody switches views (dollars/hours) while editing is active\n config.selectors.editBudgets.show();\n config.selectors.cancelBudgets.hide();\n config.selectors.saveBudgets.hide();\n\n var found_editable = false;\n\n // Show the actual and budgeted amounts per day\n $.each(spanBudgetData, function(i, vals) {\n var $div = $(document.createElement('div'));\n $div.addClass('labor-budget-values');\n $div.data('editable', vals.editable);\n found_editable = found_editable || vals.editable;\n\n var $actual_amount = $(document.createElement('span'));\n $actual_amount.addClass('labor-budget-actual');\n if ('amount' in vals || 'hours' in vals) {\n var over_budget = mode == 'dollars' ?\n basic_round(vals.sched_cost) > basic_round(vals.amount) :\n basic_round(vals.sched_hours) > basic_round(vals.hours);\n $actual_amount.addClass(over_budget ? 'over-budget' : 'within-budget');\n }\n else if ((mode == 'dollars' && vals.sched_cost) || (mode == 'hours' && vals.sched_hours)) {\n $actual_amount.addClass('over-budget');\n }\n $actual_amount.text(basic_format(mode == 'dollars' ? vals.sched_cost : vals.sched_hours));\n $div.append($actual_amount);\n\n var $divider = $(document.createElement('span'));\n $divider.html(' / ');\n $div.append($divider);\n\n var $budgeted_amount = $(document.createElement('span'));\n $budgeted_amount.addClass('labor-budget-amount');\n if ('amount' in vals || 'hours' in vals) {\n $budgeted_amount.text(basic_format(mode == 'dollars' ? vals.amount : vals.hours));\n }\n $budgeted_amount.data('starts_at', vals.starts_at);\n $budgeted_amount.data('beginning_of_week', beginningOfWeek);\n $div.append($budgeted_amount);\n\n // Use 1-based indexes, since our first column is just the words \"Labour Budget\"\n $row.find('th').eq(1+i).append($div)\n });\n\n found_editable ? $('#edit-labor-budgets').show() : $('#edit-labor-budgets').hide();\n };\n\n var hide = function() {\n config.selectors.budgetRow.hide();\n }\n\n var show = function() {\n config.selectors.budgetRow.show();\n }\n\n var toggle = function() {\n config.selectors.budgetRow.toggle();\n }\n\n return {\n init: init,\n setBudgetMode: setBudgetMode,\n onBudgetUpdated: onBudgetUpdated,\n updateValues: updateValues,\n hide: hide,\n show: show,\n toggle: toggle\n };\n\n})();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","import BudgetBar from 'core/vue/budget_bar/budget_bar.vue';\nimport { renderModalAlert } from 'core/makeshift.js';\nimport { makeshiftGoogleAnalytics } from 'core/google_analytics.js';\nimport { getCookie } from 'core/cookies.js';\nimport { departmentSchedule } from 'core/department_schedules.js';\nimport { spanBudgetBatches } from 'core/span_budget_batches.js';\nexport var weeklyBudget = (function($, window, document) {\n\n /*\n public\n */\n\n /**\n * Generic event handling object\n * @type {jQuery Object}\n */\n var budgetEvents = $({});\n\n /**\n * Initializes the WeeklyBudget\n * @param {Object} settings Basic settings to setup the WeeklyBudget\n */\n var init = function(settings) {\n $.extend(config, {\n view: settings.view,\n departmentId: settings.departmentId,\n routes: {\n newWeeklyBudgetPath: '/departments/' + settings.departmentId + '/weekly_budgets/new',\n createWeeklyBudgetPath: '/departments/' + settings.departmentId + '/weekly_budgets',\n editWeeklyBudgetPath: function(id) { return '/weekly_budgets/' + id + '/edit'; },\n calculateWeeklyBudget: '/departments/' + settings.departmentId + '/weekly_budgets/calculate'\n },\n budgetBarMount: $(\"#budget-bar\")[0],\n selectors: {\n departmentScheduleContainer: $('.main-content .row-fluid:first'),\n budgetBar: function(){ return $('#budget-bar'); },\n dropdown: $('[data-weekly-budget]'),\n modal: $('#shift-modal'),\n shiftTemplatesBox: $('#shift-templates.box-content'),\n calendarBox: $('.box-wrapper')\n }\n });\n\n var cookie = findOrCreateCoookie(function(cookie){\n if (cookie === 'show') {\n initBudgetBar();\n toggleHiddenBudgetBarClass(true);\n } else {\n config.selectors.budgetBar().css({ minHeight: 0 });\n toggleHiddenBudgetBarClass(false);\n }\n });\n\n initDropDown();\n\n // Only work with span budgets if they're relevant\n if (spanBudgetsEnabled()) {\n initSpanBudgets();\n }\n };\n\n /*\n private\n */\n\n /**\n * BudgetData Object\n * @type {Object}\n */\n var budgetData = {\n scheduledCosts: 0,\n scheduledHours: 0,\n estimatedCosts: 0,\n weeklyBudget: {\n amount: 0\n },\n spanBudgets: {}\n };\n\n /**\n * Array of Event Titles to avoid missing them during unbinding.\n * @type {Array}\n */\n var budgetEventsTitles = ['weeklyBudget:initialized', 'weeklyBudget:calculate'];\n\n /**\n * Default settings\n * @type {Object}\n */\n var config = {\n view: 'employees',\n cookieName: 'labourBudget',\n transitionInterval: 300,\n };\n\n /**\n * Initializes the clicking of Weekly Budget Form Details\n */\n var initBudgetActions = function() {\n // Had a bug that sometimes there would be multiple callbacks from the same click event.\n // .off('click', ...).on('click', ...) ensures that the function will run only once per click.\n $('body').off('click', '#weekly-budget-details').on('click', '#weekly-budget-details', function(e) {\n $('#weekly-budget-details').prop('disabled', true);\n e.preventDefault();\n var request, $self = $(this);\n if (budgetData.weeklyBudget.id === undefined || budgetData.weeklyBudget.id === null) {\n request = $.get(config.routes.newWeeklyBudgetPath, {start: budgetData.beginning_of_week});\n } else {\n request = $.get(config.routes.editWeeklyBudgetPath(budgetData.weeklyBudget.id));\n }\n\n request.then(function(html) {\n config.selectors.modal.html(html).modal('show');\n }, function(xhr, status, error) {\n alert(error);\n });\n });\n };\n\n /**\n * Initializes the BudgetBar within the Department Calendar\n * @return {[type]} [description]\n */\n var initBudgetBar = function() {\n config.selectors.budgetBar().fadeIn();\n initModalForms();\n initBudgetEvents();\n initBudgetBarSelectors();\n ga('send','event',makeshiftGoogleAnalytics.categories.departmentCalendar, makeshiftGoogleAnalytics.actions.displayed, makeshiftGoogleAnalytics.label.weeklyBudgetBar);\n };\n\n /**\n * Helper to cache BudgetBar selectors when the bar is shown\n */\n var initBudgetBarSelectors = function() {\n $.extend(config.selectors, {\n budgetEstimate: $('#labour-estimate'),\n progressContainer: $('#budget-bar .meter'),\n progressBar: $('#budget-bar .meter').find('span'),\n weeklyBudgetValue: $('#labour-weekly-budget')\n });\n };\n\n /**\n * Handles Event bindings for Weekly Budget and performs actions on those events when they are observed.\n */\n var initBudgetEvents = function() {\n budgetEvents\n .on('weeklyBudget:initialized', function(event, beginningOfWeek){\n $.extend(true, budgetData, { beginning_of_week: beginningOfWeek });\n initBudgetActions(); // initBudgetActions requires the beginningOfWeek variable set to work correctly\n calculateCostsAndUpdateUI();\n })\n .on('weeklyBudget:calculate', function(event){\n calculateCostsAndUpdateUI();\n });\n };\n\n var requestInFlight = false; // `true` if we are awaiting a response from the server\n var updateRequired = false; // `true` if additional budget updates were requested while one was in flight\n\n /**\n * Obtains all new cost calcuations from the backend, sets budgetData with that information then updates the UI\n * @return {Object} budgetData\n */\n var calculateCostsAndUpdateUI = function() {\n\n // Create an empty div for the Vue object to replace\n const vueContainer = document.createElement('div');\n config.budgetBarMount.innerHTML = '';\n config.budgetBarMount.appendChild(vueContainer);\n\n // Start by displaying a loading bar for the budget, then replace it once the response returns\n const budgetBarLoading = new Vue({ \n el: vueContainer,\n data: {\n view: config.view,\n isLoading: true,\n },\n components: { BudgetBar },\n template: ''\n });\n\n // We already have a request in-flight.\n // We will wait until it returns to update so we don't flood the server with requests\n if (requestInFlight) {\n updateRequired = true;\n return;\n }\n\n requestInFlight = true;\n\n return calculateLabourCosts().then(function(response){\n budgetData.spanBudgets = response.spanBudgets;\n $.extend(true, budgetData, { spanBudgets: response.span_budget });\n\n // We're done the budget request, so we mark it as no longer in flight\n requestInFlight = false;\n\n // We just finished calculating but we already need a new budget, so just\n // start the request process again without trying to draw this version\n if (updateRequired) {\n updateRequired = false;\n calculateCostsAndUpdateUI();\n }\n\n $.extend(true, budgetData, {\n weeklyBudget: response.weekly_budget,\n estimatedCosts: response.weekly_budget_calculations.estimated_costs,\n scheduledCosts: response.weekly_budget_calculations.scheduled_costs,\n scheduledHours: response.weekly_budget_calculations.scheduled_hours\n });\n\n budgetBarLoading.$destroy();\n config.budgetBarMount.removeChild(budgetBarLoading.$el);\n config.budgetBarMount.appendChild(vueContainer);\n new Vue({ \n el: vueContainer,\n data: {\n budgetDollars: response.weekly_budget.amount,\n budgetHours: response.weekly_budget.hours,\n estimatedCosts: response.weekly_budget_calculations.estimated_costs,\n estimatedHours: response.weekly_budget_calculations.estimated_hours,\n scheduledCosts: response.weekly_budget_calculations.scheduled_costs,\n scheduledHours: response.weekly_budget_calculations.scheduled_hours,\n view: config.view,\n isLoading: false,\n },\n components: { BudgetBar },\n template: ''\n });\n\n updateSpanBudgets(departmentSchedule.getBudgetMode(), config.beginningOfWeek, budgetData.spanBudgets);\n });\n };\n\n var spanBudgetsEnabled = function() {\n return $('#labor-budget-row').length === 1;\n };\n\n var initSpanBudgets = function() {\n spanBudgetBatches.init(config.departmentId, config.beginningOfWeek);\n updateSpanBudgets(departmentSchedule.getBudgetMode(), config.beginningOfWeek, {});\n spanBudgetBatches.onBudgetUpdated(function() {\n calculateCostsAndUpdateUI();\n });\n var checkbox = $('#show-daily-budget');\n if (!Cookies.get('show_daily_budget')) {\n Cookies.set('show_daily_budget', 'true', { secure: true });\n }\n checkbox.prop('checked', Cookies.get('show_daily_budget') == 'true');\n if (checkbox.prop('checked')) {\n spanBudgetBatches.show();\n } else {\n spanBudgetBatches.hide();\n }\n checkbox.change(function(event) {\n spanBudgetBatches.toggle();\n Cookies.set('show_daily_budget', $(this).prop('checked'), { secure: true });\n departmentSchedule.loadSchedule();\n });\n };\n\n var updateSpanBudgets = function(budgetMode, beginningOfWeek, spanBudgetData) {\n if (!spanBudgetsEnabled()) {\n return;\n }\n spanBudgetBatches.setBudgetMode(budgetMode);\n spanBudgetBatches.updateValues(beginningOfWeek, spanBudgetData);\n };\n\n /**\n * Initializes the drop-down option for Displaying/Hiding the BudgetBar\n */\n var initDropDown = function() {\n var text = fetchInverseDisplayValue(getCookie(config.cookieName));\n config.selectors.dropdown.attr('data-weekly-budget', text).html(I18n.t('department_schedules.show.weekly_budget' + '.' + text));\n\n config.selectors.dropdown.on('click', function(e) {\n e.preventDefault();\n var inverseBudgetState, newBudgetBarState = $(this).attr('data-weekly-budget');\n setWeeklyBudgetCookie(newBudgetBarState);\n\n inverseBudgetState = fetchInverseDisplayValue(newBudgetBarState);\n\n config.selectors.dropdown.attr('data-weekly-budget', inverseBudgetState).html(I18n.t('department_schedules.show.weekly_budget' + '.' + inverseBudgetState));\n\n if (newBudgetBarState === 'show') {\n initBudgetBar();\n departmentSchedule.loadSchedule();\n toggleHiddenBudgetBarClass(true);\n } else {\n config.selectors.budgetBar().fadeOut(config.transitionInterval, function(){\n //$(this).remove();\n toggleHiddenBudgetBarClass(false);\n });\n destroyBudgetBarBindings();\n ga('send','event',makeshiftGoogleAnalytics.categories.departmentCalendar, makeshiftGoogleAnalytics.actions.hidden, makeshiftGoogleAnalytics.label.weeklyBudgetBar);\n }\n });\n };\n\n /**\n * Initializes the modalForms for when 'View Details' is clicked\n */\n var initModalForms = function() {\n $('body')\n .on('ajax:success', '.new_weekly_budget, .edit_weekly_budget', function(e, data){\n updateWeeklyBudget(data.weekly_budget);\n calculateCostsAndUpdateUI();\n })\n .on('ajax:error', '.new_shift_requirement, .new_shift, .new_available_shift, .edit_shift, .new_weekly_budget, .edit_weekly_budget', function(e, xhr, status, error) {\n if (xhr.responseJSON.error_type != 'FatigueConflictError') {\n renderModalAlert(xhr.responseJSON);\n }\n });\n };\n\n /**\n * Returns a server calculation of Weekly Budget Costs\n * @return {Promise} jQuery Promise\n */\n var calculateLabourCosts = function() {\n return $.getJSON(config.routes.calculateWeeklyBudget, { start: budgetData.beginning_of_week});\n };\n\n /**\n * Unbinds all event bindings on the BudgetBar to avoid unnecessary actions happening while the user has opted not to show it.\n */\n var destroyBudgetBarBindings = function() {\n _.each(budgetEventsTitles, function(eventTitle){\n budgetEvents.unbind(eventTitle);\n });\n };\n\n /**\n * Conditional to return the opposite of the current show/hide value\n * @param {String} cookieSetting Value returned from the cookie\n * @return {String} Opposite value of the incomign CookieSetting\n */\n var fetchInverseDisplayValue = function(cookieSetting) {\n return cookieSetting === 'show' ? 'hide' : 'show';\n };\n\n /**\n * Lookup for the WeeklyBudget cookie\n * @return {String} Cookie setting\n */\n var findOrCreateCoookie = function(callback) {\n var cookie = getCookie(config.cookieName);\n if (cookie.length === 0) {\n cookie = setWeeklyBudgetCookie('show');\n cookie = cookie.split('=')[1];\n }\n\n if (callback && typeof callback === 'function') {\n return callback(cookie);\n }\n\n return cookie;\n };\n\n /**\n * Sets the WeeklyBudget cookie to the specified value\n * @param {String} value Show/Hide\n */\n var setWeeklyBudgetCookie = function(value) {\n var cookieParams = config.cookieName + '=' + value;\n document.cookie = cookieParams;\n return cookieParams;\n };\n\n /**\n * Updates the Weekly Budget Numbers based on a user's changes to a WeeklyBudget Object in the backend.\n * @param {Object} weeklyBudgetData Data returned from the backend\n */\n var updateWeeklyBudget = function(weeklyBudgetData) {\n $('#weekly-budget-details').prop('disabled', false);\n config.selectors.modal.modal('hide');\n budgetData.weeklyBudget = weeklyBudgetData;\n };\n\n var toggleHiddenBudgetBarClass = function(budgetBarPresent) {\n if (budgetBarPresent) {\n config.selectors.shiftTemplatesBox.removeClass('hidden-labour-budget');\n config.selectors.calendarBox.removeClass('hidden-labour-budget');\n } else {\n config.selectors.shiftTemplatesBox.addClass('hidden-labour-budget');\n config.selectors.calendarBox.addClass('hidden-labour-budget');\n }\n\n }\n\n return {\n init: init,\n budgetEvents: budgetEvents,\n spanBudgets: budgetData.spanBudgets\n };\n\n})(jQuery, window, document);\n\n\nwindow.add_tooltip = function(row_name){\n var $tna_tooltip = '';\n $(\"#\"+ row_name +\" td:first\").append($tna_tooltip);\n $('.tna_tooltip').on('mouseover', function(e) {\n $('.tna_tooltip').tooltip('show');\n });\n $('.tna_tooltip').on('mouseout', function(e) {\n $('.tna_tooltip').tooltip('hide');\n });\n}\n\n\n\nwindow.checkOvertimeAndNullify = function(source_row, compare_row, table, is_time_and_attendance) {\n\n table.find('tr#' + source_row + ' td').each(function(j, col) {\n var $col = $(col);\n if ($col.html().replace('$','').toNum() > $(\"#\"+ compare_row +\" td\")[j].innerHTML.replace('$','').toNum()) $col.addClass('overtime-hours');\n if (!is_time_and_attendance) if ($.isNumeric($col.html().replace('$','').toNum())) $col.html('n/a');\n })\n}\n\nwindow.weeklyBudget = weeklyBudget;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['csv-file-uploader new-file-upload', { 'border': _vm.draggedOver }]},[_c('div',[_vm._t(\"content\"),_vm._v(\" \"),_c('div',{staticClass:\"row-fluid\"},[_vm._v(_vm._s(_vm.I18n.t('user_imports.new.description_3')))]),_vm._v(\" \"),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.I18n.t('user_imports.new.template_download_html', {template_link: _vm.templateLink}))}}),_vm._v(\" \"),_c('div',{staticClass:\"row-fluid\"},[_vm._t(\"file-uploader\")],2)],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv_file_uploader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv_file_uploader.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./csv_file_uploader.vue?vue&type=template&id=df783b0e&\"\nimport script from \"./csv_file_uploader.vue?vue&type=script&lang=js&\"\nexport * from \"./csv_file_uploader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./csv_file_uploader.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"csv-file-upload-form\"},[(_vm.processing)?[_c('div',{staticClass:\"modal\"},[_c('div',{staticClass:\"modal-header\"},[_c('h3',[_vm._v(_vm._s(_vm.I18n.t('user_imports.new.please_wait')))])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-body\"},[_vm._t(\"default\")],2)]),_vm._v(\" \"),_c('div',{staticClass:\"modal-backdrop in\"})]:_vm._e(),_vm._v(\" \"),_c('input',{ref:\"fileUploader\",attrs:{\"type\":\"file\",\"accept\":\"text/csv\"},on:{\"change\":_vm.handleSelectCSV}}),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-blue\",on:{\"click\":_vm.handleClick}},[_vm._v(\"\\n \"+_vm._s(_vm.I18n.t('user_imports.new.select_csv'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"error-status\"},[_vm._v(_vm._s(_vm.errorMessage))])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv_file_upload_form.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv_file_upload_form.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./csv_file_upload_form.vue?vue&type=template&id=684e0156&\"\nimport script from \"./csv_file_upload_form.vue?vue&type=script&lang=js&\"\nexport * from \"./csv_file_upload_form.vue?vue&type=script&lang=js&\"\nimport style0 from \"./csv_file_upload_form.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export var onboardingPopovers = (function ($) {\n var init = function (settings) {\n var allSteps = settings.progress.allSteps(settings.checklistItem)\n $.extend(config, {\n progress: settings.progress,\n allSteps: allSteps,\n stepsCount: allSteps.length,\n checklistItem: settings.checklistItem,\n selectors: {\n //TODO: better caching of these selectors\n skipButton: function () {\n return $('.skip-btn')\n },\n qTipClose: function () {\n return $('.qtip-close')\n },\n finishButton: function () {\n return $('#finish-onboarding')\n },\n currentPopup: function () {\n return $('.onboarding-popup')\n }\n }\n })\n\n initOnboarding()\n }\n\n /* private */\n\n var config = {\n progress: [],\n allSteps: null\n }\n\n var onboardPopup = function (step) {\n var $div = $.isFunction(step.target) ? step.target() : step.target\n var stepNumber = config.allSteps.indexOf(step) + 1\n\n if ($div.length > 1) {\n $div = $div.filter(':visible').first()\n }\n\n if ($div.length === 0) {\n config.progress.updateProgress(config.checklistItem)\n // Since the element for the popover may not exist (example: locations nav for a dept admin), move on to the next step (if there is one)\n if (config.progress.nextItem()) {\n onboardingPopovers.init({ progress: config.progress, checklistItem: config.progress.nextItem() })\n }\n }\n\n $div.qtip({\n id: 'onboarding-qtip-step' + stepNumber, // qtip prepends 'qtip' to the id. so id ends up being: `qtip-onboarding-qtip-step{stepNumber}`\n content: {\n title: step.title,\n text: popoverContent(step.content, step.greyButtonText, stepNumber),\n button: config.stepsCount > 1 ? false : I18n.t('buttons.close')\n },\n position: {\n my: step.position.my,\n at: step.position.at,\n viewport: $('body'),\n adjust: {\n y: step.position.offsetY\n }\n },\n show: {\n ready: true,\n modal: {\n on: true,\n blur: false\n }\n },\n hide: {\n event: step.eventHide\n },\n style: {\n classes: 'qtip-bootstrap onboarding-popup'\n },\n events: {\n // remove previous onboarding qtip step when the next step pops up\n hide: function (event, api) {\n config.selectors.currentPopup().remove()\n $div.children().add($div).css({ position: '', 'z-index': '' })\n $div.unbind(step.eventHide)\n },\n show: function (event, api) {\n step.prerenderEvent()\n config.originalPosition = $div.children().css('position')\n config.originalZIndex = $div.children().css('z-index')\n $div.children().add($div).css({ position: step.zPosition, 'z-index': 14801 })\n },\n visible: function (event, api) {\n $('#onboarding-next-step' + stepNumber).on('click', function () {\n setTimeout(function () {\n config.selectors.currentPopup().qtip('hide')\n }, 90) // 90ms timer because the qtip animation keeps the modal overlay for that long.\n onboardPopup(config.allSteps[stepNumber])\n })\n\n config.selectors\n .skipButton()\n .add(config.selectors.finishButton())\n .on('click', function () {\n ajaxUpdateProgress(config.checklistItem)\n config.progress.updateProgress(config.checklistItem)\n config.selectors.currentPopup().qtip('hide')\n\n if (config.progress.nextItem()) {\n onboardingPopovers.init({ progress: config.progress, checklistItem: config.progress.nextItem() })\n }\n })\n\n step.target.on(step.eventHide, function () {\n // send check to checklist and remove all qtips on completion of onboarding\n config.progress.updateProgress(config.checklistItem)\n config.selectors.currentPopup().qtip('hide')\n })\n }\n }\n })\n }\n\n var popoverContent = function (content, greyButtonText, stepNumber) {\n var html = ''\n html += \"
\"\n html += \"
\"\n html += content\n html += '
'\n html += '
'\n html += \"
\"\n html += \"
\"\n if (greyButtonText) {\n html += \"
\" + greyButtonText + '
'\n }\n html += '
'\n if (config.stepsCount > 1) {\n html += \"
\"\n html += \"\" + I18n.t('onboarding.js.progress', { step: stepNumber, total_steps: config.stepsCount }) + ''\n html += '
'\n html += \"
\"\n if (greyButtonText != I18n.t('buttons.done')) {\n if (config.stepsCount === stepNumber) {\n html += \"
\" + I18n.t('buttons.finish') + '
'\n } else {\n html += \"
\" + I18n.t('buttons.next') + '
'\n }\n }\n html += '
'\n }\n html += '
'\n\n return html\n }\n\n var ajaxUpdateProgress = function (checklistItem) {\n $.ajax({\n type: 'POST',\n url: '/department_schedule_checklist_items',\n data: { department_schedule_checklist_item: checklistItem },\n dataType: 'json'\n })\n }\n\n var initOnboarding = function () {\n var step = config.allSteps[0]\n onboardPopup(step)\n step.bindAjaxUpdateProgress(ajaxUpdateProgress, config.progress)\n }\n\n return {\n init: init\n }\n})(jQuery)\n\nwindow.onboardingPopovers = onboardingPopovers\n","import { messaging } from 'core/messaging.js';\n/*\n * Model that represents a Message\n *\n * @param {Object} data JSON attributes\n *\n * @return {Message}\n */\nexport var Message = function(data) {\n this.id = data.id;\n this.body = data.body;\n this.createdAt = data.created_at;\n this.userId = data.user_id;\n};\n\nMessage.prototype = {\n\n /*\n * Associated User\n */\n user: function() {\n return messaging.store.findUser(this.userId);\n },\n\n /*\n * Render template\n */\n render: function() {\n return HandlebarsTemplates['messages/show']({\n message: this,\n user: this.user()\n });\n }\n\n};","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{'ui-datatable-container': true, 'bootstrap': _vm.bootstrap}},[_c('ui-spinner',{attrs:{\"show\":!_vm.bootstrap && _vm.loading}}),_vm._v(\" \"),_c('table',{ref:\"datatable\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui_datatable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui_datatable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ui_datatable.vue?vue&type=template&id=4b15ad1a&\"\nimport script from \"./ui_datatable.vue?vue&type=script&lang=js&\"\nexport * from \"./ui_datatable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ui_datatable.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Generate a message for a bootbox alert\n// We try to glean additional information from the error_type\n// so that we don't always have an alert that starts with \"Error\"\nexport function bootboxMsg(responseJSON) {\n\n // If no responseJSON exists, give it a default value\n if (responseJSON === null || typeof responseJSON !== 'object') {\n responseJSON = {};\n }\n\n // Provide a default error message\n if (!responseJSON.hasOwnProperty('error_message')) {\n responseJSON.error_message = I18n.t('department_schedules.js.error_occurred');\n }\n\n return '

' + I18n.t('department_schedules.js.error') + '

' + responseJSON.error_message + '

';\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{class:{ 'ui-checkbox-container': true, disabled: _vm.disabled }},[(_vm.defaultChecked)?_c('input',{class:_vm.inputClass,attrs:{\"type\":\"checkbox\",\"checked\":\"checked\",\"id\":_vm.id,\"name\":_vm.name,\"disabled\":_vm.disabled},on:{\"change\":function($event){return _vm.$emit('change', $event)}}}):_c('input',{class:_vm.inputClass,attrs:{\"type\":\"checkbox\",\"id\":_vm.id,\"name\":_vm.name,\"disabled\":_vm.disabled},on:{\"change\":function($event){return _vm.$emit('change', $event)}}}),_vm._v(\" \"),_c('span',{class:_vm.checkboxClass})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui_checkbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ui_checkbox.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ui_checkbox.vue?vue&type=template&id=e039409c&\"\nimport script from \"./ui_checkbox.vue?vue&type=script&lang=js&\"\nexport * from \"./ui_checkbox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ui_checkbox.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*!\n * Vue.js v2.6.14\n * (c) 2014-2021 Evan You\n * Released under the MIT License.\n */\n\n/* */\nvar emptyObject = Object.freeze({}); // These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\n\nfunction isUndef(v) {\n return v === undefined || v === null;\n}\n\nfunction isDef(v) {\n return v !== undefined && v !== null;\n}\n\nfunction isTrue(v) {\n return v === true;\n}\n\nfunction isFalse(v) {\n return v === false;\n}\n/**\n * Check if value is primitive.\n */\n\n\nfunction isPrimitive(value) {\n return typeof value === 'string' || typeof value === 'number' || // $flow-disable-line\n typeof value === 'symbol' || typeof value === 'boolean';\n}\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\n\n\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\n\n\nvar _toString = Object.prototype.toString;\n\nfunction toRawType(value) {\n return _toString.call(value).slice(8, -1);\n}\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\n\n\nfunction isPlainObject(obj) {\n return _toString.call(obj) === '[object Object]';\n}\n\nfunction isRegExp(v) {\n return _toString.call(v) === '[object RegExp]';\n}\n/**\n * Check if val is a valid array index.\n */\n\n\nfunction isValidArrayIndex(val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val);\n}\n\nfunction isPromise(val) {\n return isDef(val) && typeof val.then === 'function' && typeof val.catch === 'function';\n}\n/**\n * Convert a value to a string that is actually rendered.\n */\n\n\nfunction toString(val) {\n return val == null ? '' : Array.isArray(val) || isPlainObject(val) && val.toString === _toString ? JSON.stringify(val, null, 2) : String(val);\n}\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\n\n\nfunction toNumber(val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n;\n}\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\n\n\nfunction makeMap(str, expectsLowerCase) {\n var map = Object.create(null);\n var list = str.split(',');\n\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n\n return expectsLowerCase ? function (val) {\n return map[val.toLowerCase()];\n } : function (val) {\n return map[val];\n };\n}\n/**\n * Check if a tag is a built-in tag.\n */\n\n\nvar isBuiltInTag = makeMap('slot,component', true);\n/**\n * Check if an attribute is a reserved attribute.\n */\n\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n/**\n * Remove an item from an array.\n */\n\nfunction remove(arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n\n if (index > -1) {\n return arr.splice(index, 1);\n }\n }\n}\n/**\n * Check whether an object has the property.\n */\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/**\n * Create a cached version of a pure function.\n */\n\n\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n/**\n * Camelize a hyphen-delimited string.\n */\n\n\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) {\n return c ? c.toUpperCase() : '';\n });\n});\n/**\n * Capitalize a string.\n */\n\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\n/**\n * Hyphenate a camelCase string.\n */\n\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\n\nfunction polyfillBind(fn, ctx) {\n function boundFn(a) {\n var l = arguments.length;\n return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx);\n }\n\n boundFn._length = fn.length;\n return boundFn;\n}\n\nfunction nativeBind(fn, ctx) {\n return fn.bind(ctx);\n}\n\nvar bind = Function.prototype.bind ? nativeBind : polyfillBind;\n/**\n * Convert an Array-like object to a real Array.\n */\n\nfunction toArray(list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n\n while (i--) {\n ret[i] = list[i + start];\n }\n\n return ret;\n}\n/**\n * Mix properties into target object.\n */\n\n\nfunction extend(to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n\n return to;\n}\n/**\n * Merge an Array of Objects into a single Object.\n */\n\n\nfunction toObject(arr) {\n var res = {};\n\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n\n return res;\n}\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\n\n\nfunction noop(a, b, c) {}\n/**\n * Always return false.\n */\n\n\nvar no = function (a, b, c) {\n return false;\n};\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\n\n\nvar identity = function (_) {\n return _;\n};\n/**\n * Generate a string containing static keys from compiler modules.\n */\n\n\nfunction genStaticKeys(modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || []);\n }, []).join(',');\n}\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\n\n\nfunction looseEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i]);\n });\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key]);\n });\n } else {\n /* istanbul ignore next */\n return false;\n }\n } catch (e) {\n /* istanbul ignore next */\n return false;\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b);\n } else {\n return false;\n }\n}\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\n\n\nfunction looseIndexOf(arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) {\n return i;\n }\n }\n\n return -1;\n}\n/**\n * Ensure a function is called only once.\n */\n\n\nfunction once(fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n };\n}\n\nvar SSR_ATTR = 'data-server-rendered';\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\nvar LIFECYCLE_HOOKS = ['beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'beforeDestroy', 'destroyed', 'activated', 'deactivated', 'errorCaptured', 'serverPrefetch'];\n/* */\n\nvar config = {\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n};\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\n\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n/**\n * Check if a string starts with $ or _\n */\n\nfunction isReserved(str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F;\n}\n/**\n * Define a property.\n */\n\n\nfunction def(obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n/**\n * Parse simple path.\n */\n\n\nvar bailRE = new RegExp(\"[^\" + unicodeRegExp.source + \".$_\\\\d]\");\n\nfunction parsePath(path) {\n if (bailRE.test(path)) {\n return;\n }\n\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) {\n return;\n }\n\n obj = obj[segments[i]];\n }\n\n return obj;\n };\n}\n/* */\n// can we use __proto__?\n\n\nvar hasProto = ('__proto__' in {}); // Browser environment sniffing\n\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = UA && UA.indexOf('android') > 0 || weexPlatform === 'android';\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA) || weexPlatform === 'ios';\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/); // Firefox has a \"watch\" function on Object.prototype...\n\nvar nativeWatch = {}.watch;\nvar supportsPassive = false;\n\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', {\n get: function get() {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n }); // https://github.com/facebook/flow/issues/285\n\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n} // this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\n\n\nvar _isServer;\n\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n\n return _isServer;\n}; // detect devtools\n\n\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n/* istanbul ignore next */\n\nfunction isNative(Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\n}\n\nvar hasSymbol = typeof Symbol !== 'undefined' && isNative(Symbol) && typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */\n// $flow-disable-line\n\n\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/function () {\n function Set() {\n this.set = Object.create(null);\n }\n\n Set.prototype.has = function has(key) {\n return this.set[key] === true;\n };\n\n Set.prototype.add = function add(key) {\n this.set[key] = true;\n };\n\n Set.prototype.clear = function clear() {\n this.set = Object.create(null);\n };\n\n return Set;\n }();\n}\n/* */\n\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = noop; // work around flow check\n\nvar formatComponentName = noop;\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n\n var classify = function (str) {\n return str.replace(classifyRE, function (c) {\n return c.toUpperCase();\n }).replace(/[-_]/g, '');\n };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && !config.silent) {\n console.error(\"[Vue warn]: \" + msg + trace);\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && !config.silent) {\n console.warn(\"[Vue tip]: \" + msg + (vm ? generateComponentTrace(vm) : ''));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '';\n }\n\n var options = typeof vm === 'function' && vm.cid != null ? vm.options : vm._isVue ? vm.$options || vm.constructor.options : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (name ? \"<\" + classify(name) + \">\" : \"\") + (file && includeFile !== false ? \" at \" + file : '');\n };\n\n var repeat = function (str, n) {\n var res = '';\n\n while (n) {\n if (n % 2 === 1) {\n res += str;\n }\n\n if (n > 1) {\n str += str;\n }\n\n n >>= 1;\n }\n\n return res;\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue;\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n\n tree.push(vm);\n vm = vm.$parent;\n }\n\n return '\\n\\nfound in\\n\\n' + tree.map(function (vm, i) {\n return \"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm) ? formatComponentName(vm[0]) + \"... (\" + vm[1] + \" recursive calls)\" : formatComponentName(vm));\n }).join('\\n');\n } else {\n return \"\\n\\n(found in \" + formatComponentName(vm) + \")\";\n }\n };\n}\n/* */\n\n\nvar uid = 0;\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\n\nvar Dep = function Dep() {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub(sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub(sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend() {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify() {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) {\n return a.id - b.id;\n });\n }\n\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n}; // The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\n\n\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget(target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget() {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n/* */\n\n\nvar VNode = function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = {\n child: {\n configurable: true\n }\n}; // DEPRECATED: alias for componentInstance for backwards compat.\n\n/* istanbul ignore next */\n\nprototypeAccessors.child.get = function () {\n return this.componentInstance;\n};\n\nObject.defineProperties(VNode.prototype, prototypeAccessors);\n\nvar createEmptyVNode = function (text) {\n if (text === void 0) text = '';\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node;\n};\n\nfunction createTextVNode(val) {\n return new VNode(undefined, undefined, undefined, String(val));\n} // optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\n\n\nfunction cloneVNode(vnode) {\n var cloned = new VNode(vnode.tag, vnode.data, // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned;\n}\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\nvar methodsToPatch = ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'];\n/**\n * Intercept mutating methods and emit events\n */\n\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator() {\n var args = [],\n len = arguments.length;\n\n while (len--) args[len] = arguments[len];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break;\n\n case 'splice':\n inserted = args.slice(2);\n break;\n }\n\n if (inserted) {\n ob.observeArray(inserted);\n } // notify change\n\n\n ob.dep.notify();\n return result;\n });\n});\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\n\nvar shouldObserve = true;\n\nfunction toggleObserving(value) {\n shouldObserve = value;\n}\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\n\n\nvar Observer = function Observer(value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n\n\nObserver.prototype.walk = function walk(obj) {\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n/**\n * Observe a list of Array items.\n */\n\n\nObserver.prototype.observeArray = function observeArray(items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n}; // helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\n\n\nfunction protoAugment(target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n\n/* istanbul ignore next */\n\n\nfunction copyAugment(target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\n\n\nfunction observe(value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return;\n }\n\n var ob;\n\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (shouldObserve && !isServerRendering() && (Array.isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) {\n ob = new Observer(value);\n }\n\n if (asRootData && ob) {\n ob.vmCount++;\n }\n\n return ob;\n}\n/**\n * Define a reactive property on an Object.\n */\n\n\nfunction defineReactive$$1(obj, key, val, customSetter, shallow) {\n var dep = new Dep();\n var property = Object.getOwnPropertyDescriptor(obj, key);\n\n if (property && property.configurable === false) {\n return;\n } // cater for pre-defined getter/setters\n\n\n var getter = property && property.get;\n var setter = property && property.set;\n\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter() {\n var value = getter ? getter.call(obj) : val;\n\n if (Dep.target) {\n dep.depend();\n\n if (childOb) {\n childOb.dep.depend();\n\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n\n return value;\n },\n set: function reactiveSetter(newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n\n if (newVal === value || newVal !== newVal && value !== value) {\n return;\n }\n /* eslint-enable no-self-compare */\n\n\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n } // #7981: for accessor properties without setter\n\n\n if (getter && !setter) {\n return;\n }\n\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\n\n\nfunction set(target, key, val) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot set reactive property on undefined, null, or primitive value: \" + target);\n }\n\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val;\n }\n\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val;\n }\n\n var ob = target.__ob__;\n\n if (target._isVue || ob && ob.vmCount) {\n process.env.NODE_ENV !== 'production' && warn('Avoid adding reactive properties to a Vue instance or its root $data ' + 'at runtime - declare it upfront in the data option.');\n return val;\n }\n\n if (!ob) {\n target[key] = val;\n return val;\n }\n\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val;\n}\n/**\n * Delete a property and trigger change if necessary.\n */\n\n\nfunction del(target, key) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot delete reactive property on undefined, null, or primitive value: \" + target);\n }\n\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return;\n }\n\n var ob = target.__ob__;\n\n if (target._isVue || ob && ob.vmCount) {\n process.env.NODE_ENV !== 'production' && warn('Avoid deleting properties on a Vue instance or its root $data ' + '- just set it to null.');\n return;\n }\n\n if (!hasOwn(target, key)) {\n return;\n }\n\n delete target[key];\n\n if (!ob) {\n return;\n }\n\n ob.dep.notify();\n}\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\n\n\nfunction dependArray(value) {\n for (var e = void 0, i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\n\n\nvar strats = config.optionMergeStrategies;\n/**\n * Options with restrictions\n */\n\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\"option \\\"\" + key + \"\\\" can only be used during instance \" + 'creation with the `new` keyword.');\n }\n\n return defaultStrat(parent, child);\n };\n}\n/**\n * Helper that recursively merges two data objects together.\n */\n\n\nfunction mergeData(to, from) {\n if (!from) {\n return to;\n }\n\n var key, toVal, fromVal;\n var keys = hasSymbol ? Reflect.ownKeys(from) : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i]; // in case the object is already observed...\n\n if (key === '__ob__') {\n continue;\n }\n\n toVal = to[key];\n fromVal = from[key];\n\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (toVal !== fromVal && isPlainObject(toVal) && isPlainObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n\n return to;\n}\n/**\n * Data\n */\n\n\nfunction mergeDataOrFn(parentVal, childVal, vm) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal;\n }\n\n if (!parentVal) {\n return childVal;\n } // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n\n\n return function mergedDataFn() {\n return mergeData(typeof childVal === 'function' ? childVal.call(this, this) : childVal, typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal);\n };\n } else {\n return function mergedInstanceDataFn() {\n // instance merge\n var instanceData = typeof childVal === 'function' ? childVal.call(vm, vm) : childVal;\n var defaultData = typeof parentVal === 'function' ? parentVal.call(vm, vm) : parentVal;\n\n if (instanceData) {\n return mergeData(instanceData, defaultData);\n } else {\n return defaultData;\n }\n };\n }\n}\n\nstrats.data = function (parentVal, childVal, vm) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn('The \"data\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n return parentVal;\n }\n\n return mergeDataOrFn(parentVal, childVal);\n }\n\n return mergeDataOrFn(parentVal, childVal, vm);\n};\n/**\n * Hooks and props are merged as arrays.\n */\n\n\nfunction mergeHook(parentVal, childVal) {\n var res = childVal ? parentVal ? parentVal.concat(childVal) : Array.isArray(childVal) ? childVal : [childVal] : parentVal;\n return res ? dedupeHooks(res) : res;\n}\n\nfunction dedupeHooks(hooks) {\n var res = [];\n\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n\n return res;\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\n\nfunction mergeAssets(parentVal, childVal, vm, key) {\n var res = Object.create(parentVal || null);\n\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal);\n } else {\n return res;\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\n\nstrats.watch = function (parentVal, childVal, vm, key) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) {\n parentVal = undefined;\n }\n\n if (childVal === nativeWatch) {\n childVal = undefined;\n }\n /* istanbul ignore if */\n\n\n if (!childVal) {\n return Object.create(parentVal || null);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n var ret = {};\n extend(ret, parentVal);\n\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n\n ret[key$1] = parent ? parent.concat(child) : Array.isArray(child) ? child : [child];\n }\n\n return ret;\n};\n/**\n * Other object hashes.\n */\n\n\nstrats.props = strats.methods = strats.inject = strats.computed = function (parentVal, childVal, vm, key) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n var ret = Object.create(null);\n extend(ret, parentVal);\n\n if (childVal) {\n extend(ret, childVal);\n }\n\n return ret;\n};\n\nstrats.provide = mergeDataOrFn;\n/**\n * Default strategy.\n */\n\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined ? parentVal : childVal;\n};\n/**\n * Validate component names\n */\n\n\nfunction checkComponents(options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName(name) {\n if (!new RegExp(\"^[a-zA-Z][\\\\-\\\\.0-9_\" + unicodeRegExp.source + \"]*$\").test(name)) {\n warn('Invalid component name: \"' + name + '\". Component names ' + 'should conform to valid custom element name in html5 specification.');\n }\n\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + name);\n }\n}\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\n\n\nfunction normalizeProps(options, vm) {\n var props = options.props;\n\n if (!props) {\n return;\n }\n\n var res = {};\n var i, val, name;\n\n if (Array.isArray(props)) {\n i = props.length;\n\n while (i--) {\n val = props[i];\n\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = {\n type: null\n };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val) ? val : {\n type: val\n };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\"Invalid value for option \\\"props\\\": expected an Array or an Object, \" + \"but got \" + toRawType(props) + \".\", vm);\n }\n\n options.props = res;\n}\n/**\n * Normalize all injections into Object-based format\n */\n\n\nfunction normalizeInject(options, vm) {\n var inject = options.inject;\n\n if (!inject) {\n return;\n }\n\n var normalized = options.inject = {};\n\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = {\n from: inject[i]\n };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val) ? extend({\n from: key\n }, val) : {\n from: val\n };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" + \"but got \" + toRawType(inject) + \".\", vm);\n }\n}\n/**\n * Normalize raw function directives into object format.\n */\n\n\nfunction normalizeDirectives(options) {\n var dirs = options.directives;\n\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n\n if (typeof def$$1 === 'function') {\n dirs[key] = {\n bind: def$$1,\n update: def$$1\n };\n }\n }\n }\n}\n\nfunction assertObjectType(name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" + \"but got \" + toRawType(value) + \".\", vm);\n }\n}\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\n\n\nfunction mergeOptions(parent, child, vm) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child); // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n\n for (key in parent) {\n mergeField(key);\n }\n\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n\n function mergeField(key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n\n return options;\n}\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\n\n\nfunction resolveAsset(options, type, id, warnMissing) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return;\n }\n\n var assets = options[type]; // check local registration variations first\n\n if (hasOwn(assets, id)) {\n return assets[id];\n }\n\n var camelizedId = camelize(id);\n\n if (hasOwn(assets, camelizedId)) {\n return assets[camelizedId];\n }\n\n var PascalCaseId = capitalize(camelizedId);\n\n if (hasOwn(assets, PascalCaseId)) {\n return assets[PascalCaseId];\n } // fallback to prototype chain\n\n\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id, options);\n }\n\n return res;\n}\n/* */\n\n\nfunction validateProp(key, propOptions, propsData, vm) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key]; // boolean casting\n\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n } // check default value\n\n\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key); // since the default value is a fresh copy,\n // make sure to observe it.\n\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n\n if (process.env.NODE_ENV !== 'production' && // skip validation for weex recycle-list child component props\n !false) {\n assertProp(prop, key, value, vm, absent);\n }\n\n return value;\n}\n/**\n * Get the default value of a prop.\n */\n\n\nfunction getPropDefaultValue(vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined;\n }\n\n var def = prop.default; // warn against non-factory defaults for Object & Array\n\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn('Invalid default value for prop \"' + key + '\": ' + 'Props with type Object/Array must use a factory function ' + 'to return the default value.', vm);\n } // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n\n\n if (vm && vm.$options.propsData && vm.$options.propsData[key] === undefined && vm._props[key] !== undefined) {\n return vm._props[key];\n } // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n\n\n return typeof def === 'function' && getType(prop.type) !== 'Function' ? def.call(vm) : def;\n}\n/**\n * Assert whether a prop is valid.\n */\n\n\nfunction assertProp(prop, name, value, vm, absent) {\n if (prop.required && absent) {\n warn('Missing required prop: \"' + name + '\"', vm);\n return;\n }\n\n if (value == null && !prop.required) {\n return;\n }\n\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i], vm);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n var haveExpectedTypes = expectedTypes.some(function (t) {\n return t;\n });\n\n if (!valid && haveExpectedTypes) {\n warn(getInvalidTypeMessage(name, value, expectedTypes), vm);\n return;\n }\n\n var validator = prop.validator;\n\n if (validator) {\n if (!validator(value)) {\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".', vm);\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;\n\nfunction assertType(value, type, vm) {\n var valid;\n var expectedType = getType(type);\n\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase(); // for primitive wrapper objects\n\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n try {\n valid = value instanceof type;\n } catch (e) {\n warn('Invalid prop type: \"' + String(type) + '\" is not a constructor', vm);\n valid = false;\n }\n }\n\n return {\n valid: valid,\n expectedType: expectedType\n };\n}\n\nvar functionTypeCheckRE = /^\\s*function (\\w+)/;\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\n\nfunction getType(fn) {\n var match = fn && fn.toString().match(functionTypeCheckRE);\n return match ? match[1] : '';\n}\n\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\n\nfunction getTypeIndex(type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" + \" Expected \" + expectedTypes.map(capitalize).join(', ');\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value); // check if we need to specify expected value\n\n if (expectedTypes.length === 1 && isExplicable(expectedType) && isExplicable(typeof value) && !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + styleValue(value, expectedType);\n }\n\n message += \", got \" + receivedType + \" \"; // check if we need to specify received value\n\n if (isExplicable(receivedType)) {\n message += \"with value \" + styleValue(value, receivedType) + \".\";\n }\n\n return message;\n}\n\nfunction styleValue(value, type) {\n if (type === 'String') {\n return \"\\\"\" + value + \"\\\"\";\n } else if (type === 'Number') {\n return \"\" + Number(value);\n } else {\n return \"\" + value;\n }\n}\n\nvar EXPLICABLE_TYPES = ['string', 'number', 'boolean'];\n\nfunction isExplicable(value) {\n return EXPLICABLE_TYPES.some(function (elem) {\n return value.toLowerCase() === elem;\n });\n}\n\nfunction isBoolean() {\n var args = [],\n len = arguments.length;\n\n while (len--) args[len] = arguments[len];\n\n return args.some(function (elem) {\n return elem.toLowerCase() === 'boolean';\n });\n}\n/* */\n\n\nfunction handleError(err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n\n try {\n if (vm) {\n var cur = vm;\n\n while (cur = cur.$parent) {\n var hooks = cur.$options.errorCaptured;\n\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n\n if (capture) {\n return;\n }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling(handler, context, args, vm, info) {\n var res;\n\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) {\n return handleError(e, vm, info + \" (Promise/async)\");\n }); // issue #9511\n // avoid catch triggering multiple times when nested calls\n\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n\n return res;\n}\n\nfunction globalHandleError(err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info);\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n\n logError(err, vm, info);\n}\n\nfunction logError(err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Error in \" + info + \": \\\"\" + err.toString() + \"\\\"\", vm);\n }\n /* istanbul ignore else */\n\n\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err;\n }\n}\n/* */\n\n\nvar isUsingMicroTask = false;\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks() {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n} // Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\n\n\nvar timerFunc; // The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n\n/* istanbul ignore next, $flow-disable-line */\n\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n\n timerFunc = function () {\n p.then(flushCallbacks); // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n\n if (isIOS) {\n setTimeout(noop);\n }\n };\n\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (isNative(MutationObserver) || // PhantomJS and iOS 7.x\nMutationObserver.toString() === '[object MutationObserverConstructor]')) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick(cb, ctx) {\n var _resolve;\n\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n\n if (!pending) {\n pending = true;\n timerFunc();\n } // $flow-disable-line\n\n\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n });\n }\n}\n/* */\n\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n\n if (perf && perf.mark && perf.measure && perf.clearMarks && perf.clearMeasures) {\n mark = function (tag) {\n return perf.mark(tag);\n };\n\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag); // perf.clearMeasures(name)\n };\n }\n}\n/* not type checking this file because flow doesn't play well with Proxy */\n\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' + 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' + 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" + 'referenced during render. Make sure that this property is reactive, ' + 'either in the data option, or for class-based components, by ' + 'initializing the property. ' + 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target);\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" + 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' + 'prevent conflicts with Vue internals. ' + 'See: https://vuejs.org/v2/api/#data', target);\n };\n\n var hasProxy = typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set(target, key, value) {\n if (isBuiltInModifier(key)) {\n warn(\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key);\n return false;\n } else {\n target[key] = value;\n return true;\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has(target, key) {\n var has = (key in target);\n var isAllowed = allowedGlobals(key) || typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data);\n\n if (!has && !isAllowed) {\n if (key in target.$data) {\n warnReservedPrefix(target, key);\n } else {\n warnNonPresent(target, key);\n }\n }\n\n return has || !isAllowed;\n }\n };\n var getHandler = {\n get: function get(target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) {\n warnReservedPrefix(target, key);\n } else {\n warnNonPresent(target, key);\n }\n }\n\n return target[key];\n }\n };\n\n initProxy = function initProxy(vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped ? getHandler : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n/* */\n\n\nvar seenObjects = new _Set();\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\n\nfunction traverse(val) {\n _traverse(val, seenObjects);\n\n seenObjects.clear();\n}\n\nfunction _traverse(val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n\n if (!isA && !isObject(val) || Object.isFrozen(val) || val instanceof VNode) {\n return;\n }\n\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n\n if (seen.has(depId)) {\n return;\n }\n\n seen.add(depId);\n }\n\n if (isA) {\n i = val.length;\n\n while (i--) {\n _traverse(val[i], seen);\n }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n\n while (i--) {\n _traverse(val[keys[i]], seen);\n }\n }\n}\n/* */\n\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n };\n});\n\nfunction createFnInvoker(fns, vm) {\n function invoker() {\n var arguments$1 = arguments;\n var fns = invoker.fns;\n\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\n }\n }\n\n invoker.fns = fns;\n return invoker;\n}\n\nfunction updateListeners(on, oldOn, add, remove$$1, createOnceHandler, vm) {\n var name, def$$1, cur, old, event;\n\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\"Invalid handler for event \\\"\" + event.name + \"\\\": got \" + String(cur), vm);\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n/* */\n\n\nfunction mergeVNodeHook(def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook() {\n hook.apply(this, arguments); // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n/* */\n\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n\n if (isUndef(propOptions)) {\n return;\n }\n\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n\n if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\n tip(\"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" + formatComponentName(tag || Ctor) + \", but the declared prop name is\" + \" \\\"\" + key + \"\\\". \" + \"Note that HTML attributes are case-insensitive and camelCased \" + \"props need to use their kebab-case equivalents when using in-DOM \" + \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\");\n }\n }\n\n checkProp(res, props, key, altKey, true) || checkProp(res, attrs, key, altKey, false);\n }\n }\n\n return res;\n}\n\nfunction checkProp(res, hash, key, altKey, preserve) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n\n if (!preserve) {\n delete hash[key];\n }\n\n return true;\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n\n if (!preserve) {\n delete hash[altKey];\n }\n\n return true;\n }\n }\n\n return false;\n}\n/* */\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\n\n\nfunction simpleNormalizeChildren(children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children);\n }\n }\n\n return children;\n} // 2. When the children contains constructs that always generated nested Arrays,\n// e.g.