{"version":3,"file":"js/804-82c9b7678064eb946ca1.js","mappings":"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","sources":["webpack://scout/./app/javascript/controllers/ sync \\.js$","webpack://scout/./app/javascript/controllers/action_menu_controller.js","webpack://scout/./app/javascript/controllers/ajax_errors_controller.js","webpack://scout/./app/javascript/controllers/async_form_controller.js","webpack://scout/./app/javascript/controllers/authorization_length_controller.js","webpack://scout/./app/javascript/controllers/autogrow_controller.js","webpack://scout/./app/javascript/controllers/breadcrumbs_as_toggles_controller.js","webpack://scout/./app/javascript/controllers/bulk_actions_controller.js","webpack://scout/./app/javascript/controllers/campaign_search_controller.js","webpack://scout/./app/javascript/controllers/chart_selection_form_controller.js","webpack://scout/./app/javascript/controllers/charts/access_status_bars_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/access_status_detail_bars_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/bars_chart_base_controller.js","webpack://scout/./app/javascript/controllers/charts/bars_chart_grid_base.js","webpack://scout/./app/javascript/controllers/charts/chart_controller_base.js","webpack://scout/./app/javascript/controllers/charts/colors_demo_controller.js","webpack://scout/./app/javascript/controllers/charts/confirmed_access_changes_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/confirmed_access_donut_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/confirmed_access_over_time_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/confirmed_access_status_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/confirmed_access_us_state_map_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/confirmed_access_with_medicaid_outreach_us_state_map_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/custom_field_bars_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/custom_field_payers_or_lives_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/custom_field_payers_v_lives_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/custom_field_payers_v_lives_over_time_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/custom_field_pie_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/custom_field_single_value_us_state_map_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/custom_field_table_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/custom_field_us_state_map_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/custom_field_value_bars_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/many_drugs_many_payer_types_controller_base.js","webpack://scout/./app/javascript/controllers/charts/multi_drug_access_status_bars_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/multi_drug_access_status_bars_minimal_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/multi_drug_access_status_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/multi_drug_confirmed_access_over_time_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/multi_drug_payers_v_lives_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/one_drug_many_payer_types_chart_controller_base.js","webpack://scout/./app/javascript/controllers/charts/one_drug_one_payer_type_chart_controller_base.js","webpack://scout/./app/javascript/controllers/charts/one_payer_type_many_drugs_chart_controller_base.js","webpack://scout/./app/javascript/controllers/charts/pa_auth_length_bars_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/pa_has_auth_length_donut_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/pa_has_auth_length_table_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/pa_required_donut_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/pa_required_table_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/pa_us_state_map_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/payers_lives_donut_chart_base.js","webpack://scout/./app/javascript/controllers/charts/payers_v_lives_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/payers_v_lives_chart_controller_base.js","webpack://scout/./app/javascript/controllers/charts/payers_v_lives_over_time_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/published_policies_donut_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/published_policies_table_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/published_policies_us_state_map_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/quantity_limits_donut_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/quantity_limits_table_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/quantity_limits_us_state_map_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/step_therapy_donut_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/step_therapy_table_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/step_therapy_us_state_map_chart_controller.js","webpack://scout/./app/javascript/controllers/charts/us_state_chart_controller_base.js","webpack://scout/./app/javascript/controllers/checkbox_list_controller.js","webpack://scout/./app/javascript/controllers/clipboard_controller.js","webpack://scout/./app/javascript/controllers/collapsible_controller.js","webpack://scout/./app/javascript/templates/spinner.js","webpack://scout/./app/javascript/controllers/comparison_report_controller.js","webpack://scout/./app/javascript/controllers/conditional_input_controller.js","webpack://scout/./app/javascript/controllers/confirmable_controller.js","webpack://scout/./app/javascript/controllers/connected_multiselect_controller.js","webpack://scout/./app/javascript/controllers/contact_autocomplete_controller.js","webpack://scout/./app/javascript/controllers/content_loader_controller.js","webpack://scout/./app/javascript/controllers/copy_html_controller.js","webpack://scout/./app/javascript/controllers/copy_row_inputs_controller.js","webpack://scout/./app/javascript/controllers/coverage_counting_controller.js","webpack://scout/./app/javascript/utilities/preserve_scroll_position.js","webpack://scout/./app/javascript/controllers/coverage_details_carousel_controller.js","webpack://scout/./app/javascript/controllers/coverage_export_controller.js","webpack://scout/./app/javascript/controllers/custom_field_chart_numerator_value_picker_controller.js","webpack://scout/./app/javascript/controllers/custom_field_values_priority_controller.js","webpack://scout/./app/javascript/controllers/custom_field_values_with_abbreviations_controller.js","webpack://scout/./app/javascript/controllers/date_picker_controller.js","webpack://scout/./app/javascript/controllers/decimal_input_controller.js","webpack://scout/./app/javascript/controllers/download_as_image_controller.js","webpack://scout/./app/javascript/controllers/draft_lcd_controller.js","webpack://scout/./app/javascript/controllers/drug_price_input_controller.js","webpack://scout/./app/javascript/controllers/e_alert_builder_table_controller.js","webpack://scout/./app/javascript/controllers/e_alert_coverage_table_controller.js","webpack://scout/./app/javascript/controllers/e_alert_coverage_table_modal_controller.js","webpack://scout/./app/javascript/controllers/e_alert_email_download_controller.js","webpack://scout/./app/javascript/controllers/e_alert_section_diff_controller.js","webpack://scout/./app/javascript/controllers/editable_htmldiff_controller.js","webpack://scout/./app/javascript/controllers/events_controller.js","webpack://scout/./app/javascript/controllers/external_links_controller.js","webpack://scout/./app/javascript/controllers/file_input_controller.js","webpack://scout/./app/javascript/controllers/filter_list_controller.js","webpack://scout/./app/javascript/controllers/filterable_frame_controller.js","webpack://scout/./app/javascript/controllers/filters_controller.js","webpack://scout/./app/javascript/controllers/flash_controller.js","webpack://scout/./app/javascript/controllers/form_controller.js","webpack://scout/./app/javascript/controllers/form_with_error_prone_fields_controller.js","webpack://scout/./app/javascript/controllers/form_with_required_inputs_controller.js","webpack://scout/./app/javascript/controllers/grid_column_switcher_controller.js","webpack://scout/./app/javascript/controllers/hcpcs_input_controller.js","webpack://scout/./app/javascript/controllers/hide_controller.js","webpack://scout/./app/javascript/controllers/hide_many_controller.js","webpack://scout/./app/javascript/controllers/honorarium_address_controller.js","webpack://scout/./app/javascript/controllers/hovercard_controller.js","webpack://scout/./app/javascript/controllers/inline_multiselect_controller.js","webpack://scout/./app/javascript/controllers/input_exclusivity_controller.js","webpack://scout/./app/javascript/controllers/keep_on_screen_controller.js","webpack://scout/./app/javascript/controllers/lazy_load_panel_controller.js","webpack://scout/./app/javascript/controllers/legacy_mobile_menu_controller.js","webpack://scout/./app/javascript/controllers/link_select_controller.js","webpack://scout/./app/javascript/controllers/linked_dropdown_controller.js","webpack://scout/./app/javascript/controllers/location_hash_update_controller.js","webpack://scout/./app/javascript/controllers/locked_fieldset_controller.js","webpack://scout/./app/javascript/controllers/map_popup_controller.js","webpack://scout/./app/javascript/controllers/map_state_dropdown_controller.js","webpack://scout/./app/javascript/controllers/map_terms_controller.js","webpack://scout/./app/javascript/controllers/master_entity_picker_controller.js","webpack://scout/./app/javascript/controllers/medicaid_state_select_controller.js","webpack://scout/./app/javascript/controllers/meeting_file_search_controller.js","webpack://scout/./app/javascript/controllers/mobile_menu_controller.js","webpack://scout/./app/javascript/controllers/modal_controller.js","webpack://scout/./app/javascript/controllers/modal_form_controller.js","webpack://scout/./app/javascript/controllers/multi_form_controller.js","webpack://scout/./app/javascript/controllers/navigation_controller.js","webpack://scout/./app/javascript/controllers/ndc_input_controller.js","webpack://scout/./app/javascript/controllers/notification_banner_controller.js","webpack://scout/./app/javascript/controllers/number_spinner_controller.js","webpack://scout/./app/javascript/controllers/open_all_links_controller.js","webpack://scout/./app/javascript/controllers/payer_profile_document_file_search_controller.js","webpack://scout/./app/javascript/controllers/persist_scroll_controller.js","webpack://scout/./app/javascript/controllers/polymorphic_select_controller.js","webpack://scout/./app/javascript/controllers/popper_controller.js","webpack://scout/./app/javascript/controllers/portal_analytics_widget_grid_controller.js","webpack://scout/./app/javascript/controllers/portal_analytics_widget_grid_preview_controller.js","webpack://scout/./app/javascript/controllers/portal_ga_controller.js","webpack://scout/./app/javascript/controllers/portal_group_controller.js","webpack://scout/./app/javascript/controllers/portal_name_controller.js","webpack://scout/./app/javascript/controllers/pricing_date_range_controller.js","webpack://scout/./app/javascript/controllers/public_search_box_controller.js","webpack://scout/./app/javascript/controllers/report_job_status_controller.js","webpack://scout/./app/javascript/controllers/research_select_controller.js","webpack://scout/./app/javascript/controllers/scroll_to_controller.js","webpack://scout/./app/javascript/controllers/search_box_controller.js","webpack://scout/./app/javascript/controllers/select_controller.js","webpack://scout/./app/javascript/controllers/show_all_controller.js","webpack://scout/./app/javascript/controllers/show_all_preservation_controller.js","webpack://scout/./app/javascript/controllers/show_when_overflow_controller.js","webpack://scout/./app/javascript/controllers/show_when_selected_controller.js","webpack://scout/./app/javascript/controllers/sidebar_controller.js","webpack://scout/./app/javascript/controllers/sortable_controller.js","webpack://scout/./app/javascript/controllers/sortable_form_controller.js","webpack://scout/./app/javascript/controllers/source_duplicate_controller.js","webpack://scout/./app/javascript/controllers/state_popper_controller.js","webpack://scout/./app/javascript/controllers/static_htmldiff_controller.js","webpack://scout/./app/javascript/controllers/sticky_mobile_table_controller.js","webpack://scout/./app/javascript/controllers/tab_controller.js","webpack://scout/./app/javascript/controllers/table_sort_controller.js","webpack://scout/./app/javascript/controllers/terms_of_service_controller.js","webpack://scout/./app/javascript/controllers/timezone_controller.js","webpack://scout/./app/javascript/controllers/tracker_export_controller.js","webpack://scout/./app/javascript/controllers/trix_alignment_controller.js","webpack://scout/./app/javascript/controllers/trix_annotations_controller.js","webpack://scout/./app/javascript/controllers/trix_controller.js","webpack://scout/./app/javascript/initializers/ie-detect.js","webpack://scout/./app/javascript/initializers/jquery.js","webpack://scout/./app/javascript/initializers/moment.js","webpack://scout/./app/javascript/initializers/sentry.js","webpack://scout/./app/javascript/initializers/stimulus.js","webpack://scout/./app/javascript/initializers/turbolinks.js","webpack://scout/./app/javascript/utilities/charts/chart_utils.js","webpack://scout/./app/javascript/utilities/charts/colors.js","webpack://scout/./app/javascript/utilities/charts/filter_payers.js","webpack://scout/./app/javascript/utilities/charts/payers_modal.js","webpack://scout/./app/javascript/utilities/charts/payers_v_lives_over_time_chart.js","webpack://scout/./app/javascript/utilities/charts/shrink_widget_to_fit.js","webpack://scout/./app/javascript/utilities/charts/state_abbreviation_map.js","webpack://scout/./app/javascript/utilities/charts/symbola_arrows.js","webpack://scout/./app/javascript/utilities/htmldiff_async_runner.js","webpack://scout/./app/javascript/utilities/screen_size_breakpoints.js","webpack://scout/./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["var map = {\n\t\"./action_menu_controller.js\": 67046,\n\t\"./ajax_errors_controller.js\": 53666,\n\t\"./async_form_controller.js\": 21751,\n\t\"./authorization_length_controller.js\": 32744,\n\t\"./autogrow_controller.js\": 69882,\n\t\"./breadcrumbs_as_toggles_controller.js\": 7309,\n\t\"./bulk_actions_controller.js\": 55150,\n\t\"./campaign_search_controller.js\": 59691,\n\t\"./chart_selection_form_controller.js\": 56622,\n\t\"./charts/access_status_bars_chart_controller.js\": 51429,\n\t\"./charts/access_status_detail_bars_chart_controller.js\": 66051,\n\t\"./charts/bars_chart_base_controller.js\": 81313,\n\t\"./charts/bars_chart_grid_base.js\": 77407,\n\t\"./charts/chart_controller_base.js\": 30538,\n\t\"./charts/colors_demo_controller.js\": 68202,\n\t\"./charts/confirmed_access_changes_chart_controller.js\": 80011,\n\t\"./charts/confirmed_access_donut_chart_controller.js\": 14288,\n\t\"./charts/confirmed_access_over_time_chart_controller.js\": 74330,\n\t\"./charts/confirmed_access_status_chart_controller.js\": 19828,\n\t\"./charts/confirmed_access_us_state_map_chart_controller.js\": 66747,\n\t\"./charts/confirmed_access_with_medicaid_outreach_us_state_map_chart_controller.js\": 43699,\n\t\"./charts/custom_field_bars_chart_controller.js\": 86396,\n\t\"./charts/custom_field_payers_or_lives_chart_controller.js\": 68930,\n\t\"./charts/custom_field_payers_v_lives_chart_controller.js\": 16567,\n\t\"./charts/custom_field_payers_v_lives_over_time_chart_controller.js\": 84424,\n\t\"./charts/custom_field_pie_chart_controller.js\": 50350,\n\t\"./charts/custom_field_single_value_us_state_map_chart_controller.js\": 21220,\n\t\"./charts/custom_field_table_chart_controller.js\": 95492,\n\t\"./charts/custom_field_us_state_map_chart_controller.js\": 23899,\n\t\"./charts/custom_field_value_bars_chart_controller.js\": 12242,\n\t\"./charts/many_drugs_many_payer_types_controller_base.js\": 18157,\n\t\"./charts/multi_drug_access_status_bars_chart_controller.js\": 52514,\n\t\"./charts/multi_drug_access_status_bars_minimal_chart_controller.js\": 5606,\n\t\"./charts/multi_drug_access_status_chart_controller.js\": 431,\n\t\"./charts/multi_drug_confirmed_access_over_time_chart_controller.js\": 67665,\n\t\"./charts/multi_drug_payers_v_lives_chart_controller.js\": 19987,\n\t\"./charts/one_drug_many_payer_types_chart_controller_base.js\": 2530,\n\t\"./charts/one_drug_one_payer_type_chart_controller_base.js\": 54898,\n\t\"./charts/one_payer_type_many_drugs_chart_controller_base.js\": 54830,\n\t\"./charts/pa_auth_length_bars_chart_controller.js\": 38327,\n\t\"./charts/pa_has_auth_length_donut_chart_controller.js\": 40780,\n\t\"./charts/pa_has_auth_length_table_chart_controller.js\": 52432,\n\t\"./charts/pa_required_donut_chart_controller.js\": 26763,\n\t\"./charts/pa_required_table_chart_controller.js\": 80339,\n\t\"./charts/pa_us_state_map_chart_controller.js\": 35404,\n\t\"./charts/payers_lives_donut_chart_base.js\": 70039,\n\t\"./charts/payers_v_lives_chart_controller.js\": 52288,\n\t\"./charts/payers_v_lives_chart_controller_base.js\": 28714,\n\t\"./charts/payers_v_lives_over_time_chart_controller.js\": 94547,\n\t\"./charts/published_policies_donut_chart_controller.js\": 41411,\n\t\"./charts/published_policies_table_chart_controller.js\": 20891,\n\t\"./charts/published_policies_us_state_map_chart_controller.js\": 42126,\n\t\"./charts/quantity_limits_donut_chart_controller.js\": 73298,\n\t\"./charts/quantity_limits_table_chart_controller.js\": 88610,\n\t\"./charts/quantity_limits_us_state_map_chart_controller.js\": 4785,\n\t\"./charts/step_therapy_donut_chart_controller.js\": 27328,\n\t\"./charts/step_therapy_table_chart_controller.js\": 54900,\n\t\"./charts/step_therapy_us_state_map_chart_controller.js\": 1131,\n\t\"./charts/us_state_chart_controller_base.js\": 62759,\n\t\"./checkbox_list_controller.js\": 296,\n\t\"./clipboard_controller.js\": 89520,\n\t\"./collapsible_controller.js\": 45966,\n\t\"./comparison_report_controller.js\": 96346,\n\t\"./conditional_input_controller.js\": 66143,\n\t\"./confirmable_controller.js\": 80526,\n\t\"./connected_multiselect_controller.js\": 75165,\n\t\"./contact_autocomplete_controller.js\": 84465,\n\t\"./content_loader_controller.js\": 73793,\n\t\"./copy_html_controller.js\": 15207,\n\t\"./copy_row_inputs_controller.js\": 56844,\n\t\"./coverage_counting_controller.js\": 59596,\n\t\"./coverage_details_carousel_controller.js\": 18318,\n\t\"./coverage_export_controller.js\": 85653,\n\t\"./custom_field_chart_numerator_value_picker_controller.js\": 54826,\n\t\"./custom_field_values_priority_controller.js\": 6498,\n\t\"./custom_field_values_with_abbreviations_controller.js\": 65916,\n\t\"./date_picker_controller.js\": 21295,\n\t\"./decimal_input_controller.js\": 53778,\n\t\"./download_as_image_controller.js\": 45279,\n\t\"./draft_lcd_controller.js\": 98507,\n\t\"./drug_price_input_controller.js\": 91947,\n\t\"./e_alert_builder_table_controller.js\": 17489,\n\t\"./e_alert_coverage_table_controller.js\": 46964,\n\t\"./e_alert_coverage_table_modal_controller.js\": 40438,\n\t\"./e_alert_email_download_controller.js\": 87068,\n\t\"./e_alert_section_diff_controller.js\": 92030,\n\t\"./editable_htmldiff_controller.js\": 44599,\n\t\"./events_controller.js\": 45737,\n\t\"./external_links_controller.js\": 48009,\n\t\"./file_input_controller.js\": 65137,\n\t\"./filter_list_controller.js\": 50059,\n\t\"./filterable_frame_controller.js\": 44822,\n\t\"./filters_controller.js\": 48879,\n\t\"./flash_controller.js\": 98460,\n\t\"./form_controller.js\": 70696,\n\t\"./form_with_error_prone_fields_controller.js\": 89861,\n\t\"./form_with_required_inputs_controller.js\": 55447,\n\t\"./grid_column_switcher_controller.js\": 15175,\n\t\"./hcpcs_input_controller.js\": 45400,\n\t\"./hide_controller.js\": 8678,\n\t\"./hide_many_controller.js\": 7484,\n\t\"./honorarium_address_controller.js\": 33619,\n\t\"./hovercard_controller.js\": 62414,\n\t\"./inline_multiselect_controller.js\": 29995,\n\t\"./input_exclusivity_controller.js\": 26362,\n\t\"./keep_on_screen_controller.js\": 92710,\n\t\"./lazy_load_panel_controller.js\": 58800,\n\t\"./legacy_mobile_menu_controller.js\": 22470,\n\t\"./link_select_controller.js\": 55501,\n\t\"./linked_dropdown_controller.js\": 94599,\n\t\"./location_hash_update_controller.js\": 43514,\n\t\"./locked_fieldset_controller.js\": 47839,\n\t\"./map_popup_controller.js\": 44399,\n\t\"./map_state_dropdown_controller.js\": 81234,\n\t\"./map_terms_controller.js\": 4947,\n\t\"./master_entity_picker_controller.js\": 47615,\n\t\"./medicaid_state_select_controller.js\": 67491,\n\t\"./meeting_file_search_controller.js\": 64781,\n\t\"./mobile_menu_controller.js\": 91030,\n\t\"./modal_controller.js\": 66897,\n\t\"./modal_form_controller.js\": 31946,\n\t\"./multi_form_controller.js\": 67870,\n\t\"./navigation_controller.js\": 31156,\n\t\"./ndc_input_controller.js\": 26950,\n\t\"./notification_banner_controller.js\": 29440,\n\t\"./number_spinner_controller.js\": 16463,\n\t\"./open_all_links_controller.js\": 84868,\n\t\"./payer_profile_document_file_search_controller.js\": 45285,\n\t\"./persist_scroll_controller.js\": 80554,\n\t\"./polymorphic_select_controller.js\": 67949,\n\t\"./popper_controller.js\": 25912,\n\t\"./portal_analytics_widget_grid_controller.js\": 11459,\n\t\"./portal_analytics_widget_grid_preview_controller.js\": 6194,\n\t\"./portal_ga_controller.js\": 96859,\n\t\"./portal_group_controller.js\": 29972,\n\t\"./portal_name_controller.js\": 92806,\n\t\"./pricing_date_range_controller.js\": 62125,\n\t\"./public_search_box_controller.js\": 4974,\n\t\"./report_job_status_controller.js\": 77221,\n\t\"./research_select_controller.js\": 72584,\n\t\"./scroll_to_controller.js\": 99515,\n\t\"./search_box_controller.js\": 7960,\n\t\"./select_controller.js\": 21582,\n\t\"./show_all_controller.js\": 81441,\n\t\"./show_all_preservation_controller.js\": 46374,\n\t\"./show_when_overflow_controller.js\": 8525,\n\t\"./show_when_selected_controller.js\": 56944,\n\t\"./sidebar_controller.js\": 12442,\n\t\"./sortable_controller.js\": 9050,\n\t\"./sortable_form_controller.js\": 49383,\n\t\"./source_duplicate_controller.js\": 68747,\n\t\"./state_popper_controller.js\": 88882,\n\t\"./static_htmldiff_controller.js\": 40621,\n\t\"./sticky_mobile_table_controller.js\": 93989,\n\t\"./tab_controller.js\": 26011,\n\t\"./table_sort_controller.js\": 61013,\n\t\"./terms_of_service_controller.js\": 28781,\n\t\"./timezone_controller.js\": 12559,\n\t\"./tracker_export_controller.js\": 62395,\n\t\"./trix_alignment_controller.js\": 86625,\n\t\"./trix_annotations_controller.js\": 98312,\n\t\"./trix_controller.js\": 54751,\n\t\"controllers/action_menu_controller.js\": 67046,\n\t\"controllers/ajax_errors_controller.js\": 53666,\n\t\"controllers/async_form_controller.js\": 21751,\n\t\"controllers/authorization_length_controller.js\": 32744,\n\t\"controllers/autogrow_controller.js\": 69882,\n\t\"controllers/breadcrumbs_as_toggles_controller.js\": 7309,\n\t\"controllers/bulk_actions_controller.js\": 55150,\n\t\"controllers/campaign_search_controller.js\": 59691,\n\t\"controllers/chart_selection_form_controller.js\": 56622,\n\t\"controllers/charts/access_status_bars_chart_controller.js\": 51429,\n\t\"controllers/charts/access_status_detail_bars_chart_controller.js\": 66051,\n\t\"controllers/charts/bars_chart_base_controller.js\": 81313,\n\t\"controllers/charts/bars_chart_grid_base.js\": 77407,\n\t\"controllers/charts/chart_controller_base.js\": 30538,\n\t\"controllers/charts/colors_demo_controller.js\": 68202,\n\t\"controllers/charts/confirmed_access_changes_chart_controller.js\": 80011,\n\t\"controllers/charts/confirmed_access_donut_chart_controller.js\": 14288,\n\t\"controllers/charts/confirmed_access_over_time_chart_controller.js\": 74330,\n\t\"controllers/charts/confirmed_access_status_chart_controller.js\": 19828,\n\t\"controllers/charts/confirmed_access_us_state_map_chart_controller.js\": 66747,\n\t\"controllers/charts/confirmed_access_with_medicaid_outreach_us_state_map_chart_controller.js\": 43699,\n\t\"controllers/charts/custom_field_bars_chart_controller.js\": 86396,\n\t\"controllers/charts/custom_field_payers_or_lives_chart_controller.js\": 68930,\n\t\"controllers/charts/custom_field_payers_v_lives_chart_controller.js\": 16567,\n\t\"controllers/charts/custom_field_payers_v_lives_over_time_chart_controller.js\": 84424,\n\t\"controllers/charts/custom_field_pie_chart_controller.js\": 50350,\n\t\"controllers/charts/custom_field_single_value_us_state_map_chart_controller.js\": 21220,\n\t\"controllers/charts/custom_field_table_chart_controller.js\": 95492,\n\t\"controllers/charts/custom_field_us_state_map_chart_controller.js\": 23899,\n\t\"controllers/charts/custom_field_value_bars_chart_controller.js\": 12242,\n\t\"controllers/charts/many_drugs_many_payer_types_controller_base.js\": 18157,\n\t\"controllers/charts/multi_drug_access_status_bars_chart_controller.js\": 52514,\n\t\"controllers/charts/multi_drug_access_status_bars_minimal_chart_controller.js\": 5606,\n\t\"controllers/charts/multi_drug_access_status_chart_controller.js\": 431,\n\t\"controllers/charts/multi_drug_confirmed_access_over_time_chart_controller.js\": 67665,\n\t\"controllers/charts/multi_drug_payers_v_lives_chart_controller.js\": 19987,\n\t\"controllers/charts/one_drug_many_payer_types_chart_controller_base.js\": 2530,\n\t\"controllers/charts/one_drug_one_payer_type_chart_controller_base.js\": 54898,\n\t\"controllers/charts/one_payer_type_many_drugs_chart_controller_base.js\": 54830,\n\t\"controllers/charts/pa_auth_length_bars_chart_controller.js\": 38327,\n\t\"controllers/charts/pa_has_auth_length_donut_chart_controller.js\": 40780,\n\t\"controllers/charts/pa_has_auth_length_table_chart_controller.js\": 52432,\n\t\"controllers/charts/pa_required_donut_chart_controller.js\": 26763,\n\t\"controllers/charts/pa_required_table_chart_controller.js\": 80339,\n\t\"controllers/charts/pa_us_state_map_chart_controller.js\": 35404,\n\t\"controllers/charts/payers_lives_donut_chart_base.js\": 70039,\n\t\"controllers/charts/payers_v_lives_chart_controller.js\": 52288,\n\t\"controllers/charts/payers_v_lives_chart_controller_base.js\": 28714,\n\t\"controllers/charts/payers_v_lives_over_time_chart_controller.js\": 94547,\n\t\"controllers/charts/published_policies_donut_chart_controller.js\": 41411,\n\t\"controllers/charts/published_policies_table_chart_controller.js\": 20891,\n\t\"controllers/charts/published_policies_us_state_map_chart_controller.js\": 42126,\n\t\"controllers/charts/quantity_limits_donut_chart_controller.js\": 73298,\n\t\"controllers/charts/quantity_limits_table_chart_controller.js\": 88610,\n\t\"controllers/charts/quantity_limits_us_state_map_chart_controller.js\": 4785,\n\t\"controllers/charts/step_therapy_donut_chart_controller.js\": 27328,\n\t\"controllers/charts/step_therapy_table_chart_controller.js\": 54900,\n\t\"controllers/charts/step_therapy_us_state_map_chart_controller.js\": 1131,\n\t\"controllers/charts/us_state_chart_controller_base.js\": 62759,\n\t\"controllers/checkbox_list_controller.js\": 296,\n\t\"controllers/clipboard_controller.js\": 89520,\n\t\"controllers/collapsible_controller.js\": 45966,\n\t\"controllers/comparison_report_controller.js\": 96346,\n\t\"controllers/conditional_input_controller.js\": 66143,\n\t\"controllers/confirmable_controller.js\": 80526,\n\t\"controllers/connected_multiselect_controller.js\": 75165,\n\t\"controllers/contact_autocomplete_controller.js\": 84465,\n\t\"controllers/content_loader_controller.js\": 73793,\n\t\"controllers/copy_html_controller.js\": 15207,\n\t\"controllers/copy_row_inputs_controller.js\": 56844,\n\t\"controllers/coverage_counting_controller.js\": 59596,\n\t\"controllers/coverage_details_carousel_controller.js\": 18318,\n\t\"controllers/coverage_export_controller.js\": 85653,\n\t\"controllers/custom_field_chart_numerator_value_picker_controller.js\": 54826,\n\t\"controllers/custom_field_values_priority_controller.js\": 6498,\n\t\"controllers/custom_field_values_with_abbreviations_controller.js\": 65916,\n\t\"controllers/date_picker_controller.js\": 21295,\n\t\"controllers/decimal_input_controller.js\": 53778,\n\t\"controllers/download_as_image_controller.js\": 45279,\n\t\"controllers/draft_lcd_controller.js\": 98507,\n\t\"controllers/drug_price_input_controller.js\": 91947,\n\t\"controllers/e_alert_builder_table_controller.js\": 17489,\n\t\"controllers/e_alert_coverage_table_controller.js\": 46964,\n\t\"controllers/e_alert_coverage_table_modal_controller.js\": 40438,\n\t\"controllers/e_alert_email_download_controller.js\": 87068,\n\t\"controllers/e_alert_section_diff_controller.js\": 92030,\n\t\"controllers/editable_htmldiff_controller.js\": 44599,\n\t\"controllers/events_controller.js\": 45737,\n\t\"controllers/external_links_controller.js\": 48009,\n\t\"controllers/file_input_controller.js\": 65137,\n\t\"controllers/filter_list_controller.js\": 50059,\n\t\"controllers/filterable_frame_controller.js\": 44822,\n\t\"controllers/filters_controller.js\": 48879,\n\t\"controllers/flash_controller.js\": 98460,\n\t\"controllers/form_controller.js\": 70696,\n\t\"controllers/form_with_error_prone_fields_controller.js\": 89861,\n\t\"controllers/form_with_required_inputs_controller.js\": 55447,\n\t\"controllers/grid_column_switcher_controller.js\": 15175,\n\t\"controllers/hcpcs_input_controller.js\": 45400,\n\t\"controllers/hide_controller.js\": 8678,\n\t\"controllers/hide_many_controller.js\": 7484,\n\t\"controllers/honorarium_address_controller.js\": 33619,\n\t\"controllers/hovercard_controller.js\": 62414,\n\t\"controllers/inline_multiselect_controller.js\": 29995,\n\t\"controllers/input_exclusivity_controller.js\": 26362,\n\t\"controllers/keep_on_screen_controller.js\": 92710,\n\t\"controllers/lazy_load_panel_controller.js\": 58800,\n\t\"controllers/legacy_mobile_menu_controller.js\": 22470,\n\t\"controllers/link_select_controller.js\": 55501,\n\t\"controllers/linked_dropdown_controller.js\": 94599,\n\t\"controllers/location_hash_update_controller.js\": 43514,\n\t\"controllers/locked_fieldset_controller.js\": 47839,\n\t\"controllers/map_popup_controller.js\": 44399,\n\t\"controllers/map_state_dropdown_controller.js\": 81234,\n\t\"controllers/map_terms_controller.js\": 4947,\n\t\"controllers/master_entity_picker_controller.js\": 47615,\n\t\"controllers/medicaid_state_select_controller.js\": 67491,\n\t\"controllers/meeting_file_search_controller.js\": 64781,\n\t\"controllers/mobile_menu_controller.js\": 91030,\n\t\"controllers/modal_controller.js\": 66897,\n\t\"controllers/modal_form_controller.js\": 31946,\n\t\"controllers/multi_form_controller.js\": 67870,\n\t\"controllers/navigation_controller.js\": 31156,\n\t\"controllers/ndc_input_controller.js\": 26950,\n\t\"controllers/notification_banner_controller.js\": 29440,\n\t\"controllers/number_spinner_controller.js\": 16463,\n\t\"controllers/open_all_links_controller.js\": 84868,\n\t\"controllers/payer_profile_document_file_search_controller.js\": 45285,\n\t\"controllers/persist_scroll_controller.js\": 80554,\n\t\"controllers/polymorphic_select_controller.js\": 67949,\n\t\"controllers/popper_controller.js\": 25912,\n\t\"controllers/portal_analytics_widget_grid_controller.js\": 11459,\n\t\"controllers/portal_analytics_widget_grid_preview_controller.js\": 6194,\n\t\"controllers/portal_ga_controller.js\": 96859,\n\t\"controllers/portal_group_controller.js\": 29972,\n\t\"controllers/portal_name_controller.js\": 92806,\n\t\"controllers/pricing_date_range_controller.js\": 62125,\n\t\"controllers/public_search_box_controller.js\": 4974,\n\t\"controllers/report_job_status_controller.js\": 77221,\n\t\"controllers/research_select_controller.js\": 72584,\n\t\"controllers/scroll_to_controller.js\": 99515,\n\t\"controllers/search_box_controller.js\": 7960,\n\t\"controllers/select_controller.js\": 21582,\n\t\"controllers/show_all_controller.js\": 81441,\n\t\"controllers/show_all_preservation_controller.js\": 46374,\n\t\"controllers/show_when_overflow_controller.js\": 8525,\n\t\"controllers/show_when_selected_controller.js\": 56944,\n\t\"controllers/sidebar_controller.js\": 12442,\n\t\"controllers/sortable_controller.js\": 9050,\n\t\"controllers/sortable_form_controller.js\": 49383,\n\t\"controllers/source_duplicate_controller.js\": 68747,\n\t\"controllers/state_popper_controller.js\": 88882,\n\t\"controllers/static_htmldiff_controller.js\": 40621,\n\t\"controllers/sticky_mobile_table_controller.js\": 93989,\n\t\"controllers/tab_controller.js\": 26011,\n\t\"controllers/table_sort_controller.js\": 61013,\n\t\"controllers/terms_of_service_controller.js\": 28781,\n\t\"controllers/timezone_controller.js\": 12559,\n\t\"controllers/tracker_export_controller.js\": 62395,\n\t\"controllers/trix_alignment_controller.js\": 86625,\n\t\"controllers/trix_annotations_controller.js\": 98312,\n\t\"controllers/trix_controller.js\": 54751\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 97461;","import { Controller } from \"stimulus\";\nimport { createPopper } from \"@popperjs/core\";\n\nexport default class extends Controller {\n static targets = [\"menu\", \"icon\"];\n\n toggle(e) {\n const parentCell = e\n .composedPath()\n .find(ancestor => ancestor.classList.contains(\"action-button\"));\n\n const toggle = parentCell.querySelector(\"[data-action-menu-target='icon']\");\n const menu = parentCell.querySelector(\"[data-action-menu-target='menu']\");\n const shouldOpen = menu.classList.contains(\"hidden\");\n\n this.closeAllMenus();\n\n if (shouldOpen) {\n this.popper = createPopper(toggle, menu);\n\n toggle.classList.add(\"active\");\n menu.classList.remove(\"hidden\");\n }\n }\n\n teardown() {\n this.closeAllMenus();\n }\n\n closeAllMenus() {\n if (this.popper) {\n this.popper.destroy();\n }\n\n this.menuTargets.forEach(menuTarget => menuTarget.classList.add(\"hidden\"));\n this.iconTargets.forEach(iconTarget => iconTarget.classList.remove(\"active\"));\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n debug() {\n window.location = \"/__better_errors\";\n }\n\n redirect() {\n window.location = \"/500\";\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"modal\", \"form\"];\n\n show() {\n this.fetchForm().then(this.waitsForDOMToRepaintTheScreenAfterInsertingFormThenShowsModal);\n }\n\n waitsForDOMToRepaintTheScreenAfterInsertingFormThenShowsModal = () =>\n setTimeout(() => this.modalTarget.classList.remove(\"hidden\"));\n\n hide() {\n this.modalTarget.classList.add(\"hidden\");\n }\n\n fetchForm() {\n return fetch(this.data.get(\"url\")).then(this.afterFormFetch);\n }\n\n afterFormFetch = response => {\n if (response.headers.has(\"Scout-Redirect\")) {\n Turbolinks.clearCache();\n Turbolinks.visit(response.headers.get(\"Scout-Redirect\"), {\n action: \"replace\",\n });\n return;\n }\n\n response.text().then(html => {\n this.formTarget.innerHTML = html;\n\n $(this.element)\n .find(\"form\")\n .each((_i, form) => {\n form.addEventListener(\"submit\", e => {\n e.preventDefault();\n\n fetch(form.action, {\n method: form.method,\n body: new FormData(form),\n }).then(this.afterFormFetch);\n\n return false;\n });\n });\n });\n };\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"initialAuth\", \"initialOtherText\", \"reAuth\", \"reauthOtherText\"];\n\n connect() {\n const initialAuthSelectedValue =\n this.initialAuthTarget.options[this.initialAuthTarget.selectedIndex].text;\n const reauthSelectedValue = this.reAuthTarget.options[this.reAuthTarget.selectedIndex].text;\n\n if (initialAuthSelectedValue === \"Other\") {\n this.initialOtherTextTarget.classList.remove(\"hidden\");\n }\n if (reauthSelectedValue === \"Other\") {\n this.reauthOtherTextTarget.classList.remove(\"hidden\");\n }\n }\n\n InitialAuthLengthSelected() {\n const initialAuthSelectedValue =\n this.initialAuthTarget.options[this.initialAuthTarget.selectedIndex].text;\n\n if (initialAuthSelectedValue === \"Other\") {\n this.initialOtherTextTarget.classList.remove(\"hidden\");\n } else {\n this.initialOtherTextTarget.classList.add(\"hidden\");\n }\n }\n\n ReauthLengthSelected() {\n const reauthSelectedValue = this.reAuthTarget.options[this.reAuthTarget.selectedIndex].text;\n\n if (reauthSelectedValue === \"Other\") {\n this.reauthOtherTextTarget.classList.remove(\"hidden\");\n } else {\n this.reauthOtherTextTarget.classList.add(\"hidden\");\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n this.grow();\n }\n\n grow() {\n this.element.style.height = \"5px\";\n this.element.style.height = `${this.element.scrollHeight + 1}px`;\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n static targets = [\"toggle\", \"select\", \"link\"];\n\n connect() {\n const params = this.currentHashParams();\n\n this.toggleTargets.forEach(toggle => {\n const checkedValues = params[toggle.name];\n\n if (checkedValues) {\n toggle.checked = params[toggle.name].includes(toggle.value);\n }\n });\n\n this.selectTargets.forEach(select => {\n const checkedValue = params[select.name];\n\n if (checkedValue) {\n select.value = checkedValue;\n }\n });\n\n this.updateHash(); // Discards junk/irrelevant entries\n }\n\n reset(event) {\n const exclusions = event.target.dataset.breadcrumbsAsTogglesResetOnChange?.split(\" \");\n const newHash = this.toggleTargets\n .filter(toggle => toggle.checked)\n .concat(this.selectTargets)\n .filter(t => !exclusions.includes(t.name))\n .map(toggle => `${toggle.name}=${toggle.value}`)\n .join(\"&\");\n\n window.location.hash = newHash;\n window.location.reload();\n }\n\n updateHash() {\n const newHash = this.toggleTargets\n .filter(toggle => toggle.checked)\n .concat(this.selectTargets)\n .map(toggle => `${toggle.name}=${toggle.value}`)\n .join(\"&\");\n\n window.location.hash = newHash;\n\n this.linkTargets.forEach(target => {\n const url = new URL(target.href);\n\n url.hash = newHash;\n target.href = url;\n });\n }\n\n currentHashParams() {\n const paramPairs = window.location.hash\n .slice(1)\n .split(\"&\")\n .filter(assignment => !!assignment)\n .map(assignment => assignment.split(\"=\"))\n .filter(([key, value]) => {\n const toggleExists = this.toggleTargets.some(t => t.name === key && t.value === value);\n const selectExists = _.map(\n this.selectTargets.find(s => s.name === key)?.options,\n o => o.value === value,\n );\n\n return toggleExists || selectExists;\n });\n\n const params = {};\n\n paramPairs.forEach(([key, value]) => {\n if (!params[key]) params[key] = [];\n params[key].push(value);\n });\n\n return params;\n }\n}\n","import { Controller } from \"stimulus\";\nimport Rails from \"@rails/ujs\";\n\nexport default class extends Controller {\n static targets = [\n \"actions\",\n \"header\",\n \"selectAll\",\n \"counter\",\n \"spinner\",\n \"item\",\n \"dropdown\",\n \"progress\",\n ];\n\n connect() {\n this.hideActions();\n this.itemClicked();\n }\n\n itemClicked() {\n const count = this.selectedItems.length;\n\n if (count > 0) {\n this.showActions(count);\n } else {\n this.hideActions();\n }\n }\n\n actionClicked(event) {\n const action = event.currentTarget;\n\n action.disabled = true;\n this.showSpinner();\n\n if (\"url\" in action.dataset) {\n fetch(action.dataset.url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": Rails.csrfToken(),\n },\n body: JSON.stringify({\n bulk_ids: this.selectedItems,\n }),\n }).then(resp => {\n this.hideSpinner();\n\n if (resp.status >= 400) {\n alert(\"Something went wrong performing this action.\"); // eslint-disable-line\n action.disabled = false;\n }\n\n Turbolinks.visit(window.location);\n });\n } else if (\"jobUrl\" in action.dataset) {\n this.showProgress();\n fetch(action.dataset.jobUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n \"X-CSRF-Token\": Rails.csrfToken(),\n },\n body: JSON.stringify({\n bulk_ids: this.selectedItems,\n }),\n })\n .then(blob => blob.json())\n .then(response => {\n this.intervalId = setInterval(() => {\n fetch(response.status_url, {\n headers: {\n Accept: \"application/json\",\n },\n })\n .then(blob => blob.json())\n .then(resp => {\n if (resp.progress > 0) {\n this.progressTarget.innerText = `${resp.progress}%`;\n }\n\n if (resp.error) {\n alert(\"Something went wrong performing this action.\"); // eslint-disable-line\n this.hideSpinner();\n this.hideProgress();\n this.clearInterval(this.intervalId);\n action.disabled = false;\n } else if (resp.progress === 100) {\n this.hideSpinner();\n this.hideProgress();\n this.clearInterval(this.intervalId);\n Turbolinks.visit(window.location);\n }\n });\n }, 1000);\n });\n }\n }\n\n selectAllClicked() {\n if (this.selectAllTarget.indeterminate) {\n this.selectAllTarget.checked = true;\n }\n\n this.itemTargets.forEach(item => {\n item.checked = this.selectAllTarget.checked;\n });\n\n this.itemClicked();\n }\n\n showActions(count) {\n this.actionsTarget.classList.remove(\"hidden\");\n this.counterTarget.innerHTML = `${count} selected...`;\n this.headerTarget.classList.add(\"hidden\");\n this.syncSelectAllState();\n }\n\n syncSelectAllState() {\n if (this.selectedItems.length === this.totalItems) {\n this.selectAllTarget.indeterminate = false;\n this.selectAllTarget.checked = true;\n } else if (this.selectedItems.length === 0) {\n this.selectAllTarget.indeterminate = false;\n this.selectAllTarget.checked = false;\n } else {\n this.selectAllTarget.indeterminate = true;\n }\n }\n\n hideActions() {\n this.actionsTarget.classList.add(\"hidden\");\n this.headerTarget.classList.remove(\"hidden\");\n this.dropdownTargets.forEach(d => d.classList.add(\"hidden\"));\n }\n\n showSpinner() {\n this.spinnerTarget.classList.remove(\"hidden\");\n }\n\n showProgress() {\n this.progressTarget.classList.remove(\"hidden\");\n }\n\n hideSpinner() {\n this.spinnerTarget.classList.add(\"hidden\");\n }\n\n hideProgress() {\n this.progressTarget.classList.add(\"hidden\");\n }\n\n get selectedItems() {\n return this.itemTargets.filter(item => item.checked).map(item => item.value);\n }\n\n get totalItems() {\n return this.itemTargets.length;\n }\n\n clearInterval = () => clearInterval(this.intervalId);\n}\n","import { Controller } from \"stimulus\";\n\nimport { configure, hits, pagination, panel, searchBox } from \"instantsearch.js/es/widgets\";\n\nconst algoliasearch = require(\"algoliasearch\");\nconst instantsearch = require(\"instantsearch.js\").default;\n\nexport default class extends Controller {\n static targets = [\"pagination\", \"results\", \"resultTemplate\", \"searchBar\", \"searchBox\"];\n\n initialize() {\n this.search = instantsearch({\n indexName: this.data.get(\"algolia-index\"),\n searchClient: algoliasearch(this.data.get(\"algolia-id\"), this.data.get(\"algolia-key\")),\n searchFunction: helper => {\n if (helper.state.query === \"\") {\n this.resultsTarget.innerHTML = \"\";\n this.paginationTarget.innerHTML = \"\";\n return;\n }\n\n helper.search();\n },\n });\n }\n\n connect() {\n const customPagination = panel({\n hidden: ({ results }) => results.nbPages < 2,\n })(pagination);\n\n this.search.addWidgets([\n configure({\n hitsPerPage: this.data.get(\"page-size\") || 4,\n distinct: true,\n facetFilters: this.data.get(\"filter\"),\n }),\n searchBox({\n container: this.searchBoxTarget,\n placeholder: this.data.get(\"placeholder\"),\n showSubmit: false,\n showLoadingIndicator: false,\n cssClasses: {\n form: \"campaign-search-form\",\n input: \"campaign-search-input\",\n reset: \"campaign-search-reset\",\n },\n templates: {\n reset: \"×\",\n },\n }),\n customPagination({\n container: this.paginationTarget,\n cssClasses: {\n root: \"algolia-pagination\",\n list: \"algolia-pagination-list\",\n item: \"algolia-pagination-item\",\n selectedItem: \"algolia-pagination-item-selected\",\n disabledItem: \"hidden\",\n },\n }),\n hits({\n container: this.resultsTarget,\n cssClasses: {\n root: \"campaign-search-results\",\n emptyRoot: \"campaign-search-results-empty\",\n item: \"campaign-search-result\",\n },\n templates: {\n item: this.resultTemplateTarget.innerHTML,\n },\n }),\n ]);\n\n this.search.start();\n }\n\n show() {\n this.searchBarTarget.classList.remove(\"hidden\");\n this.searchBoxTarget.querySelector(\"input\").focus();\n }\n\n hide() {\n this.searchBarTarget.classList.add(\"hidden\");\n }\n\n jump(event) {\n const { gid } = event.currentTarget.dataset;\n\n if (gid) {\n let section = document.querySelector(`[data-campaign-target='${gid}']`);\n\n if (!section) {\n // Fallback to participants to handle case where file is on a different tab\n section = document.querySelector(\"#participants\");\n }\n\n this.hide();\n\n section.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n section.classList.remove(\"animate-slow\");\n section.classList.add(\"pulse\");\n\n window.setTimeout(() => {\n section.classList.add(\"animate-slow\");\n section.classList.remove(\"pulse\");\n }, 1000);\n }\n }\n\n disconnect() {\n this.hide();\n this.search.dispose();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"chartType\", \"payerTypeInput\"];\n\n static values = { limitedTypesByChart: Object };\n\n connect() {\n this.onChartTypeChanged();\n }\n\n onChartTypeChanged() {\n const limitedPayerTypes = this.limitedTypesByChartValue[this.currentChartType];\n\n this.payerTypeInputTargets.forEach(t => {\n if (limitedPayerTypes && !limitedPayerTypes.includes(t.dataset.payerType)) {\n t.disabled = true;\n t.checked = false;\n t.labels.forEach(l => l.classList.add(\"opacity-50\"));\n } else {\n t.disabled = false;\n t.labels.forEach(l => l.classList.remove(\"opacity-50\"));\n }\n });\n }\n\n get currentChartType() {\n return this.chartTypeTargets.find(t => t.checked)?.value;\n }\n}\n","import _ from \"lodash\";\nimport BarsChartControllerBase from \"./bars_chart_base_controller\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\nimport {\n accumulateValuesFn,\n coverageMetricNoun,\n toOneDecimal,\n payersNoun,\n} from \"../../utilities/charts/chart_utils\";\n\nexport default class extends BarsChartControllerBase {\n titleText() {\n return `${coverageMetricNoun(\n this.coverageMetric,\n this.payerTypesShown,\n )} with Confirmed Access for ${this.drug}`;\n }\n\n descriptionText(yes, all) {\n const nouns =\n this.coverageMetric === \"lives\"\n ? \"million lives\"\n : payersNoun(this.payerTypesShown).toLowerCase();\n\n return `\n There are\n ${toOneDecimal(yes)} ${nouns}\n that have confirmed access out of the\n ${toOneDecimal(all)} ${nouns}\n `;\n }\n\n currentAndPriorDataForTarget(target) {\n const { payerType } = target.dataset;\n const [prior, current] = this.params.data[payerType]?.[this.drug] || [[], []];\n\n const priorValues = prior.map(accumulateValuesFn(payerType, this.coverageMetric));\n const currentValues = current.map(accumulateValuesFn(payerType, this.coverageMetric));\n\n return {\n current: {\n yes: currentValues[0] || 0,\n all: _.sum(currentValues),\n },\n prior: {\n yes: priorValues[0] || 0,\n all: _.sum(priorValues),\n },\n };\n }\n\n onBarClick(event) {\n let payerType = $(event.target).data(\"payer-type\");\n\n if (payerType === \"medicare_advantage_payers\") {\n payerType = \"medicare_advantage\";\n }\n\n const title = `${payersNoun(payerType)} with Confirmed Access for ${this.drug}`;\n\n const payerIds = {};\n const extraParams = {};\n\n const payerIdsFor = index => this.params.data[payerType][this.drug][index][0].map(d => d.payer);\n\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(1);\n const priorPayers = payerIdsFor(0);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage = {\n [payerType]: changedPayers.map(payer => ({ payer, drug: this.drug })),\n };\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n extraParams.changeDisplayMode = \"access_status\";\n } else {\n payerIds[payerType] = payerIdsFor(1);\n }\n\n showPayersModal(this.drug, title, payerIds, extraParams);\n }\n\n onBarRemainderClick(event) {\n let payerType = $(event.target).data(\"payer-type\");\n\n if (payerType === \"medicare_advantage_payers\") {\n payerType = \"medicare_advantage\";\n }\n\n const title = `${payersNoun(payerType)} without Confirmed Access for ${this.drug}`;\n\n const payerIds = {};\n const extraParams = {};\n\n const payerIdsFor = index =>\n _.flatMap(this.params.data[payerType][this.drug][index].slice(1), ds => ds.map(d => d.payer));\n\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(1);\n const priorPayers = payerIdsFor(0);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage = {\n [payerType]: changedPayers.map(payer => ({ payer, drug: this.drug })),\n };\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n } else {\n payerIds[payerType] = payerIdsFor(1);\n }\n\n showPayersModal(this.drug, title, payerIds, extraParams);\n }\n}\n","import _ from \"lodash\";\nimport OnePayerTypeManyDrugsChartControllerBase from \"./one_payer_type_many_drugs_chart_controller_base\";\nimport BarsChartGridBase from \"./bars_chart_grid_base\";\nimport {\n orderedAccessStatusNames,\n coverageMetricNoun,\n payersNoun,\n percentString,\n toOneDecimal,\n formatPayersLivesTitle,\n accumulateValuesFn,\n} from \"../../utilities/charts/chart_utils\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\n\nexport default class extends OnePayerTypeManyDrugsChartControllerBase {\n static targets = [\n \"title\",\n \"mainPercent\",\n \"mainDescription\",\n \"gridTitle\",\n \"gridFraction\",\n \"gridPercent\",\n \"gridChangeIndicator\",\n ];\n\n connect() {\n this.innerClass = new BarsChartGridBase(this);\n super.connect();\n }\n\n toggleCoverageMetricInternal() {\n this.renderChart();\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugsInternal() {\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n this.titleTarget.innerText = `${window.PayerTypeLabels[this.payerType]} ${coverageMetricNoun(\n this.coverageMetric,\n this.payerType,\n )}`;\n\n const { yes, all } = this.currentAndPriorDataForAccessStatus(\"confirmed_access\").current;\n\n this.mainPercentTarget.innerText = percentString(yes, all);\n\n this.mainDescriptionTarget.innerText = `${toOneDecimal(\n yes,\n ).toLocaleString()} out of ${toOneDecimal(all).toLocaleString()} ${formatPayersLivesTitle(\n this.coverageMetric,\n this.payerType,\n )} with Confirmed Access`;\n\n this.innerClass.renderGrid();\n }\n\n currentAndPriorDataForAccessStatus(accessStatus) {\n const orderedAccessStatuses = [\n \"confirmed_access\",\n \"case_by_case\",\n \"not_covered\",\n \"access_undetermined\",\n ];\n const datasetIndex = orderedAccessStatuses.indexOf(accessStatus);\n\n const output = {\n prior: { yes: 0, all: 0 },\n current: { yes: 0, all: 0 },\n };\n\n this.drugs.forEach(drug => {\n const [prior, current] = this.params.data[this.payerType][drug];\n const priorValues = prior.map(accumulateValuesFn(this.payerType, this.coverageMetric));\n const currentValues = current.map(accumulateValuesFn(this.payerType, this.coverageMetric));\n\n output.prior.yes += priorValues[datasetIndex];\n output.current.yes += currentValues[datasetIndex];\n output.prior.all += _.sum(priorValues);\n output.current.all += _.sum(currentValues);\n });\n\n return output;\n }\n\n currentAndPriorDataForTarget(target) {\n return this.currentAndPriorDataForAccessStatus(target.dataset.accessStatus);\n }\n\n targetIsDisabled() {\n return false;\n }\n\n onBarClick(event) {\n const accessStatus = $(event.target)\n .closest(\"[data-access-status-name]\")\n .data(\"access-status-name\");\n\n const accessStatusIndex = orderedAccessStatusNames.indexOf(accessStatus);\n\n const payerType =\n this.payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : this.payerType;\n\n const nouns = payersNoun(this.payerType);\n\n const title = `${window.PayerTypeLabels[this.payerType]} ${nouns} with ${accessStatus}`;\n\n const payerIds = {};\n const extraParams = {};\n\n if (this.showChangesFromPrevious) {\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n extraParams.changedCoverage = { [payerType]: [] };\n extraParams.changeDisplayMode = \"access_status\";\n }\n\n this.drugs.forEach(drug => {\n const currentPayerIds = this.params.data[payerType][drug][0][accessStatusIndex].map(\n d => d.payer,\n );\n\n payerIds[payerType] = _.union(payerIds[payerType], currentPayerIds);\n\n if (this.showChangesFromPrevious) {\n const priorPayerIds = this.params.data[payerType][drug][1][accessStatusIndex].map(\n d => d.payer,\n );\n const changedPayers = _.xor(currentPayerIds, priorPayerIds);\n\n payerIds[payerType] = _.union(payerIds[payerType], priorPayerIds);\n extraParams.changedCoverage[payerType].push(\n ...changedPayers.map(payer => ({ payer, drug })),\n );\n }\n });\n\n showPayersModal(this.drugs, title, payerIds, extraParams);\n }\n}\n","import OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport BarsChartGridBase from \"./bars_chart_grid_base\";\nimport shrinkWidgetToFit from \"../../utilities/charts/shrink_widget_to_fit\";\nimport { percent, percentString, toOneDecimal } from \"../../utilities/charts/chart_utils\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n static targets = [\n \"title\",\n \"mainPercent\",\n \"mainDescription\",\n \"gridTitle\",\n \"gridFraction\",\n \"gridPercent\",\n \"gridChangeIndicator\",\n \"changesContainer\",\n \"changesText\",\n ];\n\n connect() {\n this.innerClass = new BarsChartGridBase(this);\n super.connect();\n }\n\n toggleCoverageMetricInternal() {\n this.renderChart();\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugInternal() {\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n this.setMainStats();\n this.setMainDifference();\n this.innerClass.renderGrid();\n this.updatePayerTypeVisibility();\n shrinkWidgetToFit(this.element, this.element.children[0]);\n }\n\n togglePayerTypeFromChart(event) {\n const payerType = $(event.target).data(\"payer-type\");\n const button = this.payerTypeInputTargets.find(target => target.value === payerType);\n\n $(button).trigger(\"click\");\n }\n\n setMainStats() {\n const { yes, all } = this.accumulateDataForShownPayers().current;\n\n $(this.titleTarget).text(this.titleText());\n $(this.mainPercentTarget).text(percentString(yes, all));\n $(this.mainDescriptionTarget).text(this.descriptionText(yes, all));\n }\n\n setMainDifference() {\n if (this.showChangesFromPrevious) {\n const currentData = this.accumulateDataForShownPayers().current;\n const previousData = this.accumulateDataForShownPayers().prior;\n\n const currentPercent = percent(currentData.yes, currentData.all);\n const previousPercent = percent(previousData.yes, previousData.all);\n const changeAsShown = toOneDecimal(\n parseFloat(toOneDecimal(currentPercent)) - parseFloat(toOneDecimal(previousPercent)),\n );\n\n if (changeAsShown === \"0\") {\n this.changesTextTarget.innerText = \"No Change\";\n this.changesContainerTarget.classList.add(\"text-yellow\");\n this.changesContainerTarget.classList.remove(\"text-red\");\n this.changesContainerTarget.classList.remove(\"text-green-500\");\n } else if (currentPercent > previousPercent) {\n this.changesTextTarget.innerText = `+${changeAsShown}`;\n this.changesContainerTarget.classList.add(\"text-green-500\");\n this.changesContainerTarget.classList.remove(\"text-yellow\");\n this.changesContainerTarget.classList.remove(\"text-red\");\n } else {\n this.changesTextTarget.innerText = changeAsShown;\n this.changesContainerTarget.classList.add(\"text-red\");\n this.changesContainerTarget.classList.remove(\"text-yellow\");\n this.changesContainerTarget.classList.remove(\"text-green-500\");\n }\n\n this.changesContainerTarget.title = `${toOneDecimal(previousPercent)}% in ${\n this.params.previous_snapshot_set.name\n }`;\n }\n }\n\n accumulateDataForShownPayers() {\n const output = {\n prior: { yes: 0, all: 0 },\n current: { yes: 0, all: 0 },\n };\n\n this.gridTitleTargets\n .filter(t => !t.classList.contains(\"hidden\"))\n .forEach(target => {\n const { current, prior } = this.currentAndPriorDataForTarget(target);\n\n output.prior.yes += prior.yes;\n output.current.yes += current.yes;\n output.prior.all += prior.all;\n output.current.all += current.all;\n });\n\n return output;\n }\n\n targetIsDisabled(target) {\n return !this.payerTypesShown.includes(target.dataset.payerType);\n }\n\n updatePayerTypeVisibility() {\n this.gridTitleTargets\n .concat(this.gridFractionTargets)\n .concat(this.gridChangeIndicatorTargets)\n .concat(this.gridPercentTargets)\n .forEach(target => {\n $(target).toggleClass(\n \"hidden\",\n !this.payerTypesIncluded.includes(target.dataset.payerType),\n );\n });\n }\n\n formatNumber(count) {\n const suffix = this.coverageMetric === \"lives\" ? \"m\" : \"\";\n\n return `${toOneDecimal(count)}${suffix}`;\n }\n\n titleText() {\n // Override\n }\n\n descriptionText(/* yes, all */) {\n // Override\n }\n\n currentAndPriorDataForTarget() {\n // Override. Return { current: { yes: ..., all: ... }, prior: ... }\n }\n}\n","import { percentString, toOneDecimal, withinOneDecimal } from \"../../utilities/charts/chart_utils\";\nimport colors from \"../../utilities/charts/colors\";\n\nexport default class {\n constructor(outerClass) {\n this.outerClass = outerClass;\n }\n\n renderGrid() {\n const barColor = this.colorsByCoverageMetric[this.outerClass.coverageMetric];\n\n this.outerClass.gridTitleTargets.forEach(target => {\n this.strikethroughIfDisabled(target);\n });\n\n this.outerClass.gridFractionTargets.forEach(target => {\n const { yes, all } = this.outerClass.currentAndPriorDataForTarget(target).current;\n const suffix = this.outerClass.coverageMetric === \"lives\" ? \"m\" : \"\";\n const format = x => `${toOneDecimal(x)}${suffix}`;\n\n target.innerText = `${format(yes)}/${format(all)}`;\n\n this.strikethroughIfDisabled(target);\n });\n\n this.outerClass.gridPercentTargets.forEach(target => {\n const { current, prior } = this.outerClass.currentAndPriorDataForTarget(target);\n\n const currentPercent = current.yes / current.all || 0;\n const priorPercent = prior.yes / prior.all || 0;\n\n const mainPercent = this.outerClass.showChangesFromPrevious\n ? Math.max(currentPercent, priorPercent)\n : currentPercent;\n\n $(target)\n .find(\".text\")\n .text(percentString(current.yes, current.all))\n .toggleClass(\"hidden\", this.outerClass.targetIsDisabled(target));\n\n $(target)\n .find(\".bar\")\n .css({ transform: `scaleX(${mainPercent})`, backgroundColor: barColor })\n .toggleClass(\"hidden\", this.outerClass.targetIsDisabled(target));\n\n $(target)\n .find(\".bar-remainder\")\n .css({ transform: `scaleX(${1 - mainPercent})` })\n .toggleClass(\"hidden\", this.outerClass.targetIsDisabled(target) || current.all === 0);\n });\n\n this.outerClass.gridChangeIndicatorTargets.forEach(target => {\n const { prior, current } = this.outerClass.currentAndPriorDataForTarget(target);\n const priorFraction = prior.yes / prior.all || 0;\n const currentFraction = current.yes / current.all || 0;\n const arrow = $(target).find(\"svg\");\n\n if (\n !this.outerClass.showChangesFromPrevious ||\n withinOneDecimal(priorFraction, currentFraction)\n ) {\n target.title = null;\n $(arrow).addClass(\"hidden\");\n } else if (currentFraction > priorFraction) {\n target.title = `Increased ${toOneDecimal((currentFraction - priorFraction) * 100)}`;\n $(arrow)\n .removeClass([\"hidden\", \"text-red\"])\n .addClass(\"text-green\")\n .css({ transform: \"rotate(0)\" });\n } else {\n target.title = `Decreased ${toOneDecimal((priorFraction - currentFraction) * 100)}`;\n $(arrow)\n .removeClass([\"hidden\", \"text-green\"])\n .addClass(\"text-red\")\n .css({ transform: \"rotate(180deg)\" });\n }\n });\n }\n\n strikethroughIfDisabled(target) {\n $(target).toggleClass(\"line-through\", this.outerClass.targetIsDisabled(target));\n }\n\n get colorsByCoverageMetric() {\n return {\n payers: colors.magenta,\n lives: colors.teal,\n };\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n appendCanvas() {\n const canvas = document.createElement(\"canvas\");\n\n this.element.appendChild(canvas);\n\n return canvas;\n }\n\n get showChangesFromPrevious() {\n return !this.inStaticMode && !!this.params.previous_snapshot_set;\n }\n\n get inStaticMode() {\n return this.data.get(\"staticMode\");\n }\n\n get isFixedDrug() {\n return this.drugsIncluded.length === 1;\n }\n\n get payerTypesIncluded() {\n return this.data.get(\"payer-types-included\").split(\"|\");\n }\n\n get drugsIncluded() {\n return this.data.get(\"drugs-included\").split(\"|\");\n }\n\n get coverageMetric() {\n if (this.inStaticMode || _.isEqual(this.payerTypesIncluded, [\"benefit_management\"])) {\n return \"payers\";\n } else {\n return this.coverageInputTargets.find(target => target.checked)?.value;\n }\n }\n}\n","import { Controller } from \"stimulus\";\nimport colors from \"../../utilities/charts/colors\";\n\nconst rowTemplate = (name, hexCode) => `\n
${name}
\n`;\n\nexport default class extends Controller {\n connect() {\n Object.entries(colors).forEach(([name, hexCode]) => {\n $(this.element).append(rowTemplate(name, hexCode));\n });\n }\n}\n","import Chart from \"chart.js/auto\";\nimport ChartDataLabels from \"chartjs-plugin-datalabels\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport {\n accumulateValuesFn,\n formatPayersLivesTitle,\n onHoverPointer,\n toOneDecimal,\n} from \"../../utilities/charts/chart_utils\";\nimport colors, { lightColors } from \"../../utilities/charts/colors\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n togglePayerTypeInternal() {\n this.redrawChart();\n }\n\n toggleCoverageMetricInternal() {\n this.redrawChart();\n }\n\n toggleDrugInternal() {\n this.chart.options.plugins.title.text = this.titleText;\n this.redrawChart();\n }\n\n updateShownPayersInternal() {\n this.redrawChart();\n }\n\n redrawChart() {\n this.chart.options.plugins.subtitle.text = this.subtitle();\n this.chart.data.labels = this.labels();\n\n const formattedData = this.calculateDataForChart();\n\n this.chart.data.datasets[0].data = formattedData.previous;\n this.chart.data.datasets[1].data = formattedData.added;\n this.chart.data.datasets[2].data = formattedData.removed;\n\n this.chart.data.datasets[0].backgroundColor = this.previousColorFromCoverageMetric;\n }\n\n renderChart() {\n const formattedData = this.calculateDataForChart();\n\n return new Chart(this.appendCanvas(), {\n type: \"bar\",\n plugins: [ChartDataLabels],\n options: {\n indexAxis: \"y\",\n responsive: true,\n maintainAspectRatio: false,\n animation: !this.inStaticMode,\n scales: {\n x: {\n stacked: true,\n grid: { display: false, drawBorder: false },\n ticks: { display: false },\n },\n y: {\n stacked: true,\n grid: { display: false },\n ticks: { display: !this.inStaticMode },\n },\n },\n layout: {\n padding: {\n right: 40, // Leaves room for datalabel\n },\n },\n plugins: {\n legend: {\n display: !this.inStaticMode,\n position: \"bottom\",\n onClick: () => {\n /* Disable legend click events */\n },\n labels: {\n boxWidth: 12,\n filter: (legendItem, chartData) =>\n chartData.datasets[legendItem.datasetIndex].data.some(x => x > 0),\n },\n },\n tooltip: {\n displayColors: false,\n callbacks: this.tooltipCallbacks,\n },\n title: {\n display: true,\n text: this.titleText,\n color: \"black\",\n font: { size: 13 },\n },\n subtitle: {\n display: !this.inStaticMode,\n text: this.subtitle(),\n color: \"black\",\n font: { size: 13 },\n padding: { bottom: 10 },\n },\n datalabels: {\n color: \"black\",\n anchor: \"end\",\n align: \"right\",\n offset: 4,\n display: context => !this.inStaticMode && context.datasetIndex === 2,\n formatter: (_value, context) =>\n toOneDecimal(this.confirmedAccess()[context.dataIndex][1]),\n },\n },\n onHover: onHoverPointer,\n onClick: event => this.triggerModal(event),\n },\n data: {\n labels: this.labels(),\n drug: this.drug,\n datasets: [\n {\n label: \"Previous\",\n data: formattedData.previous,\n backgroundColor: this.previousColorFromCoverageMetric,\n },\n {\n label: \"Increased\",\n data: formattedData.added,\n backgroundColor: colors.pale_green,\n },\n {\n label: \"Decreased\",\n data: formattedData.removed,\n backgroundColor: colors.orange,\n },\n ],\n },\n });\n }\n\n subtitle() {\n const date = moment(this.params.current_date).format(\"MMMM YYYY\");\n\n return `${formatPayersLivesTitle(this.coverageMetric, this.payerTypesShown)} (${date})`;\n }\n\n labels() {\n return this.payerTypesShown.map(payerType => window.PayerTypeLabels[payerType]);\n }\n\n datumIsPositive(context) {\n return context.dataset.data[context.dataIndex] > 0;\n }\n\n previousSnapshotData() {\n return this.confirmedAccess().map(data => _.nth(data, -2));\n }\n\n currentSnapshotDeltas() {\n return this.confirmedAccess().map(data => _.round(_.last(data) - _.nth(data, -2), 2));\n }\n\n calculateDataForChart() {\n const bases = this.previousSnapshotData();\n const deltas = this.currentSnapshotDeltas();\n\n const added = deltas.map(d => Math.max(0, d));\n const removed = deltas.map(d => Math.abs(Math.min(0, d)));\n const previousWithRoomForRemoved = bases.map((value, i) => value - removed[i]);\n\n return {\n previous: previousWithRoomForRemoved,\n added,\n removed,\n };\n }\n\n confirmedAccess() {\n const forShownPayers = _.pick(this.params.data, this.payerTypesShown);\n const forThisDrug = _.mapValues(forShownPayers, byDrug => byDrug[this.drug] || []);\n const accumulated = _.mapValues(forThisDrug, (dataOverTime, payerType) =>\n dataOverTime.map(byAccessStatus =>\n accumulateValuesFn(payerType, this.coverageMetric)(byAccessStatus[0]),\n ),\n );\n\n return _.values(accumulated);\n }\n\n triggerModal(e) {\n const indexes = parseClick(this.chart, e);\n\n if (!indexes) return;\n\n let payerType = this.payerTypesShown[indexes.index];\n\n if (payerType === \"medicare_advantage_payers\") payerType = \"medicare_advantage\";\n\n let groupType = \"\";\n\n let payerIds = [];\n\n const data = this.currentAndPreviousConfirmedPayerIds(payerType);\n\n if (indexes.datasetIndex === 0) {\n groupType = \"unchanged\";\n payerIds = _.intersection(data[0], data[1]);\n } else {\n groupType = \"changed\";\n payerIds = _.xor(data[0], data[1]);\n }\n\n showPayersModal(this.drug, groupType, { [payerType]: payerIds });\n }\n\n currentAndPreviousConfirmedPayerIds(payerType) {\n return this.params.data[payerType][this.drug].map(d => d[0].map(pl => pl.payer));\n }\n\n get previousColorFromCoverageMetric() {\n if (this.coverageMetric === \"lives\") {\n return lightColors.teal;\n } else {\n return lightColors.magenta;\n }\n }\n\n get tooltipCallbacks() {\n return {\n label: tooltipItem => {\n const [previous, current] = this.confirmedAccess()[tooltipItem.dataIndex];\n\n const deltaWord = current < previous ? \"Decreased\" : \"Increased\";\n\n return [\n `Total Confirmed: ${toOneDecimal(current)}`,\n `${deltaWord}: ${toOneDecimal(Math.abs(previous - current))}`,\n ];\n },\n };\n }\n\n get titleText() {\n return `New & Previous Confirmed Access for ${this.drug}`;\n }\n}\n","import _ from \"lodash\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\nimport PayersLivesDonutChartBase from \"./payers_lives_donut_chart_base\";\nimport {\n accumulateValuesFn,\n payersNoun,\n withinOneDecimal,\n} from \"../../utilities/charts/chart_utils\";\n\nexport default class extends PayersLivesDonutChartBase {\n calculateFractions(coverageMetric) {\n let confirmed = 0;\n\n let total = 0;\n\n let priorConfirmed = 0;\n\n let priorTotal = 0;\n\n _.forIn(this.currentDatasets(this.payerTypesShown), (byAccessStatus, payerType) => {\n const accumulate = accumulateValuesFn(payerType, coverageMetric);\n\n confirmed += accumulate(byAccessStatus[0]);\n total += _.sum(byAccessStatus.map(accumulate));\n });\n\n _.forIn(this.priorDatasets(this.payerTypesShown), (byAccessStatus, payerType) => {\n const accumulate = accumulateValuesFn(payerType, coverageMetric);\n\n priorConfirmed += accumulate(byAccessStatus[0]);\n priorTotal += _.sum(byAccessStatus.map(accumulate));\n });\n\n const currentFraction = total === 0 ? 0 : confirmed / total;\n const priorFraction = priorTotal === 0 ? 0 : priorConfirmed / priorTotal;\n\n let mainFraction = 0;\n\n let increaseFraction = 0;\n\n let decreaseFraction = 0;\n\n if (this.showChangesFromPrevious && !withinOneDecimal(currentFraction, priorFraction)) {\n if (currentFraction > priorFraction) {\n mainFraction = priorFraction;\n increaseFraction = currentFraction - priorFraction;\n } else {\n mainFraction = currentFraction;\n decreaseFraction = priorFraction - currentFraction;\n }\n } else {\n mainFraction = currentFraction;\n }\n\n return {\n mainFraction,\n increaseFraction,\n decreaseFraction,\n };\n }\n\n triggerModalInternal(collection) {\n const groupType = {\n base: \"confirmed\",\n changed: \"changed\",\n remainder: \"unconfirmed\",\n }[collection];\n\n const payerTypes = this.payerTypesShown.map(payerType =>\n payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : payerType,\n );\n\n const payerIds = {};\n const extraParams = {};\n\n if (groupType === \"changed\") {\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n }\n\n payerTypes.forEach(payerType => {\n const dataset = this.params.data[payerType][this.drug];\n\n if (this.showChangesFromPrevious && [\"base\", \"changed\"].includes(collection)) {\n const priorPayers = dataset[0][0].map(d => d.payer);\n const currentPayers = dataset[1][0].map(d => d.payer);\n const combinatoric = collection === \"changed\" ? _.xor : _.intersection;\n\n payerIds[payerType] = combinatoric(currentPayers, priorPayers);\n } else if (collection === \"base\") {\n payerIds[payerType] = dataset[1][0].map(d => d.payer);\n } else if (collection === \"remainder\") {\n payerIds[payerType] = _.flatMap(dataset[1].slice(1), ds => ds.map(d => d.payer));\n }\n });\n\n showPayersModal(this.drug, groupType, payerIds, extraParams);\n }\n\n currentDatasets(payerTypes) {\n const forShownPayers = _.pick(this.params.data, payerTypes);\n const withCurrentDrug = _.omitBy(forShownPayers, x => _.isEmpty(x[this.drug]));\n\n return _.mapValues(withCurrentDrug, x => x[this.drug]?.[1] || 0);\n }\n\n priorDatasets(payerTypes) {\n const forShownPayers = _.pick(this.params.data, payerTypes);\n const withCurrentDrug = _.omitBy(forShownPayers, x => _.isEmpty(x[this.drug]));\n\n return _.mapValues(withCurrentDrug, x => x[this.drug]?.[0] || 0);\n }\n\n get titleText() {\n return `${payersNoun(this.payerTypesShown)} & Lives with Confirmed Access for ${this.drug}`;\n }\n\n get tooltipTitleText() {\n return \"Has Confirmed Access\";\n }\n}\n","import Chart from \"chart.js/auto\";\nimport _ from \"lodash\";\nimport {\n absoluteDateOverTimeCallbacks,\n accumulateValuesFn,\n coverageMetricNoun,\n maxOverTimeX,\n omitMissingOverTimeItems,\n overTimeX,\n payersNoun,\n percent,\n} from \"../../utilities/charts/chart_utils\";\nimport colors, { variantLightBlue } from \"../../utilities/charts/colors\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n togglePayerTypeInternal() {\n this.chart.options.plugins.title.text = this.formatTitle();\n\n this.forEachDataset((dataset, type) => {\n dataset.hidden = !this.payerTypesShown.includes(type);\n });\n }\n\n toggleDrugInternal() {\n this.updateChartData();\n }\n\n toggleCoverageMetricInternal() {\n this.updateChartData();\n }\n\n updateShownPayersInternal() {\n this.updateChartData();\n }\n\n updateChartData() {\n this.chart.options.plugins.title.text = this.formatTitle();\n\n this.forEachDataset((dataset, type) => {\n dataset.data = this.formatData(type);\n });\n }\n\n renderChart() {\n const formattingCallbacks = absoluteDateOverTimeCallbacks(this);\n\n return new Chart(this.appendCanvas(), {\n type: \"scatter\",\n options: {\n responsive: true,\n maintainAspectRatio: false,\n animation: !this.inStaticMode,\n showLine: true,\n interaction: {\n intersect: false,\n mode: \"x\",\n },\n scales: {\n y: {\n grid: {\n display: false,\n drawBorder: false,\n },\n suggestedMin: 0,\n suggestedMax: 100,\n ticks: {\n display: !this.inStaticMode,\n callback: value => `${value}%`,\n },\n },\n x: {\n bounds: \"data\",\n ticks: {\n display: !this.inStaticMode,\n callback: formattingCallbacks.ticks,\n maxTicksLimit: maxOverTimeX(this),\n },\n },\n },\n plugins: {\n legend: {\n display: !this.inStaticMode,\n position: \"bottom\",\n labels: { usePointStyle: true },\n onClick: (_event, legendItem) => this.togglePayerTypeFromChart(legendItem),\n },\n title: {\n display: true,\n text: this.formatTitle(),\n color: \"black\",\n font: { size: 13 },\n },\n tooltip: {\n usePointStyle: true,\n titleAlign: \"center\",\n filter: formattingCallbacks.tooltip.filter,\n callbacks: formattingCallbacks.tooltip,\n },\n },\n onClick: event => this.triggerModal(event),\n },\n data: {\n datasets: _.without(\n [\n this.payerTypesIncluded.includes(\"commercial\") && {\n payerType: \"commercial\",\n label: window.PayerTypeLabels.commercial,\n data: this.formatData(\"commercial\"),\n backgroundColor: colors.teal,\n borderColor: colors.teal,\n pointStyle: \"rect\",\n pointRadius: 5,\n pointBorderColor: \"black\",\n hidden: !this.payerTypesShown.includes(\"commercial\"),\n },\n this.payerTypesIncluded.includes(\"medicare\") && {\n payerType: \"medicare\",\n label: window.PayerTypeLabels.medicare,\n data: this.formatData(\"medicare\"),\n backgroundColor: colors.magenta,\n borderColor: colors.magenta,\n pointStyle: \"rectRot\",\n pointRadius: 5,\n pointBorderColor: \"black\",\n hidden: !this.payerTypesShown.includes(\"medicare\"),\n },\n this.payerTypesIncluded.includes(\"medicaid\") && {\n payerType: \"medicaid\",\n label: window.PayerTypeLabels.medicaid,\n data: this.formatData(\"medicaid\"),\n backgroundColor: colors.orange,\n borderColor: colors.orange,\n pointStyle: \"triangle\",\n pointRadius: 5,\n pointBorderColor: \"black\",\n hidden: !this.payerTypesShown.includes(\"medicaid\"),\n },\n this.payerTypesIncluded.includes(\"medicare_advantage\") && {\n payerType: \"medicare_advantage\",\n label: window.PayerTypeLabels.medicare_advantage,\n data: this.formatData(\"medicare_advantage\"),\n ...variantLightBlue,\n pointStyle: \"circle\",\n pointRadius: 5,\n pointBorderColor: \"black\",\n hidden: !this.payerTypesShown.includes(\"medicare_advantage\"),\n },\n this.payerTypesIncluded.includes(\"medicare_advantage_payers\") && {\n payerType: \"medicare_advantage_payers\",\n label: window.PayerTypeLabels.medicare_advantage_payers,\n data: this.formatData(\"medicare_advantage_payers\"),\n ...variantLightBlue,\n pointStyle: \"circle\",\n pointRadius: 5,\n pointBorderColor: \"black\",\n hidden: !this.payerTypesShown.includes(\"medicare_advantage_payers\"),\n },\n this.payerTypesIncluded.includes(\"managed_medicaid\") && {\n payerType: \"managed_medicaid\",\n label: window.PayerTypeLabels.managed_medicaid,\n data: this.formatData(\"managed_medicaid\"),\n backgroundColor: colors.mauve,\n borderColor: colors.mauve,\n pointStyle: \"rectRounded\",\n pointRadius: 5,\n pointBorderColor: \"black\",\n hidden: !this.payerTypesShown.includes(\"managed_medicaid\"),\n },\n this.payerTypesIncluded.includes(\"benefit_management\") && {\n payerType: \"benefit_management\",\n label: window.PayerTypeLabels.benefit_management,\n data: this.formatData(\"benefit_management\"),\n backgroundColor: colors.blue_gray,\n borderColor: colors.blue_gray,\n pointStyle: \"rect\",\n pointRadius: 5,\n pointBorderColor: \"black\",\n hidden: !this.payerTypesShown.includes(\"benefit_management\"),\n },\n ],\n false,\n ),\n },\n });\n }\n\n formatData(payerType) {\n if (_.isEmpty(this.params.data[this.drug]?.[payerType])) {\n return [];\n }\n\n const accumulate = accumulateValuesFn(payerType, this.coverageMetric);\n\n const data = omitMissingOverTimeItems(this.params.data[this.drug][payerType]).map(datum => {\n const x = overTimeX(this, datum.date);\n const y = percent(accumulate(datum.confirmed), accumulate(datum.all));\n\n return { x, y, date: datum.date };\n });\n\n return _.sortBy(data, point => point.x);\n }\n\n forEachDataset(callback) {\n this.payerTypesIncluded.forEach(type => {\n const dataset = this.chart.data.datasets.find(set => set.payerType === type);\n\n callback(dataset, type);\n });\n }\n\n formatTitle() {\n const nouns = coverageMetricNoun(this.coverageMetric, this.payerTypesShown);\n\n return `% of ${nouns} with Confirmed Access Over Time for ${this.drug}`;\n }\n\n triggerModal(event) {\n const clickLocation = parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n const dataset = this.chart.data.datasets[clickLocation.datasetIndex];\n\n const payerType =\n dataset.payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : dataset.payerType;\n const payers = this.params.data[this.drug][payerType][clickLocation.index].confirmed;\n\n const title = `${payersNoun(payerType)} with Confirmed Access for ${this.drug}`;\n\n const maxIndex = dataset.data.length - 1;\n\n if (clickLocation.index === maxIndex) {\n showPayersModal(this.drug, title, { [payerType]: payers });\n } else {\n const timestamp = dataset.data[clickLocation.index].date;\n\n showPayersModal(this.drug, title, { [payerType]: payers }, { timestamp });\n }\n }\n}\n","import Chart from \"chart.js/auto\";\nimport ChartDataLabels from \"chartjs-plugin-datalabels\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport colors, { variantLightBlue as mapd } from \"../../utilities/charts/colors\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\nimport SymbolaArrows from \"../../utilities/charts/symbola_arrows\";\nimport {\n accumulateValuesFn,\n formatPayersLivesTitle,\n onHoverPointer,\n orderedAccessStatusNames,\n payersNoun,\n toOneDecimal,\n withinOneDecimalP,\n} from \"../../utilities/charts/chart_utils\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n connect() {\n super.connect();\n\n if (this.showChangesFromPrevious) {\n SymbolaArrows.onload(() => this.chart.update());\n }\n }\n\n togglePayerTypeInternal() {\n this.chart.data.datasets.forEach(dataset => {\n dataset.hidden = !this.payerTypesShown.includes(dataset.payerType);\n });\n\n this.chart.options.plugins.subtitle.text = this.subtitle();\n }\n\n toggleCoverageMetricInternal() {\n this.recalculateChartData();\n\n this.chart.options.plugins.subtitle.text = this.subtitle();\n }\n\n toggleDrugInternal() {\n this.recalculateChartData();\n\n this.chart.options.plugins.title.text = `Access Status Report for ${this.drug}`;\n }\n\n updateShownPayersInternal() {\n this.recalculateChartData();\n this.chart.options.plugins.subtitle.text = this.subtitle();\n }\n\n recalculateChartData() {\n this.chart.data.datasets.forEach(dataset => {\n dataset.data = this.dataFromParams(dataset.payerType);\n });\n }\n\n buildDatasets(payerType, backgroundColor, borderColor) {\n const output = [];\n\n if (this.payerTypesIncluded.includes(payerType)) {\n const label =\n payerType === \"medicare_advantage_payers\"\n ? `${window.PayerTypeLabels.medicare_advantage} Payers`\n : window.PayerTypeLabels[payerType];\n\n output.push({\n payerType,\n label,\n data: this.dataFromParams(payerType),\n backgroundColor,\n borderColor,\n borderWidth: 1,\n barPercentage: 1,\n hidden: !this.payerTypesShown.includes(payerType),\n });\n }\n\n return output;\n }\n\n renderChart() {\n return new Chart(this.appendCanvas(), {\n type: \"bar\",\n plugins: [ChartDataLabels],\n options: {\n responsive: true,\n maintainAspectRatio: false,\n animation: !this.inStaticMode,\n scales: {\n x: {\n grid: { display: false },\n ticks: {\n display: !this.inStaticMode,\n font: { size: 11 },\n },\n },\n y: {\n display: false,\n },\n },\n plugins: {\n legend: {\n display: !this.inStaticMode,\n position: \"bottom\",\n onClick: (_event, legendItem) => this.togglePayerTypeFromChart(legendItem),\n labels: {\n boxWidth: 12,\n },\n },\n title: {\n display: true,\n text: `Access Status Report for ${this.drug}`,\n color: \"black\",\n font: { size: 13 },\n },\n subtitle: {\n display: !this.inStaticMode,\n text: this.subtitle(),\n color: \"black\",\n font: { size: 13 },\n padding: { bottom: 10 },\n },\n tooltip: {\n callbacks: {\n label: context => this.tooltipLabelText(context),\n },\n },\n datalabels: {\n display: !this.inStaticMode,\n color: c => this.colorForDelta(this.deltaFromChartContext(c)),\n font: c => (this.deltaFromChartContext(c) !== 0 ? { weight: \"bold\" } : {}),\n anchor: \"end\",\n align: \"end\",\n textAlign: \"center\",\n padding: c => (this.deltaFromChartContext(c) > 0 ? 0 : 4),\n formatter: (v, c) => this.dataLabelWithDelta(v, c),\n listeners: {\n click: event => this.triggerModalFromChartElement(event),\n },\n },\n },\n onClick: event => this.triggerModalFromChart(event),\n onHover: onHoverPointer,\n },\n data: {\n labels: [\n [\"Confirmed\", \"Access\"],\n \"Case-by-Case\",\n \"Not Covered\",\n [\"Access\", \"Undetermined\"],\n ],\n datasets: _.flatten([\n this.buildDatasets(\"commercial\", colors.teal, \"#358F9F\"),\n this.buildDatasets(\"medicaid\", colors.indigo, \"#A5502B\"),\n this.buildDatasets(\"medicare\", colors.magenta, \"#77446F\"),\n this.buildDatasets(\"medicare_advantage\", mapd.backgroundColor, mapd.borderColor),\n this.buildDatasets(\"medicare_advantage_payers\", mapd.backgroundColor, mapd.borderColor),\n this.buildDatasets(\"managed_medicaid\", colors.mauve, \"#863749\"),\n this.buildDatasets(\"benefit_management\", colors.blue_gray, \"#52508b\"),\n ]),\n },\n });\n }\n\n subtitle() {\n const date = moment(this.params.current_date).format(\"MMMM YYYY\");\n\n return `${formatPayersLivesTitle(this.coverageMetric, this.payerTypesShown)} (${date})`;\n }\n\n tooltipLabelText(context) {\n const standardLine = `${context.dataset.label}: ${context.parsed.y}`;\n const delta = this.deltaFromChartContext(context);\n\n if (delta === 0) {\n return standardLine;\n } else {\n const deltaWord = delta > 0 ? \"Increased\" : \"Decreased\";\n\n return [standardLine, `${deltaWord}: ${toOneDecimal(Math.abs(delta))}`];\n }\n }\n\n dataFromParams(payerType) {\n const format = x => toOneDecimal(accumulateValuesFn(payerType, this.coverageMetric)(x));\n const data = this.params.data[payerType][this.drug];\n\n return _.isEmpty(data) ? [] : _.last(data).map(format);\n }\n\n deltaFromChartContext(context) {\n const { payerType } = context.dataset;\n const format = accumulateValuesFn(payerType, this.coverageMetric);\n\n const priorValue = format(this.params.data[payerType][this.drug][0][context.dataIndex]);\n const currentValue = format(this.params.data[payerType][this.drug][1][context.dataIndex]);\n\n if (!this.showChangesFromPrevious || withinOneDecimalP(priorValue, currentValue)) {\n return 0;\n } else {\n return currentValue - priorValue;\n }\n }\n\n dataLabelWithDelta(value, context) {\n const delta = this.deltaFromChartContext(context);\n\n if (delta === 0) {\n return value;\n } else if (delta > 0) {\n return [value, SymbolaArrows.up];\n } else {\n return [SymbolaArrows.down, value];\n }\n }\n\n colorForDelta(delta) {\n if (delta === 0) {\n return \"#000\";\n } else if (delta > 0) {\n return \"#6b7e38\"; // text-green-500\n } else {\n return \"#e02424\"; // text-red\n }\n }\n\n triggerModalFromChart(event) {\n const clickLocation = parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n this.triggerModalInternal(clickLocation.datasetIndex, clickLocation.index);\n }\n\n triggerModalFromChartElement(indexes) {\n this.triggerModalInternal(indexes.datasetIndex, indexes.dataIndex);\n }\n\n triggerModalInternal(payerTypeIndex, accessStatusIndex) {\n let payerType = this.payerTypesShown[payerTypeIndex];\n\n if (payerType === \"medicare_advantage_payers\") payerType = \"medicare_advantage\";\n\n const payerIds = {};\n const extraParams = {};\n\n const payerIdsFor = index =>\n this.params.data[payerType][this.drug][index][accessStatusIndex].map(d => d.payer);\n\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(1);\n const priorPayers = payerIdsFor(0);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage = {\n [payerType]: changedPayers.map(payer => ({ payer, drug: this.drug })),\n };\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n extraParams.changeDisplayMode = \"access_status\";\n } else {\n payerIds[payerType] = payerIdsFor(1);\n }\n\n const accessStatus = orderedAccessStatusNames[accessStatusIndex];\n const title = `${payersNoun(this.payerTypesShown)} with ${accessStatus} for ${this.drug}`;\n\n showPayersModal(this.drug, title, payerIds, extraParams);\n }\n}\n","import _ from \"lodash\";\nimport { orderedAccessStatusNames } from \"../../utilities/charts/chart_utils\";\nimport colors, { lightColors } from \"../../utilities/charts/colors\";\nimport USStateChartControllerBase from \"./us_state_chart_controller_base\";\n\nexport default class extends USStateChartControllerBase {\n titleText() {\n return `${this.drug} ${window.PayerTypeLabels[this.payerType]} Access Status`;\n }\n\n fractionForState(payerType, state) {\n const payersByAccessStatus = this.params.data[payerType]?.[this.drug]?.[state];\n\n if (_.isEmpty(_.flatten(payersByAccessStatus))) return 0;\n\n const indexesWithPayers = payersByAccessStatus\n .map((_payers, i) => i)\n .filter(i => !_.isEmpty(payersByAccessStatus[i]));\n\n const fractionsForIndexes = indexesWithPayers.map(index => {\n switch (orderedAccessStatusNames[index]) {\n case \"Confirmed Access\":\n return 1;\n case \"Case-by-Case\":\n return 0.75;\n case \"Access Undetermined\":\n return 0.5;\n case \"Not Covered\":\n return 0.25;\n default:\n return 0;\n }\n });\n\n return _.max(fractionsForIndexes);\n }\n\n displayValueFromFraction(fraction) {\n if (fraction > 0.8) {\n return \"Confirmed Access\";\n } else if (fraction > 0.6) {\n return \"Case-by-Case\";\n } else if (fraction > 0.4) {\n return \"Access Undetermined\";\n } else if (fraction > 0.2) {\n return \"Not Covered\";\n } else {\n return \"N/I\";\n }\n }\n\n colorForDisplayValue(accessStatus) {\n switch (accessStatus) {\n case \"Confirmed Access\":\n return colors.pale_green;\n case \"Case-by-Case\":\n return colors.goldenrod;\n case \"Access Undetermined\":\n return lightColors.gray;\n case \"Not Covered\":\n return colors.mauve;\n default:\n return \"#ffffff\";\n }\n }\n\n payersForState(payerType, state) {\n return _.flatten(this.params.data[payerType]?.[this.drug]?.[state]);\n }\n}\n","import _ from \"lodash\";\nimport { stateAbbreviation } from \"../../utilities/charts/state_abbreviation_map\";\nimport ConfirmedAccessUSStateMapChartController from \"./confirmed_access_us_state_map_chart_controller\";\n\nconst MAX_LINE_LENGTH = 45;\nconst WORD_WRAP = new RegExp(\n `(?![^\\\\n]{1,${MAX_LINE_LENGTH}}$)([^\\\\n]{1,${MAX_LINE_LENGTH}})\\\\s`,\n \"g\",\n);\n\nexport default class extends ConfirmedAccessUSStateMapChartController {\n titleText() {\n return `${this.drug} Medicaid Outreach`;\n }\n\n tooltipCallbacks() {\n const that = this;\n\n return _.merge(super.tooltipCallbacks(), {\n beforeFooter: () => \"Outreach Summary:\",\n footer: items => {\n const state = stateAbbreviation(items[0].raw.feature);\n\n let outreachSummary = that.params.medicaid_outreach_status[that.drug]?.[state];\n\n if (_.isEmpty(outreachSummary)) {\n outreachSummary = \"N/I\";\n }\n\n return that.wrapLines(outreachSummary);\n },\n });\n }\n\n wrapLines(text) {\n const lines = text\n .replace(WORD_WRAP, \"$1\\n\")\n .split(\"\\n\")\n .map(t => t.trim());\n\n if (lines.length > 3) {\n const truncated = lines.slice(0, 3);\n\n truncated[2] += \"…\";\n return truncated;\n } else {\n return lines;\n }\n }\n\n coverageDetailsAnchor() {\n return \"outreach\";\n }\n}\n","import _ from \"lodash\";\nimport BarsChartControllerBase from \"./bars_chart_base_controller\";\nimport {\n accumulateValuesFn,\n joinNounsWithOr,\n payersNoun,\n toOneDecimal,\n uniqPayersFromCustomFields,\n} from \"../../utilities/charts/chart_utils\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\n\nexport default class extends BarsChartControllerBase {\n titleText() {\n return `${this.drug} ${this.params.custom_field}`;\n }\n\n descriptionText(yes, all) {\n const nouns =\n this.coverageMetric === \"lives\"\n ? \"million lives\"\n : payersNoun(this.payerTypesShown).toLowerCase();\n\n const preposition = this.params.custom_preposition || `with ${this.numeratorText}`;\n\n return `There are ${toOneDecimal(yes)} ${nouns}\n ${preposition} ${this.params.custom_field}\n out of the ${toOneDecimal(all)} ${nouns}`;\n }\n\n currentAndPriorDataForTarget(target) {\n const { payerType } = target.dataset;\n const customFieldValues = this.params.data[this.drug][payerType];\n const priorCustomFieldValues = this.params.previous_data?.[this.drug]?.[payerType];\n\n const accumulate = x =>\n accumulateValuesFn(payerType, this.coverageMetric)(uniqPayersFromCustomFields(x));\n\n return {\n current: {\n yes: accumulate(_.pick(customFieldValues, ...this.params.numerator_values)),\n all: accumulate(customFieldValues),\n },\n prior: {\n yes: accumulate(_.pick(priorCustomFieldValues, ...this.params.numerator_values)),\n all: accumulate(priorCustomFieldValues),\n },\n };\n }\n\n onBarClick(event) {\n let payerType = $(event.target).data(\"payer-type\");\n\n if (payerType === \"medicare_advantage_payers\") {\n payerType = \"medicare_advantage\";\n }\n\n const nouns = payersNoun(payerType);\n const title = `${nouns} with ${this.numeratorText} for ${this.drug} ${this.params.custom_field}`;\n\n const payerIds = {};\n const extraParams = {};\n\n const payerIdsFor = dataset =>\n _.flatten(\n _.values(_.pick(dataset?.[this.drug]?.[payerType] || {}, ...this.params.numerator_values)),\n ).map(pl => pl.payer);\n\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(this.params.data);\n const priorPayers = payerIdsFor(this.params.previous_data);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage = {\n [payerType]: changedPayers.map(payer => ({ payer, drug: this.drug })),\n };\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n } else {\n payerIds[payerType] = payerIdsFor(this.params.data);\n }\n\n showPayersModal(this.drug, title, payerIds, extraParams);\n }\n\n onBarRemainderClick(event) {\n let payerType = $(event.target).data(\"payer-type\");\n\n if (payerType === \"medicare_advantage_payers\") {\n payerType = \"medicare_advantage\";\n }\n\n const title = `${payersNoun(payerType)} without ${this.numeratorText} for ${this.drug}`;\n\n const payerIds = {};\n const extraParams = {};\n\n const payerIdsFor = dataset =>\n _.flatten(\n _.values(_.omit(dataset?.[this.drug]?.[payerType] || {}, ...this.params.numerator_values)),\n ).map(pl => pl.payer);\n\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(this.params.data);\n const priorPayers = payerIdsFor(this.params.previous_data);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage = {\n [payerType]: changedPayers.map(payer => ({ payer, drug: this.drug })),\n };\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n extraParams.changeDisplayMode = \"custom_fields\";\n } else {\n payerIds[payerType] = payerIdsFor(this.params.data);\n }\n\n showPayersModal(this.drug, title, payerIds, extraParams);\n }\n\n get numeratorText() {\n return joinNounsWithOr(this.params.numerator_values);\n }\n}\n","import Chart from \"chart.js/auto\";\nimport _ from \"lodash\";\nimport {\n accumulateValuesFn,\n coverageMetricNoun,\n onHoverPointer,\n payersNoun,\n toOneDecimal,\n uniqPayersFromCustomFields,\n} from \"../../utilities/charts/chart_utils\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport colors from \"../../utilities/charts/colors\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n togglePayerTypeInternal() {\n this.recalculateChartData();\n }\n\n toggleCoverageMetricInternal() {\n this.recalculateChartData();\n }\n\n toggleDrugInternal() {\n this.chart.data.labels = this.allValues;\n this.recalculateChartData();\n }\n\n updateShownPayersInternal() {\n this.recalculateChartData();\n }\n\n recalculateChartData() {\n this.chart.data.datasets[0].label = this.percentOfPayersText();\n this.chart.data.datasets[0].data = this.formatData();\n this.chart.data.datasets[0].backgroundColor =\n this.coverageMetric === \"payers\" ? colors.magenta : colors.teal;\n }\n\n renderChart() {\n return new Chart(this.appendCanvas(), {\n type: \"bar\",\n options: {\n responsive: true,\n maintainAspectRatio: false,\n animation: !this.inStaticMode,\n scales: {\n x: {\n grid: { display: false },\n ticks: {\n display: !this.inStaticMode,\n },\n },\n y: {\n grid: { display: true },\n suggestedMin: 0,\n suggestedMax: 1,\n ticks: {\n display: !this.inStaticMode,\n font: { size: 11 },\n callback: fraction => `${toOneDecimal(fraction * 100)}%`,\n },\n },\n },\n plugins: {\n title: {\n display: true,\n text: this.params.custom_field,\n color: \"black\",\n font: { size: 13 },\n },\n tooltip: {\n mode: \"index\",\n intersect: false,\n titleAlign: \"center\",\n callbacks: {\n label: item => {\n const nouns = item.datasetIndex === 0 ? payersNoun(this.payerTypesShown) : \"Lives\";\n\n return `${nouns}: ${toOneDecimal(item.parsed.y * 100)}%`;\n },\n },\n },\n legend: {\n display: !this.inStaticMode,\n position: \"bottom\",\n },\n },\n onClick: event => this.showModal(event),\n onHover: onHoverPointer,\n },\n data: {\n labels: this.allValues,\n datasets: [\n {\n label: this.percentOfPayersText(),\n backgroundColor: this.coverageMetric === \"payers\" ? colors.magenta : colors.teal,\n data: this.formatData(),\n },\n ],\n },\n });\n }\n\n formatData() {\n return this.allValues.map(customFieldValue => {\n let all = 0;\n\n let these = 0;\n\n const forShownPayerTypes = _.pick(this.params.data[this.drug], this.payerTypesShown);\n\n _.forIn(forShownPayerTypes, (byFieldValue, payerType) => {\n const accumulate = x => accumulateValuesFn(payerType, this.coverageMetric)(x || []);\n\n all += accumulate(uniqPayersFromCustomFields(byFieldValue));\n these += accumulate(byFieldValue[customFieldValue]);\n });\n\n return these / all;\n });\n }\n\n showModal(event) {\n const clickLocation = parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n const customFieldValue = this.params.all_values[this.drug][clickLocation.index];\n\n const payerTypes = this.payerTypesShown.map(p =>\n p === \"medicare_advantage_payers\" ? \"medicare_advantage\" : p,\n );\n\n const payers = _.mapValues(\n _.pick(this.params.data[this.drug], payerTypes),\n data => data[customFieldValue] || [],\n );\n\n const nouns = payersNoun(payerTypes);\n const title = `${nouns} with ${customFieldValue} for ${this.params.custom_field}`;\n\n showPayersModal(this.drug, title, payers);\n }\n\n percentOfPayersText() {\n return `% of ${coverageMetricNoun(this.coverageMetric, this.payerTypesShown)}`;\n }\n\n get allValues() {\n return this.params.all_values[this.drug];\n }\n}\n","import Chart from \"chart.js/auto\";\nimport _ from \"lodash\";\nimport {\n accumulateValuesFn,\n onHoverPointer,\n payersNoun,\n toOneDecimal,\n uniqPayersFromCustomFields,\n} from \"../../utilities/charts/chart_utils\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport colors from \"../../utilities/charts/colors\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n togglePayerTypeInternal() {\n this.chart.data.datasets[0].label = `% of ${payersNoun(this.payerTypesShown)}`;\n this.recalculateChartData();\n }\n\n toggleCoverageMetricInternal() {\n this.recalculateChartData();\n }\n\n toggleDrugInternal() {\n this.chart.data.labels = this.allValues;\n this.recalculateChartData();\n }\n\n updateShownPayersInternal() {\n this.recalculateChartData();\n }\n\n recalculateChartData() {\n this.chart.data.datasets[0].data = this.allValues.map(v => this.formatData(v, \"payers\"));\n this.chart.data.datasets[1].data = this.allValues.map(v => this.formatData(v, \"lives\"));\n }\n\n renderChart() {\n return new Chart(this.appendCanvas(), {\n type: \"bar\",\n options: {\n responsive: true,\n maintainAspectRatio: false,\n animation: !this.inStaticMode,\n scales: {\n x: {\n grid: { display: false },\n ticks: {\n display: !this.inStaticMode,\n },\n },\n y: {\n grid: { display: true },\n suggestedMin: 0,\n suggestedMax: 1,\n ticks: {\n display: !this.inStaticMode,\n font: { size: 11 },\n callback: fraction => `${toOneDecimal(fraction * 100)}%`,\n },\n },\n },\n plugins: {\n title: {\n display: true,\n text: this.params.custom_field,\n color: \"black\",\n font: { size: 13 },\n },\n tooltip: {\n mode: \"index\",\n intersect: false,\n titleAlign: \"center\",\n callbacks: {\n label: item => {\n const nouns = item.datasetIndex === 0 ? payersNoun(this.payerTypesShown) : \"Lives\";\n\n return `${nouns}: ${toOneDecimal(item.parsed.y * 100)}%`;\n },\n },\n },\n legend: {\n display: !this.inStaticMode,\n position: \"bottom\",\n },\n },\n onClick: event => this.showModal(event),\n onHover: onHoverPointer,\n },\n data: {\n labels: this.allValues,\n datasets: [\n {\n label: `% of ${payersNoun(this.payerTypesShown)}`,\n backgroundColor: colors.magenta,\n data: this.allValues.map(v => this.formatData(v, \"payers\")),\n },\n {\n label: \"% of Lives\",\n backgroundColor: colors.teal,\n data: this.allValues.map(v => this.formatData(v, \"lives\")),\n },\n ],\n },\n });\n }\n\n formatData(customFieldValue, coverageMetric) {\n let all = 0;\n\n let these = 0;\n\n const forShownPayerTypes = _.pick(this.params.data[this.drug], this.payerTypesShown);\n\n _.forIn(forShownPayerTypes, (byFieldValue, payerType) => {\n const accumulate = x => accumulateValuesFn(payerType, coverageMetric)(x || []);\n\n all += accumulate(uniqPayersFromCustomFields(byFieldValue));\n these += accumulate(byFieldValue[customFieldValue]);\n });\n\n return these / all;\n }\n\n showModal(event) {\n const clickLocation = parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n const customFieldValue = this.params.all_values[this.drug][clickLocation.index];\n\n const payerTypes = this.payerTypesShown.map(p =>\n p === \"medicare_advantage_payers\" ? \"medicare_advantage\" : p,\n );\n\n const payers = _.mapValues(\n _.pick(this.params.data[this.drug], payerTypes),\n data => data[customFieldValue] || [],\n );\n\n const nouns = payersNoun(payerTypes);\n\n const title = `${nouns} with ${customFieldValue} for ${this.params.custom_field}`;\n\n showPayersModal(this.drug, title, payers);\n }\n\n get allValues() {\n return this.params.all_values[this.drug];\n }\n}\n","import _ from \"lodash\";\nimport { buildChart, updateChartData } from \"../../utilities/charts/payers_v_lives_over_time_chart\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\nimport {\n accumulateValuesFn,\n joinNounsWithOr,\n omitMissingOverTimeItems,\n overTimeX,\n payersNoun,\n percent,\n relativeDateOverTimeCallbacks,\n uniqPayersFromCustomFields,\n} from \"../../utilities/charts/chart_utils\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n togglePayerTypeInternal() {\n updateChartData(this.chart, this.formatData.bind(this), payersNoun(this.payerTypesShown));\n }\n\n toggleDrugInternal() {\n updateChartData(this.chart, this.formatData.bind(this), payersNoun(this.payerTypesShown));\n }\n\n updateShownPayersInternal() {\n updateChartData(this.chart, this.formatData.bind(this), payersNoun(this.payerTypesShown));\n }\n\n renderChart() {\n return buildChart(\n this.appendCanvas(),\n payersNoun(this.payerTypesShown),\n this.titleText,\n relativeDateOverTimeCallbacks(this),\n this.formatData.bind(this),\n this.triggerModal.bind(this),\n this.inStaticMode,\n );\n }\n\n formatData(coverageMetric) {\n const forShownPayers = _.pick(this.params.data[this.drug], this.payerTypesShown);\n\n const accumulatedData = {};\n\n _.forIn(forShownPayers, (datapoints, payerType) => {\n datapoints.forEach(datapoint => {\n const counted = this.countConfirmedValues(datapoint, payerType, coverageMetric);\n\n if (accumulatedData[counted.date]) {\n accumulatedData[counted.date].confirmed += counted.confirmed;\n accumulatedData[counted.date].all += counted.all;\n } else {\n accumulatedData[counted.date] = counted;\n }\n });\n });\n\n const pointsWithValues = omitMissingOverTimeItems(_.values(accumulatedData));\n\n const data = pointsWithValues.map(({ date, confirmed, all }) => ({\n x: overTimeX(this, date),\n y: percent(confirmed, all),\n date,\n }));\n\n return _.sortBy(data, point => point.x);\n }\n\n countConfirmedValues(datapoint, payerType, coverageMetric) {\n const accumulate = values =>\n accumulateValuesFn(payerType, coverageMetric)(uniqPayersFromCustomFields(values));\n\n return {\n date: datapoint.date,\n confirmed: accumulate(_.pick(datapoint.values, ...this.params.numerator_values)),\n all: accumulate(datapoint.values),\n };\n }\n\n triggerModal(event) {\n const clickLocation = parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n const payerTypes = this.payerTypesShown.map(payerType =>\n payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : payerType,\n );\n\n const dataForPayerTypes = _.pick(this.params.data[this.drug], payerTypes);\n\n const dataForClickLocation = _.mapValues(dataForPayerTypes, data => data[clickLocation.index]);\n const presentData = _.pickBy(dataForClickLocation, d => !_.isEmpty(d));\n\n const payerIds = {};\n\n _.forIn(presentData, (data, payerType) => {\n _.flatten(_.values(_.pick(data.values, this.params.numerator_values))).forEach(datum => {\n payerIds[payerType] ||= [];\n if (!payerIds[payerType].includes(datum.payer)) {\n payerIds[payerType].push(datum.payer);\n }\n });\n });\n\n const title = `${payersNoun(payerTypes)} with ${this.numeratorDescriptionText}`;\n const dataset = this.chart.data.datasets[clickLocation.datasetIndex];\n\n const maxIndex = dataset.data.length - 1;\n\n if (clickLocation.index === maxIndex) {\n showPayersModal(this.drug, title, payerIds);\n } else {\n const timestamp = dataset.data[clickLocation.index].date;\n\n showPayersModal(this.drug, title, payerIds, { timestamp });\n }\n }\n\n get titleText() {\n const nouns = payersNoun(this.payerTypesShown);\n const preposition =\n this.params.custom_preposition || `with ${joinNounsWithOr(this.params.numerator_values)} for`;\n\n return `% of ${nouns} v. % of Lives ${preposition} ${this.drug} ${this.params.custom_field}`;\n }\n\n get numeratorDescriptionText() {\n const formattedNumerator = joinNounsWithOr(this.params.numerator_values);\n\n return `${formattedNumerator} for ${this.drug} ${this.params.custom_field}`;\n }\n}\n","import Chart from \"chart.js/auto\";\nimport _ from \"lodash\";\nimport {\n accumulateValuesFn,\n onHoverPointer,\n payersNoun,\n percentString,\n} from \"../../utilities/charts/chart_utils\";\nimport colors from \"../../utilities/charts/colors\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n togglePayerTypeInternal() {\n this.recalculateChartData();\n }\n\n toggleCoverageMetricInternal() {\n this.recalculateChartData();\n }\n\n toggleDrugInternal() {\n this.chart.data.labels = this.allValues;\n this.chart.options.plugins.title.text = this.titleText;\n this.recalculateChartData();\n }\n\n updateShownPayersInternal() {\n this.recalculateChartData();\n }\n\n recalculateChartData() {\n this.chart.data.datasets[0].data = this.allValues.map(v => this.dataForValue(v));\n }\n\n renderChart() {\n return new Chart(this.appendCanvas(), {\n type: \"pie\",\n options: {\n responsive: true,\n maintainAspectRatio: false,\n animation: !this.inStaticMode,\n plugins: {\n title: {\n display: true,\n text: this.titleText,\n color: \"black\",\n font: { size: 13 },\n },\n tooltip: {\n callbacks: {\n label: item => this.formatTooltipLabel(item),\n },\n },\n legend: {\n display: !this.inStaticMode,\n },\n },\n onClick: event => this.showModal(event),\n onHover: onHoverPointer,\n },\n data: {\n labels: this.allValues,\n datasets: [\n {\n label: \"\",\n backgroundColor: this.dataColors,\n data: this.allValues.map(v => this.dataForValue(v)),\n },\n ],\n },\n });\n }\n\n dataForValue(customFieldValue) {\n const dataForPayerType = payerType => {\n const datum = this.params.data[this.drug][payerType]?.[customFieldValue];\n\n return datum ? accumulateValuesFn(payerType, this.coverageMetric)(datum) : 0;\n };\n\n return _.sum(this.payerTypesShown.map(dataForPayerType));\n }\n\n formatTooltipLabel(tooltipItem) {\n const value = tooltipItem.label;\n\n const unhiddenValues = tooltipItem.chart.legend.legendItems\n .filter(item => !item.hidden)\n .map(item => item.text);\n\n const allValuesOrdered = tooltipItem.chart.legend.legendItems.map(item => item.text);\n\n const unhiddenIndexes = unhiddenValues.map(v => allValuesOrdered.indexOf(v));\n\n const sumOfUnhiddenValues = _.sum(unhiddenIndexes.map(i => tooltipItem.dataset.data[i]));\n\n const percentOfUnhidden = percentString(tooltipItem.parsed, sumOfUnhiddenValues);\n\n return `${value}: ${percentOfUnhidden}`;\n }\n\n distinctCustomFieldValues() {\n return _.uniq(_.flatten(_.values(this.params[this.drug])));\n }\n\n showModal(event) {\n const clickLocation = parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n const customFieldValue = this.params.all_values[this.drug][clickLocation.index];\n\n const payerTypes = this.payerTypesShown.map(p =>\n p === \"medicare_advantage_payers\" ? \"medicare_advantage\" : p,\n );\n\n const payers = _.mapValues(\n _.pick(this.params.data[this.drug], payerTypes),\n data => data[customFieldValue] || [],\n );\n\n const nouns = payersNoun(payerTypes);\n const title = `${nouns} with ${customFieldValue} for ${this.params.custom_field}`;\n\n showPayersModal(this.drug, title, payers);\n }\n\n get titleText() {\n return `${this.drug} ${this.params.custom_field}`;\n }\n\n get allValues() {\n return this.params.all_values[this.drug];\n }\n\n get dataColors() {\n return _.values(colors);\n }\n}\n","import _ from \"lodash\";\nimport { joinNounsWithOr, payersNoun } from \"../../utilities/charts/chart_utils\";\nimport colors, { lightColors } from \"../../utilities/charts/colors\";\nimport USStateChartControllerBase from \"./us_state_chart_controller_base\";\n\nexport default class extends USStateChartControllerBase {\n titleText() {\n const nouns = payersNoun(this.payerType);\n\n const preposition = this.params.custom_preposition || `with ${this.numeratorText} for`;\n\n return `${nouns} ${preposition} ${this.drug} ${this.params.custom_field}`;\n }\n\n displayValueFromFraction(fraction) {\n const index = _.round(fraction * this.allValues.length);\n\n return this.allValues[index];\n }\n\n colorForDisplayValue(value) {\n return this.params.numerator_values.includes(value) ? colors.magenta : lightColors.gray;\n }\n\n // This does not currently support prioritized values for multiple payers\n fractionForState(payerType, state) {\n const payersByValue = this.params.data[this.drug]?.[payerType]?.[state];\n\n if (_.isEmpty(payersByValue)) {\n return _.indexOf(this.allValues, \"N/I\") / this.allValues.length;\n } else {\n const value = _.keys(payersByValue)[0];\n const index = _.indexOf(this.allValues, value);\n\n return index / this.allValues.length;\n }\n }\n\n payersForState(payerType, state) {\n const payersByValue = this.params.data[this.drug]?.[payerType]?.[state];\n\n return _.isEmpty(payersByValue) ? [] : _.flatten(_.values(payersByValue));\n }\n\n generateLegendLabels(chart) {\n const matchingText =\n this.params.numerator_values.length === 1 ? this.params.numerator_values[0] : \"Matching\";\n\n return [\n {\n text: matchingText,\n fillStyle: colors.magenta,\n pointStyle: \"rect\",\n fontColor: chart.legend.options.labels.color,\n },\n {\n text: \"Other\",\n fillStyle: lightColors.gray,\n pointStyle: \"rect\",\n fontColor: chart.legend.options.labels.color,\n },\n ];\n }\n\n coverageDetailsAnchor() {\n return \"custom\";\n }\n\n get allValues() {\n return this.params.all_values[this.drug];\n }\n\n get numeratorText() {\n return joinNounsWithOr(this.params.numerator_values);\n }\n}\n","import _ from \"lodash\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport {\n accumulateValuesFn,\n uniqPayersFromCustomFields,\n percentString,\n toOneDecimal,\n} from \"../../utilities/charts/chart_utils\";\nimport shrinkWidgetToFit from \"../../utilities/charts/shrink_widget_to_fit\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n static targets = [\n \"rowTitle\",\n \"payersValue\",\n \"payersPercent\",\n \"payersTotal\",\n \"livesValue\",\n \"livesPercent\",\n \"livesTotal\",\n ];\n\n initializeParams() {\n const params = super.initializeParams();\n\n this.enabledCustomFieldValues = params.all_values[this.drug];\n\n return params;\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugInternal(previousDrug) {\n const allOldValues = this.params.all_values[previousDrug];\n const allNewValues = this.params.all_values[this.drug];\n\n const addedValues = _.without(allNewValues, ...allOldValues);\n const removedValues = _.without(allOldValues, ...allNewValues);\n\n this.enabledCustomFieldValues = _.without(\n this.enabledCustomFieldValues.concat(addedValues),\n ...removedValues,\n );\n\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n this.updateValueRows();\n this.updateTotalRow();\n this.updateRowVisibility();\n shrinkWidgetToFit(this.element, this.gridTarget);\n }\n\n updateValueRows() {\n const counts = this.countsByCustomFieldValue();\n const shown = customFieldValue => this.enabledCustomFieldValues.includes(customFieldValue);\n\n this.rowTitleTargets.forEach(target => {\n const customFieldValue = $(target).data(\"custom-field-value\");\n\n $(target).toggleClass(\"line-through\", !shown(customFieldValue));\n });\n\n this.payersValueTargets.forEach(target => {\n const customFieldValue = $(target).data(\"custom-field-value\");\n\n target.innerText = shown(customFieldValue) ? counts[customFieldValue]?.payers : \"\";\n });\n\n this.livesValueTargets.forEach(target => {\n const customFieldValue = $(target).data(\"custom-field-value\");\n const livesCount = counts[customFieldValue]?.lives;\n\n target.innerText = shown(customFieldValue) ? this.livesString(livesCount) : \"\";\n });\n\n const enabledPayerCountSum = _.sum(\n this.enabledCustomFieldValues.map(enabledValue => counts[enabledValue]?.payers),\n );\n const enabledLivesCountSum = _.sum(\n this.enabledCustomFieldValues.map(enabledValue => counts[enabledValue]?.lives),\n );\n\n this.payersPercentTargets.forEach(target => {\n const customFieldValue = $(target).data(\"custom-field-value\");\n\n target.innerText = shown(customFieldValue)\n ? percentString(counts[customFieldValue]?.payers, enabledPayerCountSum)\n : \"\";\n });\n\n this.livesPercentTargets.forEach(target => {\n const customFieldValue = $(target).data(\"custom-field-value\");\n\n target.innerText = shown(customFieldValue)\n ? percentString(counts[customFieldValue]?.lives, enabledLivesCountSum)\n : \"\";\n });\n }\n\n updateTotalRow() {\n const sums = this.uniquePayerLivesCounts();\n\n this.payersTotalTarget.innerText = sums.payers.toLocaleString();\n this.livesTotalTarget.innerText = this.livesString(sums.lives);\n }\n\n updateRowVisibility() {\n this.allCustomFieldTargets.forEach(target => {\n const drug = $(target).data(\"drug\");\n\n $(target).toggleClass(\"hidden\", drug !== this.drug);\n });\n }\n\n toggleCustomFieldValue(event) {\n const customFieldValue = $(event.target).data(\"custom-field-value\");\n\n if (this.enabledCustomFieldValues.includes(customFieldValue)) {\n this.enabledCustomFieldValues = _.without(this.enabledCustomFieldValues, customFieldValue);\n } else {\n this.enabledCustomFieldValues = this.enabledCustomFieldValues.concat(customFieldValue);\n }\n\n this.updateValueRows();\n this.updateTotalRow();\n }\n\n uniquePayerLivesCounts() {\n const counts = { payers: 0, lives: 0 };\n\n this.payerTypesShown.forEach(payerType => {\n const uniquePayers = uniqPayersFromCustomFields(this.params.data[this.drug][payerType]);\n\n counts.payers += accumulateValuesFn(payerType, \"payers\")(uniquePayers);\n counts.lives += accumulateValuesFn(payerType, \"lives\")(uniquePayers);\n });\n\n return counts;\n }\n\n countsByCustomFieldValue() {\n const values = this.enabledCustomFieldValues;\n const counts = Object.fromEntries(values.map(v => [v, { payers: 0, lives: 0 }]));\n\n this.payerTypesShown.forEach(payerType => {\n values.forEach(customFieldValue => {\n const data = this.params.data[this.drug][payerType]?.[customFieldValue];\n\n counts[customFieldValue].payers += accumulateValuesFn(payerType, \"payers\")(data || []);\n counts[customFieldValue].lives += accumulateValuesFn(payerType, \"lives\")(data || []);\n });\n });\n\n return counts;\n }\n\n livesString(count) {\n return count > 0 ? `${toOneDecimal(count).toLocaleString()}m` : \"0\";\n }\n\n get allCustomFieldTargets() {\n return this.rowTitleTargets\n .concat(this.payersValueTargets)\n .concat(this.payersPercentTargets)\n .concat(this.livesValueTargets)\n .concat(this.livesPercentTargets);\n }\n}\n","import _ from \"lodash\";\nimport colors from \"../../utilities/charts/colors\";\nimport USStateChartControllerBase from \"./us_state_chart_controller_base\";\n\nexport default class extends USStateChartControllerBase {\n titleText() {\n const payerType = window.PayerTypeLabels[this.payerType];\n\n return `${this.drug} ${payerType} ${this.params.custom_field}`;\n }\n\n displayValueFromFraction(fraction) {\n const index = _.round(fraction * this.allValues.length);\n\n return this.allValues[index];\n }\n\n colorForDisplayValue(value) {\n return _.values(colors)[_.indexOf(this.allValues, value)];\n }\n\n // This does not currently support prioritized values for multiple payers\n fractionForState(payerType, state) {\n const payersByValue = this.params.data[this.drug]?.[payerType]?.[state];\n\n if (_.isEmpty(payersByValue)) {\n return _.indexOf(this.allValues, \"N/I\") / this.allValues.length;\n } else {\n const value = _.keys(payersByValue)[0];\n const index = _.indexOf(this.allValues, value);\n\n return index / this.allValues.length;\n }\n }\n\n payersForState(payerType, state) {\n const payersByValue = this.params.data[this.drug]?.[payerType]?.[state];\n\n return _.isEmpty(payersByValue) ? [] : _.flatten(_.values(payersByValue));\n }\n\n coverageDetailsAnchor() {\n return \"custom\";\n }\n\n get allValues() {\n return this.params.all_values[this.drug];\n }\n}\n","import _ from \"lodash\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport BarsChartGridBase from \"./bars_chart_grid_base\";\nimport { accumulateValuesFn, payersNoun } from \"../../utilities/charts/chart_utils\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\nimport shrinkWidgetToFit from \"../../utilities/charts/shrink_widget_to_fit\";\nimport colors from \"../../utilities/charts/colors\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n static targets = [\"title\", \"gridTitle\", \"gridFraction\", \"gridPercent\", \"gridChangeIndicator\"];\n\n connect() {\n this.innerClass = new BarsChartGridBase(this);\n super.connect();\n }\n\n initializeParams() {\n const params = super.initializeParams();\n\n this.enabledCustomFieldValues = params.all_values[this.drug];\n\n return params;\n }\n\n toggleCoverageMetricInternal() {\n this.renderChart();\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugInternal(previousDrug) {\n const allOldValues = this.params.all_values[previousDrug];\n const allNewValues = this.params.all_values[this.drug];\n\n const addedValues = _.without(allNewValues, ...allOldValues);\n const removedValues = _.without(allOldValues, ...allNewValues);\n\n this.enabledCustomFieldValues = _.without(\n this.enabledCustomFieldValues.concat(addedValues),\n ...removedValues,\n );\n\n this.renderChart();\n }\n\n toggleCustomFieldValue(event) {\n const customFieldValue = $(event.currentTarget).data(\"custom-field-value\");\n\n if (this.enabledCustomFieldValues.includes(customFieldValue)) {\n this.enabledCustomFieldValues = _.without(this.enabledCustomFieldValues, customFieldValue);\n } else {\n this.enabledCustomFieldValues = this.enabledCustomFieldValues.concat(customFieldValue);\n }\n\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n this.titleTarget.innerText = `${this.drug} ${this.params.custom_field}`;\n this.innerClass.renderGrid();\n this.updateRowVisibility();\n shrinkWidgetToFit(this.element, this.element.children[0]);\n }\n\n currentAndPriorDataForTarget(target) {\n const output = {\n current: { yes: 0, all: 0 },\n prior: { yes: 0, all: 0 },\n };\n\n this.payerTypesShown.forEach(payerType => {\n this.enabledCustomFieldValues.forEach(customFieldValue => {\n const data = this.params.data[this.drug][payerType]?.[customFieldValue] || [];\n const count = accumulateValuesFn(payerType, this.coverageMetric)(data);\n\n output.current.all += count;\n\n if (customFieldValue === target.dataset.customFieldValue) {\n output.current.yes += count;\n }\n });\n });\n\n return output;\n }\n\n targetIsDisabled(target) {\n return !this.enabledCustomFieldValues.includes(target.dataset.customFieldValue);\n }\n\n updateRowVisibility() {\n const isOtherDrug = t => t.dataset.drug !== this.drug;\n\n this.gridTitleTargets.concat(this.gridPercentTargets).forEach(target => {\n $(target).toggleClass(\"hidden\", isOtherDrug(target));\n });\n\n this.gridFractionTargets.forEach(target => {\n $(target).toggleClass(\"hidden\", isOtherDrug(target));\n $(target).toggleClass(\"invisible\", this.targetIsDisabled(target));\n });\n }\n\n onBarClick(event) {\n const customFieldValue = $(event.currentTarget).data(\"custom-field-value\");\n const nouns = payersNoun(this.payerTypesShown);\n\n const payerIdsByType = {};\n\n this.payerTypesShown.forEach(payerType => {\n const payerIds = this.params.data[this.drug][payerType]?.[customFieldValue];\n\n if (!_.isEmpty(payerIds)) {\n payerIdsByType[payerType] = payerIds;\n }\n });\n\n const title = `${nouns} with ${customFieldValue} for ${this.drug} ${this.params.custom_field}`;\n\n showPayersModal(this.drug, title, payerIdsByType);\n }\n\n onBarRemainderClick(event) {\n const customFieldValue = $(event.currentTarget).data(\"custom-field-value\");\n const nouns = payersNoun(this.payerTypesShown);\n\n const payerIdsByType = {};\n\n this.payerTypesShown.forEach(payerType => {\n _.without(this.enabledCustomFieldValues, customFieldValue).forEach(otherFieldValue => {\n const payerIds = this.params.data[this.drug][payerType]?.[otherFieldValue];\n\n if (!_.isEmpty(payerIds)) {\n payerIdsByType[payerType] ||= [];\n payerIdsByType[payerType].push(...payerIds);\n }\n });\n });\n\n const title = `${nouns} without ${customFieldValue} for ${this.drug} ${this.params.custom_field}`;\n\n showPayersModal(this.drug, title, payerIdsByType);\n }\n\n get allGridTargets() {\n return this.gridTitleTargets\n .concat(this.gridFractionTargets)\n .concat(this.gridChangeIndicatorTargets)\n .concat(this.gridPercentTargets);\n }\n\n get colorsByCoverageMetric() {\n return {\n payers: colors.magenta,\n lives: colors.teal,\n };\n }\n}\n","import _ from \"lodash\";\nimport ChartControllerBase from \"./chart_controller_base\";\n\nexport default class extends ChartControllerBase {\n static targets = [];\n\n connect() {\n this.payerTypeInputTargets = $(\"input[type=checkbox][name=payer_types]\")\n .toArray()\n .filter(target => this.payerTypesIncluded.includes(target.value));\n\n $(this.payerTypeInputTargets).on(\"change\", event => this.togglePayerTypeFromButton(event));\n\n this.drugInputTargets = $(\"input[type=checkbox][name=drugs]\")\n .toArray()\n .filter(target => this.drugsIncluded.includes(target.value));\n\n $(this.drugInputTargets).on(\"change\", event => this.toggleDrugFromButton(event));\n\n this.coverageInputTargets = $(\"input[name=coverage_metric_toggle]\").toArray();\n $(this.coverageInputTargets).on(\"change\", event => this.toggleCoverageMetric(event));\n\n $(\"#account_manager\").on(\"change\", () => this.updateShownPayers());\n $(\"#region\").on(\"change\", () => this.updateShownPayers());\n\n this.params = this.initializeParams();\n this.chart = this.renderChart();\n }\n\n togglePayerTypeFromButton(event) {\n const payerType = event.target.value;\n\n if (this.payerTypesIncluded.includes(payerType)) {\n this.payerTypesShown = _.xor(this.payerTypesShown, [payerType]).sort();\n\n this.togglePayerTypesInternal(event.target.value, event.target.checked);\n\n this.chart?.update();\n }\n }\n\n togglePayerTypeFromChart(event) {\n const { payerType } = event.target.dataset;\n const button = this.payerTypeInputTargets.find(target => target.value === payerType);\n\n $(button).trigger(\"click\");\n }\n\n toggleDrugFromChart(event) {\n const { drug } = event.target.dataset;\n const button = this.drugInputTargets.find(target => target.value === drug);\n\n $(button).trigger(\"click\");\n }\n\n toggleDrugFromButton(event) {\n const drug = event.target.value;\n\n if (this.drugsIncluded.includes(drug)) {\n this.drugs = _.xor(this.drugs, [drug]).sort();\n\n this.toggleDrugsInternal();\n\n this.chart?.update();\n }\n }\n\n toggleCoverageMetric() {\n this.toggleCoverageMetricInternal();\n\n this.chart?.update();\n }\n\n updateShownPayers() {\n this.updateShownPayersInternal();\n\n this.chart?.update();\n }\n\n initializeParams() {\n const params = JSON.parse(this.data.get(\"chartData\")) || {};\n\n if (this.data.get(\"staticMode\")) {\n this.payerTypesShown = this.data.get(\"payer-types-included\").split(\"|\");\n this.drugs = this.data.get(\"drugs-included\").split(\"|\");\n } else {\n this.payerTypesShown = this.payerTypeInputTargets\n .filter(target => target.checked)\n .map(target => target.value);\n\n this.drugs = _.isEmpty(this.drugInputTargets)\n ? this.drugsIncluded\n : this.drugInputTargets.filter(target => target.checked).map(target => target.value);\n }\n\n return params;\n }\n\n togglePayerTypesInternal() {\n // Implement in subclass if needed\n }\n\n toggleDrugsInternal() {\n // Implement in subclass if needed\n }\n}\n","import _ from \"lodash\";\nimport ManyDrugsManyPayerTypesControllerBase from \"./many_drugs_many_payer_types_controller_base\";\nimport BarsChartGridBase from \"./bars_chart_grid_base\";\nimport shrinkWidgetToFit from \"../../utilities/charts/shrink_widget_to_fit\";\nimport colors from \"../../utilities/charts/colors\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\nimport { formatPayersLivesTitle, accumulateValuesFn } from \"../../utilities/charts/chart_utils\";\n\nexport default class extends ManyDrugsManyPayerTypesControllerBase {\n static targets = [\"title\", \"gridTitle\", \"gridFraction\", \"gridPercent\", \"gridChangeIndicator\"];\n\n connect() {\n this.innerClass = new BarsChartGridBase(this);\n super.connect();\n }\n\n toggleCoverageMetricInternal() {\n this.renderChart();\n }\n\n togglePayerTypesInternal() {\n this.renderChart();\n }\n\n toggleDrugsInternal() {\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n this.renderTitle();\n this.innerClass.renderGrid();\n this.setBarColors();\n shrinkWidgetToFit(this.element, this.element.children[0]);\n }\n\n renderTitle() {\n const nouns = formatPayersLivesTitle(this.coverageMetric, this.payerTypesShown);\n\n this.titleTarget.innerText = `${nouns} with Confirmed Access`;\n }\n\n setBarColors() {\n this.gridPercentTargets.forEach(target => {\n $(target)\n .find(\".bar\")\n .css({ backgroundColor: this.colorForDrug(target.dataset.drug) });\n });\n }\n\n currentAndPriorDataForTarget(target) {\n const { drug, payerType } = target.dataset;\n\n if (payerType) {\n return this.currentAndPriorDataForParams(payerType, drug);\n } else {\n const output = {\n prior: { yes: 0, all: 0 },\n current: { yes: 0, all: 0 },\n };\n\n this.payerTypesShown.forEach(shownPayerType => {\n const { prior, current } = this.currentAndPriorDataForParams(shownPayerType, drug);\n\n output.prior.yes += prior.yes;\n output.prior.all += prior.all;\n output.current.yes += current.yes;\n output.current.all += current.all;\n });\n\n return output;\n }\n }\n\n currentAndPriorDataForParams(payerType, drug) {\n const [prior, current] = this.params.data[payerType][drug];\n\n const priorCounts = prior.map(accumulateValuesFn(payerType, this.coverageMetric));\n const currentCounts = current.map(accumulateValuesFn(payerType, this.coverageMetric));\n\n return {\n prior: { yes: priorCounts[0], all: _.sum(priorCounts) },\n current: { yes: currentCounts[0], all: _.sum(currentCounts) },\n };\n }\n\n targetIsDisabled(target) {\n const { drug, payerType } = target.dataset;\n\n // !!datum here converts undefined to false, avoiding toggleClass(..., undefined)\n // which regresses to jquery's on-argument \"invert the state\" instead of \"set it to this\".\n const payerTypeDisabled = !!payerType && !this.payerTypesShown.includes(payerType);\n const drugDisabled = !!drug && !this.drugs.includes(drug);\n\n return payerTypeDisabled || drugDisabled;\n }\n\n colorForDrug(drug) {\n const priorityColors = [colors.mauve, colors.goldenrod, colors.indigo];\n const otherColors = _.values(colors).filter(c => !priorityColors.includes(c));\n const colorList = priorityColors.concat(...otherColors);\n\n const drugIndex = this.drugsIncluded.indexOf(drug);\n\n return colorList[drugIndex % colorList.length];\n }\n\n onBarClick(event) {\n const { drug } = event.target.dataset;\n\n let payerTypes = this.payerTypesShown;\n\n if (event.target.dataset.payerType) {\n payerTypes = [event.target.dataset.payerType];\n }\n\n payerTypes = payerTypes.map(p =>\n p === \"medicare_advantage_payers\" ? \"medicare_advantage\" : p,\n );\n\n const payerIdsFor = (payerType, datasetIndex) =>\n _.flatMap(this.params.data[payerType][drug][datasetIndex][0].map(d => d.payer));\n\n const payerIds = {};\n const extraParams = {};\n\n if (this.showChangesFromPrevious) {\n extraParams.changedCoverage = {};\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n extraParams.changeDisplayMode = \"access_status\";\n }\n\n payerTypes.forEach(payerType => {\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(payerType, 1);\n const priorPayers = payerIdsFor(payerType, 0);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage[payerType] = changedPayers.map(payer => ({ payer, drug }));\n } else {\n payerIds[payerType] = payerIdsFor(payerType, 1);\n }\n });\n\n showPayersModal(drug, \"confirmed\", payerIds, extraParams);\n }\n\n onBarRemainderClick(event) {\n const { drug } = event.target.dataset;\n\n let payerTypes = this.payerTypesShown;\n\n if (event.target.dataset.payerType) {\n payerTypes = [event.target.dataset.payerType];\n }\n\n payerTypes = payerTypes.map(p =>\n p === \"medicare_advantage_payers\" ? \"medicare_advantage\" : p,\n );\n\n const payerIdsFor = (payerType, datasetIndex) =>\n _.flatMap(this.params.data[payerType][drug][datasetIndex].slice(1), ds =>\n ds.map(d => d.payer),\n );\n\n const payerIds = {};\n const extraParams = {};\n\n if (this.showChangesFromPrevious) {\n extraParams.changedCoverage = {};\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n extraParams.changeDisplayMode = \"access_status\";\n }\n\n payerTypes.forEach(payerType => {\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(payerType, 1);\n const priorPayers = payerIdsFor(payerType, 0);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage[payerType] = changedPayers.map(payer => ({\n payer,\n drug: this.drug,\n }));\n } else {\n payerIds[payerType] = payerIdsFor(payerType, 1);\n }\n });\n\n showPayersModal(drug, \"unconfirmed\", payerIds, extraParams);\n }\n}\n","import _ from \"lodash\";\nimport OnePayerTypeManyDrugsChartControllerBase from \"./one_payer_type_many_drugs_chart_controller_base\";\nimport BarsChartGridBase from \"./bars_chart_grid_base\";\nimport { formatPayersLivesTitle, accumulateValuesFn } from \"../../utilities/charts/chart_utils\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\nimport shrinkWidgetToFit from \"../../utilities/charts/shrink_widget_to_fit\";\n\nexport default class extends OnePayerTypeManyDrugsChartControllerBase {\n static targets = [\n \"title\",\n \"gridTitle\",\n \"gridFraction\",\n \"gridPercent\",\n \"gridChangeIndicator\",\n \"payerTypeName\",\n \"fraction\",\n \"percent\",\n ];\n\n connect() {\n this.innerClass = new BarsChartGridBase(this);\n super.connect();\n }\n\n toggleCoverageMetricInternal() {\n this.renderChart();\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugsInternal() {\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n this.renderTitle();\n this.innerClass.renderGrid();\n shrinkWidgetToFit(this.element, this.element.children[0]);\n }\n\n renderTitle() {\n const nouns = formatPayersLivesTitle(this.coverageMetric, this.payerType);\n const payerTypes = window.PayerTypeLabels[this.payerType];\n\n this.titleTarget.innerText = `${nouns} with Confirmed Access for ${payerTypes}`;\n }\n\n currentAndPriorDataForTarget(target) {\n const [prior, current] = this.params.data[this.payerType]?.[target.dataset.drug] || [[], []];\n\n const priorValues = prior.map(accumulateValuesFn(this.payerType, this.coverageMetric));\n const currentValues = current.map(accumulateValuesFn(this.payerType, this.coverageMetric));\n\n return {\n current: {\n yes: currentValues[0] || 0,\n all: _.sum(currentValues),\n },\n prior: {\n yes: priorValues[0] || 0,\n all: _.sum(priorValues),\n },\n };\n }\n\n targetIsDisabled(target) {\n const { drug, payerType } = target.dataset;\n\n // !!datum here converts undefined to false, avoiding toggleClass(..., undefined)\n // which regresses to jquery's on-argument \"invert the state\" instead of \"set it to this\".\n const payerTypeDisabled = !!payerType && !this.payerTypesShown.includes(payerType);\n const drugDisabled = !!drug && !this.drugs.includes(drug);\n\n return payerTypeDisabled || drugDisabled;\n }\n\n onBarClick(event) {\n const drug = $(event.target).data(\"drug\");\n const payerType =\n this.payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : this.payerType;\n\n const payerIds = {};\n const extraParams = {};\n\n const payerIdsFor = datasetIndex =>\n this.params.data[payerType][drug][datasetIndex][0].map(d => d.payer);\n\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(1);\n const priorPayers = payerIdsFor(0);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage = { [payerType]: changedPayers.map(payer => ({ payer, drug })) };\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n extraParams.changeDisplayMode = \"access_status\";\n } else {\n payerIds[payerType] = payerIdsFor(1);\n }\n\n showPayersModal(drug, \"confirmed\", payerIds, extraParams);\n }\n\n onBarRemainderClick(event) {\n const drug = $(event.target).data(\"drug\");\n const payerType =\n this.payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : this.payerType;\n\n const payerIds = {};\n const extraParams = {};\n\n const payerIdsFor = datasetIndex =>\n _.flatMap(this.params.data[payerType][drug][datasetIndex].slice(1), ds =>\n ds.map(d => d.payer),\n );\n\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(1);\n const priorPayers = payerIdsFor(0);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage = {\n [payerType]: changedPayers.map(payer => ({ payer, drug: this.drug })),\n };\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n } else {\n payerIds[payerType] = payerIdsFor(1);\n }\n\n showPayersModal(drug, \"unconfirmed\", payerIds, extraParams);\n }\n\n onDrugNameClick(event) {\n const drug = event.currentTarget.dataset.drug;\n const button = this.drugInputTargets.find(target => target.value === drug);\n\n $(button).trigger(\"click\");\n }\n}\n","import Chart from \"chart.js/auto\";\nimport ChartDataLabels from \"chartjs-plugin-datalabels\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport OnePayerTypeManyDrugsChartControllerBase from \"./one_payer_type_many_drugs_chart_controller_base\";\nimport colors, { variantLightBlue } from \"../../utilities/charts/colors\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\nimport SymbolaArrows from \"../../utilities/charts/symbola_arrows\";\nimport {\n formatPayersLivesTitle,\n accumulateValuesFn,\n onHoverPointer,\n orderedAccessStatusNames,\n payersNoun,\n toOneDecimal,\n withinOneDecimalP,\n} from \"../../utilities/charts/chart_utils\";\n\nexport default class extends OnePayerTypeManyDrugsChartControllerBase {\n connect() {\n super.connect();\n\n if (this.showChangesFromPrevious) {\n SymbolaArrows.onload(() => this.chart.update());\n }\n }\n\n toggleDrugsInternal() {\n this.chart.data.datasets.forEach(dataset => {\n dataset.hidden = !this.drugs.includes(dataset.drug);\n });\n }\n\n togglePayerTypeInternal() {\n this.chart.options.plugins.subtitle.text = this.subtitle();\n this.updateChartData();\n }\n\n toggleCoverageMetricInternal() {\n this.chart.options.plugins.subtitle.text = this.subtitle();\n this.updateChartData();\n }\n\n updateShownPayersInternal() {\n this.updateChartData();\n }\n\n updateChartData() {\n this.forEachDrug((data, drug) => {\n this.chart.data.datasets.find(set => set.drug === drug).data = data;\n });\n }\n\n renderChart() {\n return new Chart(this.appendCanvas(), {\n type: \"bar\",\n plugins: [ChartDataLabels],\n options: {\n responsive: true,\n maintainAspectRatio: false,\n animation: !this.inStaticMode,\n scales: {\n x: {\n grid: { display: false },\n ticks: {\n display: !this.inStaticMode,\n font: { size: 11 },\n },\n },\n y: {\n display: false,\n },\n },\n plugins: {\n legend: {\n display: !this.inStaticMode,\n position: \"bottom\",\n onClick: (_event, legendItem) => this.toggleDrugFromChart(legendItem),\n labels: {\n boxWidth: 12,\n },\n },\n title: {\n display: true,\n text: \"Access Status Report\",\n color: \"black\",\n font: { size: 13 },\n },\n subtitle: {\n display: !this.inStaticMode,\n text: this.subtitle(),\n color: \"black\",\n font: { size: 13 },\n padding: { bottom: 10 },\n },\n tooltip: {\n callbacks: {\n label: context => this.tooltipLabelText(context),\n },\n },\n datalabels: {\n display: !this.inStaticMode,\n color: c => this.colorForDelta(this.deltaFromChartContext(c)),\n font: c => (this.deltaFromChartContext(c) !== 0 ? { weight: \"bold\" } : {}),\n anchor: \"end\",\n align: \"end\",\n textAlign: \"center\",\n padding: c => (this.deltaFromChartContext(c) > 0 ? 0 : 4),\n formatter: (v, c) => this.dataLabelWithDelta(v, c),\n listeners: {\n click: event => this.triggerModalFromDatalabel(event),\n },\n },\n },\n onClick: event => this.triggerModalFromChart(event),\n onHover: onHoverPointer,\n },\n data: {\n labels: [\n [\"Confirmed\", \"Access\"],\n \"Case-by-Case\",\n \"Not Covered\",\n [\"Access\", \"Undetermined\"],\n ],\n datasets: this.forEachDrug((data, drug, i) => ({\n drug,\n label: drug,\n data,\n borderWidth: 1,\n barPercentage: 1,\n ...this.dataColors[i % 4],\n })),\n },\n });\n }\n\n deltaFromChartContext(context) {\n const drug = context.dataset.drug;\n const format = accumulateValuesFn(this.payerType, this.coverageMetric);\n\n const priorValue = format(this.params.data[this.payerType][drug][0][context.dataIndex]);\n const currentValue = format(this.params.data[this.payerType][drug][1][context.dataIndex]);\n\n if (!this.showChangesFromPrevious || withinOneDecimalP(priorValue, currentValue)) {\n return 0;\n } else {\n return currentValue - priorValue;\n }\n }\n\n dataLabelWithDelta(value, context) {\n const delta = this.deltaFromChartContext(context);\n\n if (delta === 0) {\n return value;\n } else if (delta > 0) {\n return [value, SymbolaArrows.up];\n } else {\n return [SymbolaArrows.down, value];\n }\n }\n\n colorForDelta(delta) {\n if (delta === 0) {\n return \"black\";\n } else if (delta > 0) {\n return \"#6b7e38\"; // text-green-500\n } else {\n return \"#e02424\"; // text-red\n }\n }\n\n forEachDrug(callback) {\n const format = x => toOneDecimal(accumulateValuesFn(this.payerType, this.coverageMetric)(x));\n\n return _.toPairs(this.params.data[this.payerType]).map(([drug, [, data]], index) =>\n callback(data.map(format), drug, index),\n );\n }\n\n subtitle() {\n const date = moment(this.params.current_date).format(\"MMMM YYYY\");\n\n return `${formatPayersLivesTitle(this.coverageMetric, this.payerType)} (${date})`;\n }\n\n tooltipLabelText(context) {\n const standardLine = `${context.dataset.label}: ${context.parsed.y}`;\n const delta = this.deltaFromChartContext(context);\n\n if (delta === 0) {\n return standardLine;\n } else {\n const deltaWord = delta > 0 ? \"Increased\" : \"Decreased\";\n\n return [standardLine, `${deltaWord}: ${toOneDecimal(Math.abs(delta))}`];\n }\n }\n\n triggerModalFromChart(event) {\n const clickLocation = parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n this.triggerModalInternal(clickLocation.datasetIndex, clickLocation.index);\n }\n\n triggerModalFromDatalabel(e) {\n this.triggerModalInternal(e.datasetIndex, e.dataIndex);\n }\n\n triggerModalInternal(drugIndex, accessStatusIndex) {\n const payerType =\n this.payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : this.payerType;\n const drug = this.drugs[drugIndex];\n const accessStatus = orderedAccessStatusNames[accessStatusIndex];\n\n const payerIdsFor = datasetIndex =>\n this.params.data[payerType][drug][datasetIndex][accessStatusIndex].map(d => d.payer);\n\n const title = `${payersNoun(payerType)} with ${accessStatus} for ${drug}`;\n\n const payerIds = {};\n const extraParams = { accessStatus };\n\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(1);\n const priorPayers = payerIdsFor(0);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage = { [payerType]: changedPayers.map(payer => ({ payer, drug })) };\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n extraParams.changeDisplayMode = \"access_status\";\n } else {\n payerIds[payerType] = payerIdsFor(1);\n }\n\n showPayersModal(drug, title, payerIds, extraParams);\n }\n\n get dataColors() {\n return [\n { backgroundColor: colors.teal, borderColor: \"#358F9F\" },\n { backgroundColor: colors.orange, borderColor: \"#A5502B\" },\n { backgroundColor: colors.magenta, borderColor: \"#77446F\" },\n variantLightBlue,\n ];\n }\n}\n","import Chart from \"chart.js/auto\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport OnePayerTypeManyDrugsChartControllerBase from \"./one_payer_type_many_drugs_chart_controller_base\";\nimport colors, { variantLightBlue } from \"../../utilities/charts/colors\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\nimport {\n accumulateValuesFn,\n coverageMetricNoun,\n omitMissingOverTimeItems,\n maxOverTimeX,\n payersNoun,\n percent,\n relativeDateOverTimeCallbacks,\n} from \"../../utilities/charts/chart_utils\";\n\nexport default class extends OnePayerTypeManyDrugsChartControllerBase {\n togglePayerTypeInternal() {\n this.updateChartData();\n }\n\n toggleCoverageMetricInternal() {\n this.updateChartData();\n }\n\n toggleDrugsInternal() {\n this.chart.data.datasets.forEach(dataset => {\n dataset.hidden = !this.drugs.includes(dataset.drug);\n });\n }\n\n updateShownPayersInternal() {\n this.updateChartData();\n }\n\n updateChartData() {\n this.chart.options.plugins.title.text = this.formatTitle();\n\n this.forEachDrug((data, drug) => {\n this.chart.data.datasets.find(set => set.drug === drug).data = this.formatData(data);\n });\n }\n\n renderChart() {\n const formattingCallbacks = relativeDateOverTimeCallbacks(this);\n\n return new Chart(this.appendCanvas(), {\n type: \"scatter\",\n options: {\n responsive: true,\n maintainAspectRatio: false,\n animation: !this.inStaticMode,\n showLine: true,\n interaction: {\n intersect: false,\n mode: \"x\",\n },\n scales: {\n y: {\n title: {\n display: !this.inStaticMode,\n text: this.formatYAxisTitle(),\n },\n grid: {\n display: false,\n drawBorder: false,\n },\n suggestedMin: 0,\n suggestedMax: 100,\n ticks: {\n display: !this.inStaticMode,\n callback: value => `${value}%`,\n },\n },\n x: {\n title: {\n display: !this.inStaticMode,\n text: \"Months Post Launch\",\n padding: {\n top: 4,\n bottom: 8,\n },\n },\n bounds: \"data\",\n ticks: {\n display: !this.inStaticMode,\n callback: formattingCallbacks.ticks,\n maxTicksLimit: maxOverTimeX(this),\n },\n },\n },\n plugins: {\n legend: {\n display: !this.inStaticMode,\n position: \"bottom\",\n labels: { usePointStyle: true },\n onClick: (_event, legendItem) => this.toggleDrugFromChart(legendItem),\n },\n title: {\n display: true,\n text: this.formatTitle(),\n color: \"black\",\n font: { size: 13 },\n },\n tooltip: {\n usePointStyle: true,\n titleAlign: \"center\",\n filter: formattingCallbacks.tooltip.filter,\n callbacks: formattingCallbacks.tooltip,\n },\n },\n onClick: event => this.triggerModal(event),\n },\n data: {\n labels: this.drugs,\n datasets: this.forEachDrug((data, drug, i) => ({\n drug,\n label: drug,\n data: this.formatData(data),\n ...this.dataStyle[i],\n pointRadius: 5,\n pointBorderColor: \"black\",\n })),\n },\n });\n }\n\n formatData(dataForPayerType) {\n const accumulate = accumulateValuesFn(this.payerType, this.coverageMetric);\n const presentData = omitMissingOverTimeItems(dataForPayerType);\n const minDateInSet = moment.min(presentData.map(d => moment(d.date)));\n\n const data = presentData.map(datum => {\n const x = moment(datum.date).diff(minDateInSet, \"days\");\n const y = percent(accumulate(datum.confirmed), accumulate(datum.all));\n\n return { x, y, date: datum.date };\n });\n\n return _.sortBy(data, point => point.x);\n }\n\n forEachDrug(callback) {\n return _.toPairs(this.params.data).map(([drug, data], index) =>\n callback(data[this.payerType], drug, index),\n );\n }\n\n formatTitle() {\n const adjective = window.PayerTypeLabels[this.payerType];\n const nouns = this.coverageMetricText;\n\n return `Comparison of Confirmed Access By % of ${adjective} ${nouns}`;\n }\n\n formatYAxisTitle() {\n return `% of ${this.coverageMetricText} with Confirmed Access`;\n }\n\n triggerModal(event) {\n const clickLocation = parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n const dataset = this.chart.data.datasets[clickLocation.datasetIndex];\n\n const drug = dataset.drug;\n const payers = this.params.data[drug][this.payerType][clickLocation.index].confirmed;\n\n const title = `${payersNoun(this.payerType)} with Confirmed Access for ${drug}`;\n\n const maxIndex = dataset.data.length - 1;\n\n if (clickLocation.index === maxIndex) {\n showPayersModal(drug, title, { [this.payerType]: payers });\n } else {\n const timestamp = dataset.data[clickLocation.index].date;\n\n showPayersModal(drug, title, { [this.payerType]: payers }, { timestamp });\n }\n }\n\n get coverageMetricText() {\n return coverageMetricNoun(this.coverageMetric, this.payerType);\n }\n\n get dataStyle() {\n return [\n { backgroundColor: colors.teal, borderColor: colors.teal, pointStyle: \"rect\" },\n { backgroundColor: colors.magenta, borderColor: colors.magenta, pointStyle: \"rectRot\" },\n { backgroundColor: colors.orange, borderColor: colors.orange, pointStyle: \"triangle\" },\n { ...variantLightBlue, pointStyle: \"circle\" },\n { backgroundColor: colors.mauve, borderColor: colors.mauve, pointStyle: \"rectRounded\" },\n ];\n }\n}\n","import _ from \"lodash\";\nimport OnePayerTypeManyDrugsChartControllerBase from \"./one_payer_type_many_drugs_chart_controller_base\";\nimport ChartControllerWrapper from \"./payers_v_lives_chart_controller_base\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\nimport SymbolaArrows from \"../../utilities/charts/symbola_arrows\";\nimport {\n accumulateValuesFn,\n payersNoun,\n percent,\n withinOneDecimalP,\n} from \"../../utilities/charts/chart_utils\";\n\nexport default class extends OnePayerTypeManyDrugsChartControllerBase {\n connect() {\n this.innerClass = new ChartControllerWrapper(this);\n super.connect();\n\n if (this.showChangesFromPrevious) {\n SymbolaArrows.onload(() => this.chart.update());\n }\n }\n\n togglePayerTypeInternal() {\n this.chart.options.plugins.title.text = this.titleText;\n\n this.innerClass.updateChartData();\n }\n\n toggleDrugsInternal() {\n this.innerClass.updateChartData();\n }\n\n updateShownPayersInternal() {\n this.innerClass.updateChartData();\n }\n\n formatData(coverageMetric) {\n return this.drugs.map(drug => {\n const currentData = this.params.data[this.payerType][drug][1];\n const currentCounts = currentData.map(accumulateValuesFn(this.payerType, coverageMetric));\n const currentPercent = percent(currentCounts[0], _.sum(currentCounts));\n\n return { x: currentPercent, y: drug };\n });\n }\n\n deltaFromChartContext(context) {\n const drug = this.drugs[context.dataIndex];\n const coverageMetric = context.dataset.stack;\n\n const [priorData, currentData] = this.params.data[this.payerType][drug];\n\n const priorCounts = priorData.map(accumulateValuesFn(this.payerType, coverageMetric));\n const currentCounts = currentData.map(accumulateValuesFn(this.payerType, coverageMetric));\n\n const priorPercent = percent(priorCounts[0], _.sum(priorCounts));\n const currentPercent = percent(currentCounts[0], _.sum(currentCounts));\n\n if (this.showChangesFromPrevious && !withinOneDecimalP(priorPercent, currentPercent)) {\n return currentPercent - priorPercent;\n } else {\n return 0;\n }\n }\n\n showModal(event, alreadyParsed) {\n const clickLocation = alreadyParsed ? event : parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n const payerType =\n this.payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : this.payerType;\n\n const drug = this.drugs[clickLocation.index];\n\n const payerIds = {};\n const extraParams = {};\n\n const payerIdsFor = datasetIndex =>\n this.params.data[payerType][drug][datasetIndex][0].map(d => d.payer);\n\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(1);\n const priorPayers = payerIdsFor(0);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage = { [payerType]: changedPayers.map(payer => ({ payer, drug })) };\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n extraParams.changeDisplayMode = \"access_status\";\n } else {\n payerIds[payerType] = payerIdsFor(1);\n }\n\n showPayersModal(drug, \"confirmed\", payerIds, extraParams);\n }\n\n renderChart() {\n return this.innerClass.renderChart();\n }\n\n get titleText() {\n return `Uptake ${payersNoun(this.payerType)} v. Lives - All Products`;\n }\n}\n","import _ from \"lodash\";\nimport ChartControllerBase from \"./chart_controller_base\";\n\nexport default class extends ChartControllerBase {\n static targets = [];\n\n connect() {\n this.payerTypeInputTargets = $(\"input[type=checkbox][name=payer_types]\")\n .toArray()\n .filter(target => this.payerTypesIncluded.includes(target.value));\n\n $(this.payerTypeInputTargets).on(\"change\", event => this.togglePayerTypeFromButton(event));\n\n if (!this.isFixedDrug) {\n this.drugInputTargets = $(\"input[type=radio][name=drug]\").toArray();\n $(this.drugInputTargets).on(\"change\", event => this.toggleDrug(event));\n }\n\n this.coverageInputTargets = $(\"input[name=coverage_metric_toggle]\").toArray();\n $(this.coverageInputTargets).on(\"change\", event => this.toggleCoverageMetric(event));\n\n $(\"#account_manager\").on(\"change\", () => this.updateShownPayers());\n $(\"#region\").on(\"change\", () => this.updateShownPayers());\n\n this.params = this.initializeParams();\n this.chart = this.renderChart();\n }\n\n togglePayerTypeFromChart(legendItem) {\n const { payerType } = this.chart.data.datasets[legendItem.datasetIndex];\n const button = this.payerTypeInputTargets.find(target => target.value === payerType);\n\n $(button).trigger(\"click\");\n }\n\n togglePayerTypeFromButton(event) {\n const payerType = event.target.value;\n\n if (this.payerTypesIncluded.includes(payerType)) {\n this.payerTypesShown = _.xor(this.payerTypesShown, [payerType]).sort();\n\n this.togglePayerTypeInternal(event.target.value, event.target.checked);\n\n this.chart?.update();\n }\n }\n\n toggleCoverageMetric() {\n this.toggleCoverageMetricInternal();\n\n this.chart?.update();\n }\n\n toggleDrug(event) {\n const previousDrug = this.drug;\n\n this.drug = event.target.value;\n\n this.toggleDrugInternal(previousDrug);\n\n this.chart?.update();\n }\n\n updateShownPayers() {\n this.updateShownPayersInternal();\n\n this.chart?.update();\n }\n\n initializeParams() {\n const params = JSON.parse(this.data.get(\"chartData\")) || {};\n\n if (this.inStaticMode) {\n this.payerTypesShown = this.data.get(\"payer-types-included\").split(\"|\");\n this.drug = _.first(this.drugsIncluded);\n } else {\n this.payerTypesShown = this.payerTypeInputTargets\n .filter(target => target.checked)\n .map(target => target.value);\n\n this.drug = this.isFixedDrug\n ? this.drugsIncluded[0]\n : this.drugInputTargets.find(target => target.checked).value;\n }\n\n return params;\n }\n\n togglePayerTypeInternal() {\n // Implement in subclass if needed\n }\n\n toggleCoverageMetricInternal() {\n // Implement in subclass if needed\n }\n\n toggleDrugInternal() {\n // Implement in subclass if needed\n }\n}\n","import _ from \"lodash\";\nimport { payersNoun } from \"../../utilities/charts/chart_utils\";\nimport ChartControllerBase from \"./chart_controller_base\";\n\nexport default class extends ChartControllerBase {\n static targets = [];\n\n connect() {\n this.payerTypeInputTargets = $(\"input[type=radio][name=payer_type]\")\n .toArray()\n .filter(target => this.payerTypesIncluded.includes(target.value));\n\n $(this.payerTypeInputTargets).on(\"change\", event => this.togglePayerTypeFromButton(event));\n\n if (!this.isFixedDrug) {\n this.drugInputTargets = $(\"input[type=radio][name=drug]\").toArray();\n $(this.drugInputTargets).on(\"change\", event => this.toggleDrug(event));\n }\n\n this.coverageInputTargets = $(\"input[name=coverage_metric_toggle]\").toArray();\n $(this.coverageInputTargets).on(\"change\", event => this.toggleCoverageMetric(event));\n\n $(\"#account_manager\").on(\"change\", () => this.updateShownPayers());\n $(\"#region\").on(\"change\", () => this.updateShownPayers());\n\n this.params = this.initializeParams();\n this.chart = this.renderChart();\n }\n\n togglePayerTypeFromButton(event) {\n this.payerType = event.target.value;\n\n this.togglePayerTypeInternal(event.target.value, event.target.checked);\n\n this.chart?.update();\n }\n\n toggleCoverageMetric() {\n this.toggleCoverageMetricInternal();\n\n this.chart?.update();\n }\n\n toggleDrug(event) {\n const previousDrug = this.drug;\n\n this.drug = event.target.value;\n\n this.toggleDrugInternal(previousDrug);\n\n this.chart?.update();\n }\n\n updateShownPayers() {\n this.updateShownPayersInternal();\n\n this.chart?.update();\n }\n\n initializeParams() {\n const params = JSON.parse(this.data.get(\"chartData\")) || {};\n\n if (this.inStaticMode) {\n this.payerType = _.first(this.payerTypesIncluded);\n this.drug = _.first(this.drugsIncluded);\n } else {\n const initialPayerType = this.payerTypeInputTargets.find(target => target.checked)?.value;\n\n this.payerType = initialPayerType || this.payerTypesIncluded[0];\n\n this.drug = this.isFixedDrug\n ? this.drugsIncluded[0]\n : this.drugInputTargets.find(target => target.checked).value;\n }\n\n return params;\n }\n\n get subtitles() {\n return {\n payers: payersNoun(this.payerType),\n lives: \"Millions of Lives\",\n };\n }\n\n togglePayerTypeInternal() {\n // Implement in subclass if needed\n }\n\n toggleCoverageMetricInternal() {\n // Implement in subclass if needed\n }\n\n toggleDrugInternal() {\n // Implement in subclass if needed\n }\n}\n","import _ from \"lodash\";\nimport { payersNoun } from \"../../utilities/charts/chart_utils\";\nimport ChartControllerBase from \"./chart_controller_base\";\n\nexport default class extends ChartControllerBase {\n connect() {\n this.payerTypeInputTargets = $(\"input[type=radio][name=payer_type]\")\n .toArray()\n .filter(target => this.payerTypesIncluded.includes(target.value));\n\n $(this.payerTypeInputTargets).on(\"change\", event => this.togglePayerTypeFromButton(event));\n\n this.drugInputTargets = $(\"input[type=checkbox][name=drugs]\")\n .toArray()\n .filter(target => this.drugsIncluded.includes(target.value));\n\n $(this.drugInputTargets).on(\"change\", event => this.toggleDrugFromButton(event));\n\n this.coverageInputTargets = $(\"input[name=coverage_metric_toggle]\").toArray();\n $(this.coverageInputTargets).on(\"change\", event => this.toggleCoverageMetric(event));\n\n $(\"#account_manager\").on(\"change\", () => this.updateShownPayers());\n $(\"#region\").on(\"change\", () => this.updateShownPayers());\n\n this.params = this.initializeParams();\n this.chart = this.renderChart();\n }\n\n togglePayerTypeFromButton(event) {\n this.payerType = event.target.value;\n\n this.togglePayerTypeInternal(event.target.value, event.target.checked);\n\n this.chart?.update();\n }\n\n toggleDrugFromChart(legendItem) {\n const { drug } = this.chart.data.datasets[legendItem.datasetIndex];\n const button = this.drugInputTargets.find(target => target.value === drug);\n\n $(button).trigger(\"click\");\n }\n\n toggleDrugFromButton(event) {\n const drug = event.target.value;\n\n if (this.drugsIncluded.includes(drug)) {\n this.drugs = _.xor(this.drugs, [drug]).sort();\n\n this.toggleDrugsInternal();\n\n this.chart?.update();\n }\n }\n\n toggleCoverageMetric() {\n this.toggleCoverageMetricInternal();\n\n this.chart?.update();\n }\n\n updateShownPayers() {\n this.updateShownPayersInternal();\n\n this.chart?.update();\n }\n\n initializeParams() {\n const params = JSON.parse(this.data.get(\"chartData\")) || {};\n\n if (this.inStaticMode) {\n this.payerType = _.first(this.payerTypesIncluded);\n this.drugs = this.drugsIncluded;\n } else {\n this.payerType =\n this.payerTypesIncluded.length === 1\n ? this.payerTypesIncluded[0]\n : this.payerTypeInputTargets.find(target => target.checked)?.value;\n\n this.drugs = this.isFixedDrug\n ? this.drugsIncluded\n : this.drugInputTargets.filter(target => target.checked).map(target => target.value);\n }\n\n return params;\n }\n\n get subtitles() {\n return {\n payers: payersNoun(this.payerType),\n lives: \"Millions of Lives\",\n };\n }\n\n togglePayerTypeInternal() {\n // Implement in subclass if needed\n }\n\n toggleDrugsInternal() {\n // Implement in subclass if needed\n }\n\n toggleCoverageMetricInternal() {\n // Implement in subclass if needed\n }\n}\n","import _ from \"lodash\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport { accumulateValuesFn, coverageMetricNoun } from \"../../utilities/charts/chart_utils\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n static targets = [\n \"title\",\n \"initialAuthIndicator\",\n \"initialAuthLabel\",\n \"reauthIndicator\",\n \"reauthLabel\",\n ];\n\n toggleCoverageMetricInternal() {\n this.renderChart();\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugInternal() {\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n this.updateAttribute(\n \"initial_length\",\n this.initialAuthIndicatorTargets,\n this.initialAuthLabelTargets,\n );\n this.updateAttribute(\"reauth_length\", this.reauthIndicatorTargets, this.reauthLabelTargets);\n\n const nouns = coverageMetricNoun(this.coverageMetric, this.payerTypesShown);\n\n $(this.titleTargets).text(`Average PA Auth/Reauth Length for ${this.drug} by ${nouns}`);\n }\n\n updateAttribute(key, indicatorTarget, labelTarget) {\n const percentage = this.percentageForAttribute(key);\n\n const ensuringNoOverrun = percentage > 0.99 ? \"calc(100% - 0.25rem)\" : `${percentage * 100}%`;\n\n $(indicatorTarget).css(\"left\", ensuringNoOverrun);\n\n $(labelTarget)\n .css(percentage < 0.5 ? \"left\" : \"right\", \"0.5rem\")\n .css(percentage < 0.5 ? \"right\" : \"left\", \"\")\n .text(`${(percentage * 12).toFixed(1)} Months`);\n }\n\n percentageForAttribute(attribute) {\n const byPayerType = _.pick(this.params[attribute]?.[this.drug], this.payerTypesShown);\n\n let numerator = 0;\n\n let denominator = 0;\n\n _.forIn(byPayerType, (payersByLength, payerType) => {\n const accumulate = accumulateValuesFn(payerType, this.coverageMetric);\n\n _.forIn(payersByLength, (payers, key) => {\n const weight = accumulate(payers);\n\n switch (key) {\n case \"3 Months\":\n numerator += weight * 0.25;\n denominator += weight;\n break;\n case \"6 Months\":\n numerator += weight * 0.25;\n denominator += weight;\n break;\n case \"9 Months\":\n numerator += weight * 0.25;\n denominator += weight;\n break;\n case \"12 Months\":\n numerator += weight;\n denominator += weight;\n break;\n default:\n // Non-standard and non-numeric entries do not contribute to the average\n }\n });\n });\n\n return numerator / denominator;\n }\n}\n","import _ from \"lodash\";\nimport { accumulateValuesFn, payersNoun } from \"../../utilities/charts/chart_utils\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\nimport PayersLivesDonutChartBase from \"./payers_lives_donut_chart_base\";\n\nexport default class extends PayersLivesDonutChartBase {\n calculateFractions(coverageMetric) {\n let hasAuthLength = 0;\n\n let total = 0;\n\n _.forIn(_.pick(this.params[this.drug], this.payerTypesShown), (values, payerType) => {\n const yesValues = this.yesValues(values);\n const allValues = _.flatten(_.values(values));\n\n const accumulate = accumulateValuesFn(payerType, coverageMetric);\n\n total += accumulate(allValues);\n hasAuthLength += accumulate(yesValues);\n });\n\n const mainFraction = total === 0 ? 0 : hasAuthLength / total;\n\n return {\n mainFraction,\n increaseFraction: 0,\n decreaseFraction: 0,\n };\n }\n\n triggerModalInternal(collection) {\n const isYes = collection !== \"remainder\";\n\n const payerTypes = this.payerTypesShown.map(payerType =>\n payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : payerType,\n );\n\n const payers = _.mapValues(_.pick(this.params[this.drug], payerTypes), valuesByType =>\n isYes ? this.yesValues(valuesByType) : _.flatten(_.values(_.omit(valuesByType, \"Yes\"))),\n );\n\n const verb = isYes ? \"with\" : \"without\";\n const title = `${payersNoun(payerTypes)} ${verb} PA Auth/Reauth Length for ${this.drug}`;\n\n showPayersModal(this.drug, title, payers);\n }\n\n get titleText() {\n const nouns = payersNoun(this.payerTypesShown);\n\n return `${nouns} & Lives with PA Auth/Reauth Length for ${this.drug}`;\n }\n\n get tooltipTitleText() {\n return \"Has PA Auth/Reauth Length?\";\n }\n}\n","import _ from \"lodash\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport {\n accumulateValuesFn,\n percentString,\n toOneDecimal,\n} from \"../../utilities/charts/chart_utils\";\nimport shrinkWidgetToFit from \"../../utilities/charts/shrink_widget_to_fit\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n static targets = [\n \"grid\",\n \"title\",\n \"rowTitle\",\n \"payersValue\",\n \"payersPercent\",\n \"payersTotal\",\n \"livesValue\",\n \"livesPercent\",\n \"livesTotal\",\n ];\n\n initializeParams() {\n const params = super.initializeParams();\n\n this.enabledTypes = [\"Yes\", \"No\", \"N/I\"];\n\n return params;\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugInternal() {\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n const countsByType = this.countsForShownPayerTypes();\n const totalsWithPolicy = this.totalsWithPolicy(countsByType);\n\n this.rowTitleTargets.forEach(target => {\n const key = $(target).data(\"key\");\n\n target.classList.toggle(\"line-through\", !this.enabledTypes.includes(key));\n });\n\n this.payersValueTargets.forEach(target => {\n const key = $(target).data(\"key\");\n const isEnabled = this.enabledTypes.includes(key);\n\n target.innerText = isEnabled ? countsByType[key].payers : \"\";\n });\n\n this.livesValueTargets.forEach(target => {\n const key = $(target).data(\"key\");\n const isEnabled = this.enabledTypes.includes(key);\n\n target.innerText = isEnabled ? this.livesString(countsByType[key].lives) : \"\";\n });\n\n this.payersPercentTargets.forEach(target => {\n const key = $(target).data(\"key\");\n const numerator = countsByType[key].payers;\n const isEnabled = this.enabledTypes.includes(key);\n\n target.innerText = isEnabled ? percentString(numerator, totalsWithPolicy.payers) : \"\";\n });\n\n this.livesPercentTargets.forEach(target => {\n const key = $(target).data(\"key\");\n const numerator = countsByType[key].lives;\n const isEnabled = this.enabledTypes.includes(key);\n\n target.innerText = isEnabled ? percentString(numerator, totalsWithPolicy.lives) : \"\";\n });\n\n this.payersTotalTarget.innerText = totalsWithPolicy.payers;\n this.livesTotalTarget.innerText = this.livesString(totalsWithPolicy.lives);\n this.titleTarget.innerText = `Has PA Auth/Reauth Length for ${this.drug}?`;\n\n shrinkWidgetToFit(this.element, this.gridTarget);\n }\n\n togglePARequiredType(event) {\n const key = $(event.target).data(\"key\");\n\n this.enabledTypes = _.xor(this.enabledTypes, [key]);\n\n this.renderChart();\n }\n\n countsForShownPayerTypes() {\n const counts = {\n Yes: { payers: 0, lives: 0 },\n No: { payers: 0, lives: 0 },\n \"N/I\": { payers: 0, lives: 0 },\n };\n\n const forShownPayers = _.pick(this.params[this.drug], this.payerTypesShown);\n\n _.forIn(forShownPayers, (countsByType, payerType) => {\n Object.entries(countsByType).forEach(([key, payerIds]) => {\n counts[key].payers += accumulateValuesFn(payerType, \"payers\")(payerIds);\n counts[key].lives += accumulateValuesFn(payerType, \"lives\")(payerIds);\n });\n });\n\n return counts;\n }\n\n totalsWithPolicy(countsByType) {\n const counts = _.values(_.pick(countsByType, this.enabledTypes));\n const countSum = key => _.sum(counts.map(byCoverageMetric => byCoverageMetric[key]));\n\n return { payers: countSum(\"payers\"), lives: countSum(\"lives\") };\n }\n\n livesString(count) {\n return count > 0 ? `${toOneDecimal(count).toLocaleString()}m` : \"0\";\n }\n}\n","import _ from \"lodash\";\nimport { accumulateValuesFn, payersNoun } from \"../../utilities/charts/chart_utils\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\nimport PayersLivesDonutChartBase from \"./payers_lives_donut_chart_base\";\n\nexport default class extends PayersLivesDonutChartBase {\n calculateFractions(coverageMetric) {\n let required = 0;\n\n let total = 0;\n\n _.forIn(_.pick(this.params[this.drug], this.payerTypesShown), (values, payerType) => {\n const yesValues = this.yesValues(values);\n const allValues = _.flatten(_.values(values));\n\n const accumulate = accumulateValuesFn(payerType, coverageMetric);\n\n total += accumulate(allValues);\n required += accumulate(yesValues);\n });\n\n const mainFraction = total === 0 ? 0 : required / total;\n\n return {\n mainFraction,\n increaseFraction: 0,\n decreaseFraction: 0,\n };\n }\n\n triggerModalInternal(collection) {\n const isRequired = collection !== \"remainder\";\n\n const payerTypes = this.payerTypesShown.map(payerType =>\n payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : payerType,\n );\n\n const payers = _.mapValues(_.pick(this.params[this.drug], payerTypes), valuesByType =>\n isRequired ? this.yesValues(valuesByType) : _.flatten(_.values(_.omit(valuesByType, \"Yes\"))),\n );\n\n const verb = isRequired ? \"is\" : \"is not\";\n const title = `${payersNoun(payerTypes)} where PA ${verb} required for ${this.drug}`;\n\n showPayersModal(this.drug, title, payers);\n }\n\n get titleText() {\n const nouns = payersNoun(this.payerTypesShown);\n\n return `${nouns} & Lives where PA is required for ${this.drug}`;\n }\n\n get tooltipTitleText() {\n return \"Prior Auth Required?\";\n }\n}\n","import _ from \"lodash\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport {\n accumulateValuesFn,\n percentString,\n toOneDecimal,\n} from \"../../utilities/charts/chart_utils\";\nimport shrinkWidgetToFit from \"../../utilities/charts/shrink_widget_to_fit\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n static targets = [\n \"grid\",\n \"title\",\n \"rowTitle\",\n \"payersValue\",\n \"payersPercent\",\n \"payersTotal\",\n \"livesValue\",\n \"livesPercent\",\n \"livesTotal\",\n ];\n\n initializeParams() {\n const params = super.initializeParams();\n\n this.enabledTypes = [\"Yes\", \"No\", \"N/I\"];\n\n return params;\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugInternal() {\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n const countsByType = this.countsForShownPayerTypes();\n const totalsWithPolicy = this.totalsWithPolicy(countsByType);\n\n this.rowTitleTargets.forEach(target => {\n const isRequired = $(target).data(\"is-required\");\n\n target.classList.toggle(\"line-through\", !this.enabledTypes.includes(isRequired));\n });\n\n this.payersValueTargets.forEach(target => {\n const isRequired = $(target).data(\"is-required\");\n const isEnabled = this.enabledTypes.includes(isRequired);\n\n target.innerText = isEnabled ? countsByType[isRequired].payers : \"\";\n });\n\n this.livesValueTargets.forEach(target => {\n const isRequired = $(target).data(\"is-required\");\n const isEnabled = this.enabledTypes.includes(isRequired);\n\n target.innerText = isEnabled ? this.livesString(countsByType[isRequired].lives) : \"\";\n });\n\n this.payersPercentTargets.forEach(target => {\n const isRequired = $(target).data(\"is-required\");\n const numerator = countsByType[isRequired].payers;\n const isEnabled = this.enabledTypes.includes(isRequired);\n\n target.innerText = isEnabled ? percentString(numerator, totalsWithPolicy.payers) : \"\";\n });\n\n this.livesPercentTargets.forEach(target => {\n const isRequired = $(target).data(\"is-required\");\n const numerator = countsByType[isRequired].lives;\n const isEnabled = this.enabledTypes.includes(isRequired);\n\n target.innerText = isEnabled ? percentString(numerator, totalsWithPolicy.lives) : \"\";\n });\n\n this.payersTotalTarget.innerText = totalsWithPolicy.payers;\n this.livesTotalTarget.innerText = this.livesString(totalsWithPolicy.lives);\n this.titleTarget.innerText = `Is PA required for ${this.drug}?`;\n\n shrinkWidgetToFit(this.element, this.gridTarget);\n }\n\n togglePARequiredType(event) {\n const isRequired = $(event.target).data(\"is-required\");\n\n this.enabledTypes = _.xor(this.enabledTypes, [isRequired]);\n\n this.renderChart();\n }\n\n countsForShownPayerTypes() {\n const counts = {\n Yes: { payers: 0, lives: 0 },\n No: { payers: 0, lives: 0 },\n \"N/I\": { payers: 0, lives: 0 },\n };\n\n const forShownPayers = _.pick(this.params[this.drug], this.payerTypesShown);\n\n _.forIn(forShownPayers, (countsByType, payerType) => {\n Object.entries(countsByType).forEach(([isRequired, payerIds]) => {\n counts[isRequired].payers += accumulateValuesFn(payerType, \"payers\")(payerIds);\n counts[isRequired].lives += accumulateValuesFn(payerType, \"lives\")(payerIds);\n });\n });\n\n return counts;\n }\n\n totalsWithPolicy(countsByType) {\n const counts = _.values(_.pick(countsByType, this.enabledTypes));\n const countSum = key => _.sum(counts.map(byCoverageMetric => byCoverageMetric[key]));\n\n return { payers: countSum(\"payers\"), lives: countSum(\"lives\") };\n }\n\n livesString(count) {\n return count > 0 ? `${toOneDecimal(count).toLocaleString()}m` : \"0\";\n }\n}\n","import _ from \"lodash\";\nimport colors, { lightColors } from \"../../utilities/charts/colors\";\nimport USStateChartControllerBase from \"./us_state_chart_controller_base\";\n\nexport default class extends USStateChartControllerBase {\n titleText() {\n return `States where PA is required for ${this.drug}`;\n }\n\n fractionForState(payerType, state) {\n const payersByPolicyType = this.params.data[payerType]?.[this.drug]?.[state];\n\n if (_.isEmpty(_.flatten(_.values(payersByPolicyType)))) return 0;\n\n const indexes = _.keys(payersByPolicyType).map(p => this.orderedAllValues.indexOf(p));\n\n return _.max(indexes) / this.params.all_values.length;\n }\n\n displayValueFromFraction(fraction) {\n const index = _.round(fraction * this.params.all_values.length);\n\n return index === 0 ? \"N/I\" : this.orderedAllValues[index];\n }\n\n colorForDisplayValue(paType) {\n if (paType === \"N/I\" || paType === \"No\") {\n return lightColors.gray;\n } else {\n return colors.magenta;\n }\n }\n\n generateLegendLabels(chart) {\n return [\n {\n text: \"Yes\",\n fillStyle: colors.magenta,\n pointStyle: \"rect\",\n fontColor: chart.legend.options.labels.color,\n },\n {\n text: \"Other\",\n fillStyle: lightColors.gray,\n pointStyle: \"rect\",\n fontColor: chart.legend.options.labels.color,\n },\n ];\n }\n\n payersForState(payerType, state) {\n return _.flatten(_.values(this.params.data[payerType]?.[this.drug]?.[state]));\n }\n\n coverageDetailsAnchor() {\n return \"prior-auth\";\n }\n\n get orderedAllValues() {\n // Ordering \"\" first plays nicely with implicit blanks being known 0\n return [\"\"].concat(_.without(this.params.all_values, \"\"));\n }\n}\n","import Chart from \"chart.js/auto\";\nimport ChartDataLabels from \"chartjs-plugin-datalabels\";\nimport _ from \"lodash\";\nimport { onHoverPointer, payersNoun, toOneDecimal } from \"../../utilities/charts/chart_utils\";\nimport colors, { lightColors } from \"../../utilities/charts/colors\";\nimport { parseClick } from \"../../utilities/charts/payers_modal\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n togglePayerTypeInternal() {\n this.chart.options.plugins.title.text = this.titleText;\n this.chart.data.labels = [payersNoun(this.payerTypesShown), \"Lives\"];\n this.chart.data.datasets[0].label = payersNoun(this.payerTypesShown);\n this.recalculateChartData();\n }\n\n toggleDrugInternal() {\n this.chart.options.plugins.title.text = this.titleText;\n this.recalculateChartData();\n }\n\n updateShownPayersInternal() {\n this.recalculateChartData();\n }\n\n recalculateChartData() {\n this.chart.data.datasets[0].data = this.formatData(\"payers\");\n this.chart.data.datasets[1].data = this.formatData(\"lives\");\n }\n\n renderChart() {\n return new Chart(this.appendCanvas(), {\n type: \"doughnut\",\n plugins: [ChartDataLabels],\n options: {\n responsive: true,\n maintainAspectRatio: false,\n animation: !this.inStaticMode,\n plugins: {\n title: {\n display: true,\n text: this.titleText,\n color: \"black\",\n font: { size: 13 },\n },\n legend: {\n display: !this.inStaticMode,\n },\n tooltip: {\n mode: \"dataset\",\n position: \"nearest\",\n filter: item => item.dataIndex < 2,\n callbacks: {\n title: () => this.tooltipTitleText,\n label: context => this.tooltipLabelText(context),\n },\n },\n datalabels: {\n color: \"black\",\n offset: 0,\n align: context => 360 * this.combinedFractionFromChartContext(context),\n display: context => !this.inStaticMode && this.isDatalabelDataset(context),\n formatter: (_v, context) =>\n `${toOneDecimal(this.combinedFractionFromChartContext(context) * 100)}%`,\n font: {\n weight: 600,\n },\n },\n },\n onClick: event => this.triggerModal(event),\n onHover: onHoverPointer,\n },\n data: {\n labels: [payersNoun(this.payerTypesShown), \"Lives\"],\n datasets: [\n {\n label: payersNoun(this.payerTypesShown),\n data: this.formatData(\"payers\"),\n backgroundColor: [\n colors.magenta,\n colors.teal,\n colors.pale_green,\n colors.orange,\n lightColors.gray,\n \"#000\",\n ],\n },\n {\n label: \"Lives\",\n data: this.formatData(\"lives\"),\n backgroundColor: [\n colors.magenta,\n colors.teal,\n colors.pale_green,\n colors.orange,\n lightColors.gray,\n \"#000\",\n ],\n },\n ],\n },\n });\n }\n\n isDatalabelDataset(context) {\n return context.dataIndex === 3 && _.isFinite(this.combinedFractionFromChartContext(context));\n }\n\n combinedFractionFromChartContext(context) {\n const mainIndex = context.dataset.label === \"Lives\" ? 1 : 0;\n const increaseIndex = 2;\n const decreaseIndex = 3;\n const realValue =\n context.dataset.data[mainIndex] +\n context.dataset.data[increaseIndex] -\n context.dataset.data[decreaseIndex];\n\n return realValue;\n }\n\n triggerModal(e) {\n const clickLocation = parseClick(this.chart, e);\n\n if (!clickLocation) return;\n\n let collection = null;\n\n switch (clickLocation.index) {\n case 0:\n case 1:\n collection = \"base\";\n break;\n case 2:\n case 3:\n collection = \"changed\";\n break;\n case 4:\n collection = \"remainder\";\n break;\n default:\n throw new Error(`Unexpected index ${clickLocation.index}`);\n }\n\n this.triggerModalInternal(collection);\n }\n\n yesValues(values) {\n return values.Yes || [];\n }\n\n formatData(coverageMetric) {\n const { mainFraction, increaseFraction, decreaseFraction } =\n this.calculateFractions(coverageMetric);\n\n const remainderFraction = 1 - mainFraction - increaseFraction - decreaseFraction;\n\n return coverageMetric === \"payers\"\n ? [mainFraction, 0, increaseFraction, decreaseFraction, remainderFraction, 0]\n : [0, mainFraction, increaseFraction, decreaseFraction, remainderFraction, 0];\n }\n\n tooltipLabelText(context) {\n const coverageMetric = context.dataIndex === 0 ? \"payers\" : \"lives\";\n const nouns = context.dataIndex === 0 ? payersNoun(this.payerTypesShown) : \"Lives\";\n const value = toOneDecimal(\n context.chart.data.datasets[context.dataIndex].data[context.dataIndex] * 100,\n );\n\n const standardLine = `${nouns}: ${value}%`;\n\n const { increaseFraction, decreaseFraction } = this.calculateFractions(coverageMetric);\n\n if (increaseFraction > 0) {\n return `${standardLine} (+${toOneDecimal(increaseFraction * 100)})`;\n } else if (decreaseFraction > 0) {\n return `${standardLine} (-${toOneDecimal(decreaseFraction * 100)})`;\n } else {\n return standardLine;\n }\n }\n\n /* eslint-disable no-unused-vars */\n calculateFractions(_coverageMetric) {\n throw new Error(\"Implement in child!\");\n }\n\n triggerModalInternal(_collection) {\n throw new Error(\"Implement in child!\");\n }\n\n get titleText() {\n throw new Error(\"Implement in child!\");\n }\n\n get tooltipTitleText() {\n throw new Error(\"Implement in child!\");\n }\n}\n","import _ from \"lodash\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport ChartControllerWrapper from \"./payers_v_lives_chart_controller_base\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\nimport SymbolaArrows from \"../../utilities/charts/symbola_arrows\";\nimport {\n accumulateValuesFn,\n payersNoun,\n percent,\n withinOneDecimalP,\n} from \"../../utilities/charts/chart_utils\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n connect() {\n this.innerClass = new ChartControllerWrapper(this);\n super.connect();\n\n if (this.showChangesFromPrevious) {\n SymbolaArrows.onload(() => this.chart.update());\n }\n }\n\n togglePayerTypeInternal() {\n this.chart.options.plugins.title.text = this.titleText;\n\n this.innerClass.updateChartData();\n }\n\n toggleDrugInternal() {\n this.chart.options.plugins.title.text = this.titleText;\n\n this.innerClass.updateChartData();\n }\n\n updateShownPayersInternal() {\n this.innerClass.updateChartData();\n }\n\n formatData(coverageMetric) {\n return this.payerTypesShown.map(payerType => {\n const currentData = this.params.data[payerType][this.drug][1];\n const currentCounts = currentData.map(accumulateValuesFn(payerType, coverageMetric));\n const currentPercent = percent(currentCounts[0], _.sum(currentCounts));\n\n return { x: currentPercent, y: window.PayerTypeLabels[payerType] };\n });\n }\n\n deltaFromChartContext(context) {\n const payerType = this.payerTypesShown[context.dataIndex];\n const coverageMetric = context.dataset.stack;\n\n const [priorData, currentData] = this.params.data[payerType][this.drug];\n\n const priorCounts = priorData.map(accumulateValuesFn(payerType, coverageMetric));\n const currentCounts = currentData.map(accumulateValuesFn(payerType, coverageMetric));\n\n const priorPercent = percent(priorCounts[0], _.sum(priorCounts));\n const currentPercent = percent(currentCounts[0], _.sum(currentCounts));\n\n if (this.showChangesFromPrevious && !withinOneDecimalP(priorPercent, currentPercent)) {\n return currentPercent - priorPercent;\n } else {\n return 0;\n }\n }\n\n showModal(event, alreadyParsed) {\n const clickLocation = alreadyParsed ? event : parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n let payerType = this.payerTypesShown[clickLocation.index];\n\n if (payerType === \"medicare_advantage_payers\") payerType = \"medicare_advantage\";\n\n const payerIds = {};\n const extraParams = {};\n\n const payerIdsFor = datasetIndex =>\n this.params.data[payerType][this.drug][datasetIndex][0].map(d => d.payer);\n\n if (this.showChangesFromPrevious) {\n const currentPayers = payerIdsFor(1);\n const priorPayers = payerIdsFor(0);\n\n payerIds[payerType] = _.union(currentPayers, priorPayers);\n const changedPayers = _.xor(currentPayers, priorPayers);\n\n extraParams.changedCoverage = {\n [payerType]: changedPayers.map(payer => ({ payer, drug: this.drug })),\n };\n extraParams.previousSnapshotSetId = this.params.previous_snapshot_set.id;\n extraParams.changeDisplayMode = \"access_status\";\n } else {\n payerIds[payerType] = payerIdsFor(1);\n }\n\n showPayersModal(this.drug, \"confirmed\", payerIds, extraParams);\n }\n\n renderChart() {\n return this.innerClass.renderChart();\n }\n\n get titleText() {\n return `Uptake of ${this.drug} ${payersNoun(this.payerTypesShown)} v. Lives`;\n }\n}\n","import Chart from \"chart.js/auto\";\nimport ChartDataLabels from \"chartjs-plugin-datalabels\";\nimport colors from \"../../utilities/charts/colors\";\nimport {\n onHoverPointer,\n payersNoun,\n percentString,\n toOneDecimal,\n} from \"../../utilities/charts/chart_utils\";\nimport SymbolaArrows from \"../../utilities/charts/symbola_arrows\";\n\nexport default class {\n constructor(outerClass) {\n this.outerClass = outerClass;\n }\n\n updateChartData() {\n this.outerClass.chart.data.datasets.forEach(dataset => {\n dataset.data = this.outerClass.formatData(dataset.stack);\n });\n }\n\n renderChart() {\n return new Chart(this.outerClass.appendCanvas(), {\n type: \"bar\",\n plugins: [ChartDataLabels],\n options: {\n indexAxis: \"y\",\n responsive: true,\n maintainAspectRatio: false,\n animation: !this.outerClass.inStaticMode,\n scales: {\n x: {\n suggestedMin: 0,\n suggestedMax: 100,\n ticks: {\n display: !this.outerClass.inStaticMode,\n callback: value => `${value}%`,\n },\n grid: { drawBorder: false },\n },\n y: {\n ticks: { display: !this.outerClass.inStaticMode },\n grid: { display: false },\n },\n },\n plugins: {\n legend: {\n display: !this.outerClass.inStaticMode,\n position: \"bottom\",\n labels: {\n boxWidth: 12,\n },\n },\n tooltip: {\n mode: \"index\",\n callbacks: {\n label: context => this.tooltipLabelText(context),\n },\n },\n title: {\n display: true,\n text: this.outerClass.titleText,\n color: \"black\",\n font: { size: 13 },\n },\n datalabels: {\n anchor: \"end\",\n labels: {\n value: {\n display: !this.outerClass.inStaticMode,\n align: c => (this.datalabelInsideBar(c) ? \"left\" : \"right\"),\n formatter: (value, context) => this.dataLabelPossiblyWithArrow(value, context),\n color: c =>\n this.datalabelInsideBar(c) ? \"#eee\" : this.deltaColorFromChartContext(c),\n offset: c => (this.datalabelInsideBar(c) ? 8 : 0),\n font: {\n weight: \"bold\",\n },\n },\n arrow: {\n display: c =>\n !this.outerClass.inStaticMode &&\n this.datalabelInsideBar(c) &&\n this.outerClass.deltaFromChartContext(c) !== 0,\n align: \"right\",\n formatter: (_value, context) =>\n this.outerClass.deltaFromChartContext(context) > 0\n ? SymbolaArrows.right\n : SymbolaArrows.left,\n color: c => this.deltaColorFromChartContext(c),\n offset: 0,\n },\n },\n },\n },\n onClick: event => this.outerClass.showModal(event, false),\n onHover: onHoverPointer,\n },\n data: {\n datasets: [\n {\n label: payersNoun(this.outerClass.payerTypesIncluded),\n data: this.outerClass.formatData(\"payers\"),\n backgroundColor: colors.magenta,\n stack: \"payers\",\n barPercentage: 1,\n },\n {\n label: \"Lives\",\n data: this.outerClass.formatData(\"lives\"),\n backgroundColor: colors.teal,\n stack: \"lives\",\n barPercentage: 1,\n },\n ],\n },\n });\n }\n\n datalabelInsideBar(context) {\n return context.dataset.data[context.dataIndex].x >= 15;\n }\n\n deltaColorFromChartContext(context) {\n const delta = this.outerClass.deltaFromChartContext(context);\n\n if (delta > 0) {\n return \"#6b7e38\"; // text-green-500\n } else if (delta < 0) {\n return \"#e02424\"; // text-red\n } else {\n return \"#000\";\n }\n }\n\n dataLabelPossiblyWithArrow(value, context) {\n const delta = this.outerClass.deltaFromChartContext(context);\n const percent = percentString(value.x, 100);\n\n if (this.datalabelInsideBar(context) || delta === 0) {\n return percent;\n } else if (delta > 0) {\n return `${percent} ${SymbolaArrows.right}`;\n } else {\n return `${SymbolaArrows.left} ${percent}`;\n }\n }\n\n tooltipLabelText(context) {\n const standardLine = `${context.dataset.label}: ${toOneDecimal(context.parsed.x)}%`;\n const delta = this.outerClass.deltaFromChartContext(context);\n\n if (delta > 0) {\n return `${standardLine} (+${toOneDecimal(delta)})`;\n } else if (delta < 0) {\n return `${standardLine} (${toOneDecimal(delta)})`;\n } else {\n return standardLine;\n }\n }\n}\n","import _ from \"lodash\";\nimport { buildChart, updateChartData } from \"../../utilities/charts/payers_v_lives_over_time_chart\";\nimport showPayersModal, { parseClick } from \"../../utilities/charts/payers_modal\";\nimport {\n absoluteDateOverTimeCallbacks,\n accumulateValuesFn,\n omitMissingOverTimeItems,\n overTimeX,\n payersNoun,\n percent,\n} from \"../../utilities/charts/chart_utils\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n togglePayerTypeInternal() {\n updateChartData(this.chart, this.formatData.bind(this), payersNoun(this.payerTypesShown));\n this.chart.options.plugins.title.text = this.titleText;\n }\n\n toggleDrugInternal() {\n updateChartData(this.chart, this.formatData.bind(this), payersNoun(this.payerTypesShown));\n this.chart.options.plugins.title.text = this.titleText;\n }\n\n updateShownPayersInternal() {\n updateChartData(this.chart, this.formatData.bind(this), payersNoun(this.payerTypesShown));\n }\n\n renderChart() {\n return buildChart(\n this.appendCanvas(),\n payersNoun(this.payerTypesShown),\n this.titleText,\n absoluteDateOverTimeCallbacks(this),\n this.formatData.bind(this),\n this.triggerModal.bind(this),\n this.inStaticMode,\n );\n }\n\n formatData(coverageMetric) {\n const forShownPayers = _.pick(this.params.data[this.drug], this.payerTypesShown);\n const accumulatedData = {};\n\n _.forIn(forShownPayers, (datapoints, payerType) => {\n const accumulate = accumulateValuesFn(payerType, coverageMetric);\n\n datapoints.forEach(datapoint => {\n const date = datapoint.date;\n const confirmed = accumulate(datapoint.confirmed);\n const all = accumulate(datapoint.all);\n\n if (accumulatedData[date]) {\n accumulatedData[date].confirmed += confirmed;\n accumulatedData[date].all += all;\n } else {\n accumulatedData[date] = { date, confirmed, all };\n }\n });\n });\n\n const data = omitMissingOverTimeItems(_.values(accumulatedData)).map(\n ({ date, confirmed, all }) => ({\n x: overTimeX(this, date),\n y: percent(confirmed, all),\n date,\n }),\n );\n\n return _.sortBy(data, point => point.x);\n }\n\n triggerModal(event) {\n const clickLocation = parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n const payerTypes = this.payerTypesShown.map(payerType =>\n payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : payerType,\n );\n\n const title = `${payersNoun(payerTypes)} with Confirmed Access for ${this.drug}`;\n\n const dataForPayerTypes = _.pick(this.params.data[this.drug], payerTypes);\n const confirmedByType = _.mapValues(dataForPayerTypes, v => v[clickLocation.index]?.confirmed);\n\n const payers = _.pickBy(confirmedByType, data => !_.isEmpty(data));\n\n const dataset = this.chart.data.datasets[clickLocation.datasetIndex];\n const maxIndex = dataset.data.length - 1;\n\n if (clickLocation.index === maxIndex) {\n showPayersModal(this.drug, title, payers);\n } else {\n const timestamp = dataset.data[clickLocation.index].date;\n\n showPayersModal(this.drug, title, payers, { timestamp });\n }\n }\n\n get titleText() {\n const nouns = payersNoun(this.payerTypesShown);\n\n return `% of ${nouns} v. % of Lives with Confirmed Access for ${this.drug}`;\n }\n}\n","import _ from \"lodash\";\nimport { accumulateValuesFn, payersNoun } from \"../../utilities/charts/chart_utils\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\nimport PayersLivesDonutChartBase from \"./payers_lives_donut_chart_base\";\n\nexport default class extends PayersLivesDonutChartBase {\n calculateFractions(coverageMetric) {\n let present = 0;\n\n let total = 0;\n\n _.forIn(_.pick(this.params.data[this.drug], this.payerTypesShown), (values, payerType) => {\n const allValues = _.values(values);\n const presentValues = _.values(_.omit(values, \"\"));\n\n const accumulate = accumulateValuesFn(payerType, coverageMetric);\n\n total += _.sum(allValues.map(accumulate));\n present += _.sum(presentValues.map(accumulate));\n });\n\n const mainFraction = total === 0 ? 0 : present / total;\n\n return {\n mainFraction,\n increaseFraction: 0,\n decreaseFraction: 0,\n };\n }\n\n triggerModalInternal(collection) {\n const withPublishedPolicy = collection !== \"remainder\";\n\n const payerTypes = this.payerTypesShown.map(payerType =>\n payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : payerType,\n );\n\n const payers = _.mapValues(_.pick(this.params.data[this.drug], payerTypes), valuesByType => {\n const dataset = withPublishedPolicy ? _.omit(valuesByType, \"\") : _.pick(valuesByType, \"\");\n\n return _.flatten(_.values(dataset));\n });\n\n const verb = withPublishedPolicy ? \"with\" : \"without\";\n const title = `${payersNoun(payerTypes)} ${verb} Published Policy for ${this.drug}`;\n\n showPayersModal(this.drug, title, payers);\n }\n\n get titleText() {\n const nouns = payersNoun(this.payerTypesShown);\n\n return `${nouns} & Lives with Published Policies for ${this.drug}`;\n }\n\n get tooltipTitleText() {\n return \"Has Published Policy\";\n }\n}\n","import _ from \"lodash\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport {\n accumulateValuesFn,\n percentString,\n toOneDecimal,\n} from \"../../utilities/charts/chart_utils\";\nimport shrinkWidgetToFit from \"../../utilities/charts/shrink_widget_to_fit\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n static targets = [\n \"grid\",\n \"rowTitle\",\n \"payersValue\",\n \"payersPercent\",\n \"payersTotal\",\n \"livesValue\",\n \"livesPercent\",\n \"livesTotal\",\n ];\n\n initializeParams() {\n const params = super.initializeParams();\n\n this.enabledPolicyTypes = _.without(params.all_values, \"\");\n\n return params;\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugInternal() {\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n const countsByPolicyType = this.countsForShownPayerTypes();\n const totalsWithPolicy = this.totalsWithPolicy(countsByPolicyType);\n\n this.rowTitleTargets.forEach(target => {\n const policyType = $(target).data(\"policy-type\");\n\n target.classList.toggle(\"line-through\", !this.enabledPolicyTypes.includes(policyType));\n });\n\n this.payersValueTargets.forEach(target => {\n const policyType = $(target).data(\"policy-type\");\n const isEnabled = this.enabledPolicyTypes.includes(policyType);\n\n target.innerText = isEnabled ? countsByPolicyType[policyType].payers : \"\";\n });\n\n this.livesValueTargets.forEach(target => {\n const policyType = $(target).data(\"policy-type\");\n const isEnabled = this.enabledPolicyTypes.includes(policyType);\n\n target.innerText = isEnabled ? this.livesString(countsByPolicyType[policyType].lives) : \"\";\n });\n\n this.payersPercentTargets.forEach(target => {\n const policyType = $(target).data(\"policy-type\");\n const numerator = countsByPolicyType[policyType].payers;\n const isEnabled = this.enabledPolicyTypes.includes(policyType);\n\n target.innerText = isEnabled ? percentString(numerator, totalsWithPolicy.payers) : \"\";\n });\n\n this.livesPercentTargets.forEach(target => {\n const policyType = $(target).data(\"policy-type\");\n const numerator = countsByPolicyType[policyType].lives;\n const isEnabled = this.enabledPolicyTypes.includes(policyType);\n\n target.innerText = isEnabled ? percentString(numerator, totalsWithPolicy.lives) : \"\";\n });\n\n this.payersTotalTarget.innerText = totalsWithPolicy.payers;\n this.livesTotalTarget.innerText = this.livesString(totalsWithPolicy.lives);\n\n shrinkWidgetToFit(this.element, this.gridTarget);\n }\n\n togglePublishedPolicyType(event) {\n const policyType = $(event.target).data(\"policy-type\");\n\n this.enabledPolicyTypes = _.xor(this.enabledPolicyTypes, [policyType]);\n\n this.renderChart();\n }\n\n countsForShownPayerTypes() {\n const counts = Object.fromEntries(\n this.params.all_values.map(v => [v, { payers: 0, lives: 0 }]),\n );\n\n const forShownPayers = _.pick(this.params.data[this.drug], this.payerTypesShown);\n\n _.forIn(forShownPayers, (countsByType, payerType) => {\n Object.entries(countsByType).forEach(([policyType, payerIds]) => {\n counts[policyType].payers += accumulateValuesFn(payerType, \"payers\")(payerIds);\n counts[policyType].lives += accumulateValuesFn(payerType, \"lives\")(payerIds);\n });\n });\n\n return counts;\n }\n\n totalsWithPolicy(countsByPolicyType) {\n const counts = _.values(_.pick(countsByPolicyType, this.enabledPolicyTypes));\n const countSum = key => _.sum(counts.map(byCoverageMetric => byCoverageMetric[key]));\n\n return { payers: countSum(\"payers\"), lives: countSum(\"lives\") };\n }\n\n livesString(count) {\n return count > 0 ? `${toOneDecimal(count).toLocaleString()}m` : \"0\";\n }\n}\n","import _ from \"lodash\";\nimport colors, { lightColors } from \"../../utilities/charts/colors\";\nimport USStateChartControllerBase from \"./us_state_chart_controller_base\";\n\nexport default class extends USStateChartControllerBase {\n titleText() {\n return `States with Published Policies for ${this.drug}`;\n }\n\n fractionForState(payerType, state) {\n const payersByPolicyType = this.params.data[payerType]?.[this.drug]?.[state];\n\n if (_.isEmpty(_.flatten(_.values(payersByPolicyType)))) return 0;\n\n const indexes = _.keys(payersByPolicyType).map(p => this.orderedAllValues.indexOf(p));\n\n return _.max(indexes) / this.params.all_values.length;\n }\n\n displayValueFromFraction(fraction) {\n const index = _.round(fraction * this.params.all_values.length);\n\n return index === 0 ? \"N/I\" : this.orderedAllValues[index];\n }\n\n colorForDisplayValue(policyType) {\n if (policyType === \"N/I\") {\n return lightColors.gray;\n } else {\n return colors.magenta;\n }\n }\n\n generateLegendLabels(chart) {\n return [\n {\n text: \"Has Policy\",\n fillStyle: colors.magenta,\n pointStyle: \"rect\",\n fontColor: chart.legend.options.labels.color,\n },\n {\n text: \"N/I\",\n fillStyle: lightColors.gray,\n pointStyle: \"rect\",\n fontColor: chart.legend.options.labels.color,\n },\n ];\n }\n\n payersForState(payerType, state) {\n return _.flatten(_.values(this.params.data[payerType]?.[this.drug]?.[state]));\n }\n\n coverageDetailsAnchor() {\n return \"policies\";\n }\n\n get orderedAllValues() {\n // Ordering \"\" first plays nicely with implicit blanks being known 0\n return [\"\"].concat(_.without(this.params.all_values, \"\"));\n }\n}\n","import _ from \"lodash\";\nimport { accumulateValuesFn, payersNoun } from \"../../utilities/charts/chart_utils\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\nimport PayersLivesDonutChartBase from \"./payers_lives_donut_chart_base\";\n\nexport default class extends PayersLivesDonutChartBase {\n calculateFractions(coverageMetric) {\n let yes = 0;\n\n let total = 0;\n\n _.forIn(_.pick(this.params[this.drug], this.payerTypesShown), (values, payerType) => {\n const yesValues = this.yesValues(values);\n const allValues = _.flatten(_.values(values));\n\n const accumulate = accumulateValuesFn(payerType, coverageMetric);\n\n yes += accumulate(yesValues);\n total += accumulate(allValues);\n });\n\n const mainFraction = total === 0 ? 0 : yes / total;\n\n return {\n mainFraction,\n increaseFraction: 0,\n decreaseFraction: 0,\n };\n }\n\n triggerModalInternal(collection) {\n const hasLimit = collection !== \"remainder\";\n\n const payerTypes = this.payerTypesShown.map(payerType =>\n payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : payerType,\n );\n\n const payers = _.mapValues(_.pick(this.params[this.drug], payerTypes), valuesByType =>\n hasLimit ? this.yesValues(valuesByType) : _.flatten(_.values(_.omit(valuesByType, \"Yes\"))),\n );\n\n const verb = hasLimit ? \"with\" : \"without\";\n const title = `${payersNoun(payerTypes)} ${verb} Quantity Limits for ${this.drug}`;\n\n showPayersModal(this.drug, title, payers);\n }\n\n get titleText() {\n const nouns = payersNoun(this.payerTypesShown);\n\n return `${nouns} & Lives with Quantity Limits for ${this.drug}`;\n }\n\n get tooltipTitleText() {\n return \"Has Quantity Limits?\";\n }\n}\n","import _ from \"lodash\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport {\n accumulateValuesFn,\n percentString,\n toOneDecimal,\n} from \"../../utilities/charts/chart_utils\";\nimport shrinkWidgetToFit from \"../../utilities/charts/shrink_widget_to_fit\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n static targets = [\n \"grid\",\n \"title\",\n \"rowTitle\",\n \"payersValue\",\n \"payersPercent\",\n \"payersTotal\",\n \"livesValue\",\n \"livesPercent\",\n \"livesTotal\",\n ];\n\n initializeParams() {\n const params = super.initializeParams();\n\n this.enabledTypes = [\"Yes\", \"No\", \"N/I\"];\n\n return params;\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugInternal() {\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n const countsByType = this.countsForShownPayerTypes();\n const totalsWithPolicy = this.totalsWithPolicy(countsByType);\n\n this.rowTitleTargets.forEach(target => {\n const hasLimit = $(target).data(\"has-limit\");\n\n target.classList.toggle(\"line-through\", !this.enabledTypes.includes(hasLimit));\n });\n\n this.payersValueTargets.forEach(target => {\n const hasLimit = $(target).data(\"has-limit\");\n const isEnabled = this.enabledTypes.includes(hasLimit);\n\n target.innerText = isEnabled ? countsByType[hasLimit].payers : \"\";\n });\n\n this.livesValueTargets.forEach(target => {\n const hasLimit = $(target).data(\"has-limit\");\n const isEnabled = this.enabledTypes.includes(hasLimit);\n\n target.innerText = isEnabled ? this.livesString(countsByType[hasLimit].lives) : \"\";\n });\n\n this.payersPercentTargets.forEach(target => {\n const hasLimit = $(target).data(\"has-limit\");\n const numerator = countsByType[hasLimit].payers;\n const isEnabled = this.enabledTypes.includes(hasLimit);\n\n target.innerText = isEnabled ? percentString(numerator, totalsWithPolicy.payers) : \"\";\n });\n\n this.livesPercentTargets.forEach(target => {\n const hasLimit = $(target).data(\"has-limit\");\n const numerator = countsByType[hasLimit].lives;\n const isEnabled = this.enabledTypes.includes(hasLimit);\n\n target.innerText = isEnabled ? percentString(numerator, totalsWithPolicy.lives) : \"\";\n });\n\n this.payersTotalTarget.innerText = totalsWithPolicy.payers;\n this.livesTotalTarget.innerText = this.livesString(totalsWithPolicy.lives);\n this.titleTarget.innerText = `Has Quantity Limits for ${this.drug}?`;\n\n shrinkWidgetToFit(this.element, this.gridTarget);\n }\n\n toggleKey(event) {\n const hasLimit = $(event.target).data(\"has-limit\");\n\n this.enabledTypes = _.xor(this.enabledTypes, [hasLimit]);\n\n this.renderChart();\n }\n\n countsForShownPayerTypes() {\n const counts = {\n Yes: { payers: 0, lives: 0 },\n No: { payers: 0, lives: 0 },\n \"N/I\": { payers: 0, lives: 0 },\n };\n\n const forShownPayers = _.pick(this.params[this.drug], this.payerTypesShown);\n\n _.forIn(forShownPayers, (countsByType, payerType) => {\n Object.entries(countsByType).forEach(([hasLimit, payerIds]) => {\n counts[hasLimit].payers += accumulateValuesFn(payerType, \"payers\")(payerIds);\n counts[hasLimit].lives += accumulateValuesFn(payerType, \"lives\")(payerIds);\n });\n });\n\n return counts;\n }\n\n totalsWithPolicy(countsByType) {\n const counts = _.values(_.pick(countsByType, this.enabledTypes));\n const countSum = key => _.sum(counts.map(byCoverageMetric => byCoverageMetric[key]));\n\n return { payers: countSum(\"payers\"), lives: countSum(\"lives\") };\n }\n\n livesString(count) {\n return count > 0 ? `${toOneDecimal(count).toLocaleString()}m` : \"0\";\n }\n}\n","import _ from \"lodash\";\nimport colors, { lightColors } from \"../../utilities/charts/colors\";\nimport USStateChartControllerBase from \"./us_state_chart_controller_base\";\n\nexport default class extends USStateChartControllerBase {\n titleText() {\n return `States with Quantity Limits for ${this.drug}`;\n }\n\n fractionForState(payerType, state) {\n const payersByValue = this.params[payerType]?.[this.drug]?.[state];\n const valuesForState = _.flatten(_.keys(payersByValue));\n\n if (valuesForState.includes(\"Yes\")) {\n return 1;\n } else if (valuesForState.includes(\"No\")) {\n return 0.5;\n } else {\n return 0;\n }\n }\n\n displayValueFromFraction(fraction) {\n if (fraction > 0.75) {\n return \"Yes\";\n } else if (fraction > 0.25) {\n return \"No\";\n } else {\n return \"N/I\";\n }\n }\n\n colorForDisplayValue(hasQuantityLimits) {\n if (hasQuantityLimits === \"Yes\") {\n return colors.blue_gray;\n } else if (hasQuantityLimits === \"No\") {\n return colors.goldenrod;\n } else {\n return lightColors.gray;\n }\n }\n\n coverageDetailsAnchor() {\n return \"ql\";\n }\n\n payersForState(payerType, state) {\n return _.flatten(_.values(this.params[payerType]?.[this.drug]?.[state]));\n }\n}\n","import _ from \"lodash\";\nimport { accumulateValuesFn, payersNoun } from \"../../utilities/charts/chart_utils\";\nimport showPayersModal from \"../../utilities/charts/payers_modal\";\nimport PayersLivesDonutChartBase from \"./payers_lives_donut_chart_base\";\n\nexport default class extends PayersLivesDonutChartBase {\n calculateFractions(coverageMetric) {\n let yes = 0;\n\n let total = 0;\n\n _.forIn(_.pick(this.params[this.drug], this.payerTypesShown), (values, payerType) => {\n const yesValues = this.yesValues(values);\n const allValues = _.flatten(_.values(values));\n\n const accumulate = accumulateValuesFn(payerType, coverageMetric);\n\n yes += accumulate(yesValues);\n total += accumulate(allValues);\n });\n\n const mainFraction = total === 0 ? 0 : yes / total;\n\n return {\n mainFraction,\n increaseFraction: 0,\n decreaseFraction: 0,\n };\n }\n\n triggerModalInternal(collection) {\n const required = collection !== \"remainder\";\n\n const payerTypes = this.payerTypesShown.map(payerType =>\n payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : payerType,\n );\n\n const payers = _.mapValues(_.pick(this.params[this.drug], payerTypes), valuesByType =>\n required ? this.yesValues(valuesByType) : _.flatten(_.values(_.omit(valuesByType, \"Yes\"))),\n );\n\n const verb = required ? \"requiring\" : \"not requiring\";\n const title = `${payersNoun(payerTypes)} ${verb} Step Therapy for ${this.drug}`;\n\n showPayersModal(this.drug, title, payers);\n }\n\n get titleText() {\n const nouns = payersNoun(this.payerTypesShown);\n\n return `${nouns} & Lives where Step Therapy is required for ${this.drug}`;\n }\n\n get tooltipTitleText() {\n return \"Requires Step Therapy?\";\n }\n}\n","import _ from \"lodash\";\nimport OneDrugManyPayerTypesChartControllerBase from \"./one_drug_many_payer_types_chart_controller_base\";\nimport {\n accumulateValuesFn,\n percentString,\n toOneDecimal,\n} from \"../../utilities/charts/chart_utils\";\nimport shrinkWidgetToFit from \"../../utilities/charts/shrink_widget_to_fit\";\n\nexport default class extends OneDrugManyPayerTypesChartControllerBase {\n static targets = [\n \"grid\",\n \"title\",\n \"rowTitle\",\n \"payersValue\",\n \"payersPercent\",\n \"payersTotal\",\n \"livesValue\",\n \"livesPercent\",\n \"livesTotal\",\n ];\n\n initializeParams() {\n const params = super.initializeParams();\n\n this.enabledTypes = [\"Yes\", \"No\", \"N/I\"];\n\n return params;\n }\n\n togglePayerTypeInternal() {\n this.renderChart();\n }\n\n toggleDrugInternal() {\n this.renderChart();\n }\n\n updateShownPayersInternal() {\n this.renderChart();\n }\n\n renderChart() {\n const countsByType = this.countsForShownPayerTypes();\n const totalsWithPolicy = this.totalsWithPolicy(countsByType);\n\n this.rowTitleTargets.forEach(target => {\n const required = $(target).data(\"required\");\n\n target.classList.toggle(\"line-through\", !this.enabledTypes.includes(required));\n });\n\n this.payersValueTargets.forEach(target => {\n const required = $(target).data(\"required\");\n const isEnabled = this.enabledTypes.includes(required);\n\n target.innerText = isEnabled ? countsByType[required].payers : \"\";\n });\n\n this.livesValueTargets.forEach(target => {\n const required = $(target).data(\"required\");\n const isEnabled = this.enabledTypes.includes(required);\n\n target.innerText = isEnabled ? this.livesString(countsByType[required].lives) : \"\";\n });\n\n this.payersPercentTargets.forEach(target => {\n const required = $(target).data(\"required\");\n const numerator = countsByType[required].payers;\n const isEnabled = this.enabledTypes.includes(required);\n\n target.innerText = isEnabled ? percentString(numerator, totalsWithPolicy.payers) : \"\";\n });\n\n this.livesPercentTargets.forEach(target => {\n const required = $(target).data(\"required\");\n const numerator = countsByType[required].lives;\n const isEnabled = this.enabledTypes.includes(required);\n\n target.innerText = isEnabled ? percentString(numerator, totalsWithPolicy.lives) : \"\";\n });\n\n this.payersTotalTarget.innerText = totalsWithPolicy.payers;\n this.livesTotalTarget.innerText = this.livesString(totalsWithPolicy.lives);\n this.titleTarget.innerText = `Requires Step Therapy for ${this.drug}?`;\n\n shrinkWidgetToFit(this.element, this.gridTarget);\n }\n\n toggleKey(event) {\n const required = $(event.target).data(\"required\");\n\n this.enabledTypes = _.xor(this.enabledTypes, [required]);\n\n this.renderChart();\n }\n\n countsForShownPayerTypes() {\n const counts = {\n Yes: { payers: 0, lives: 0 },\n No: { payers: 0, lives: 0 },\n \"N/I\": { payers: 0, lives: 0 },\n };\n\n const forShownPayers = _.pick(this.params[this.drug], this.payerTypesShown);\n\n _.forIn(forShownPayers, (countsByType, payerType) => {\n Object.entries(countsByType).forEach(([required, payerIds]) => {\n counts[required].payers += accumulateValuesFn(payerType, \"payers\")(payerIds);\n counts[required].lives += accumulateValuesFn(payerType, \"lives\")(payerIds);\n });\n });\n\n return counts;\n }\n\n totalsWithPolicy(countsByType) {\n const counts = _.values(_.pick(countsByType, this.enabledTypes));\n const countSum = key => _.sum(counts.map(byCoverageMetric => byCoverageMetric[key]));\n\n return { payers: countSum(\"payers\"), lives: countSum(\"lives\") };\n }\n\n livesString(count) {\n return count > 0 ? `${toOneDecimal(count).toLocaleString()}m` : \"0\";\n }\n}\n","import _ from \"lodash\";\nimport colors, { lightColors } from \"../../utilities/charts/colors\";\nimport USStateChartControllerBase from \"./us_state_chart_controller_base\";\n\nexport default class extends USStateChartControllerBase {\n titleText() {\n return `States requiring Step Therapy for ${this.drug}`;\n }\n\n fractionForState(payerType, state) {\n const payersByValue = this.params[payerType]?.[this.drug]?.[state];\n const valuesForState = _.flatten(_.keys(payersByValue));\n\n if (valuesForState.includes(\"Yes\")) {\n return 1;\n } else if (valuesForState.includes(\"No\")) {\n return 0.5;\n } else {\n return 0;\n }\n }\n\n displayValueFromFraction(fraction) {\n if (fraction > 0.75) {\n return \"Yes\";\n } else if (fraction > 0.25) {\n return \"No\";\n } else {\n return \"N/I\";\n }\n }\n\n colorForDisplayValue(hasQuantityLimits) {\n if (hasQuantityLimits === \"Yes\") {\n return colors.blue_gray;\n } else if (hasQuantityLimits === \"No\") {\n return colors.goldenrod;\n } else {\n return lightColors.gray;\n }\n }\n\n coverageDetailsAnchor() {\n return \"st\";\n }\n\n payersForState(payerType, state) {\n return _.flatten(_.values(this.params[payerType]?.[this.drug]?.[state]));\n }\n}\n","import Chart from \"chart.js/auto\";\nimport atlas from \"us-atlas/states-10m.json\";\nimport { topojson } from \"chartjs-chart-geo\";\nimport _ from \"lodash\";\nimport { onHoverPointer } from \"../../utilities/charts/chart_utils\";\nimport {\n topojsonStateName,\n stateAbbreviation,\n isTerritory,\n} from \"../../utilities/charts/state_abbreviation_map\";\nimport { parseClick, bypassPayerModalToDetails } from \"../../utilities/charts/payers_modal\";\nimport applyPayerFilters from \"../../utilities/charts/filter_payers\";\nimport OneDrugOnePayerTypeChartControllerBase from \"./one_drug_one_payer_type_chart_controller_base\";\n\nexport default class extends OneDrugOnePayerTypeChartControllerBase {\n titleText() {\n throw new Error(\"Implement in child!\");\n }\n\n displayValueFromFraction() {\n throw new Error(\"Implement in child!\");\n }\n\n colorForDisplayValue(/* value */) {\n throw new Error(\"Implement in child!\");\n }\n\n fractionForState(/* payerType, state */) {\n throw new Error(\"Implement in child!\");\n }\n\n payersForState(/* payerType, state */) {\n throw new Error(\"Implement in child!\");\n }\n\n togglePayerTypeInternal() {\n this.chart.options.plugins.title.text = this.titleText();\n this.recalculateChartData();\n }\n\n toggleDrugInternal() {\n this.chart.options.plugins.title.text = this.titleText();\n this.recalculateChartData();\n }\n\n updateShownPayersInternal() {\n this.recalculateChartData();\n }\n\n recalculateChartData() {\n this.chart.data.datasets[0].data = this.formatData();\n }\n\n renderChart() {\n return new Chart(this.appendCanvas(), {\n type: \"choropleth\",\n options: {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n title: {\n display: true,\n text: this.titleText(),\n color: \"black\",\n font: { size: 13 },\n },\n legend: {\n display: !this.inStaticMode,\n position: \"bottom\",\n labels: {\n usePointStyle: true,\n generateLabels: chart => this.generateLegendLabels(chart),\n },\n onClick: () => {},\n },\n tooltip: {\n callbacks: this.tooltipCallbacks(),\n footerMarginTop: 10,\n footerFont: {\n weight: \"normal\",\n },\n },\n },\n scales: {\n projection: {\n axis: \"x\",\n projection: \"albersUsa\",\n },\n color: {\n display: false,\n axis: \"x\",\n },\n },\n onHover: onHoverPointer,\n onClick: event => this.openCoverageDetails(event),\n },\n data: {\n labels: this.states.map(topojsonStateName),\n datasets: [\n {\n label: \"States\",\n outline: this.nation,\n data: this.formatData(),\n backgroundColor: datum => this.colorForStateOnMap(datum),\n },\n ],\n },\n });\n }\n\n formatData() {\n const payerType =\n this.payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : this.payerType;\n\n return this.states.map(state => ({\n feature: state,\n value: this.fractionForState(payerType, stateAbbreviation(state)),\n }));\n }\n\n openCoverageDetails(event) {\n const clickLocation = parseClick(this.chart, event);\n\n if (!clickLocation) return;\n\n const payerType =\n this.payerType === \"medicare_advantage_payers\" ? \"medicare_advantage\" : this.payerType;\n const state = this.chart.data.datasets[0].data[clickLocation.index].feature;\n\n const payerId = this.payersForState(payerType, stateAbbreviation(state))[0];\n\n bypassPayerModalToDetails(payerType, payerId, this.drug, this.coverageDetailsAnchor());\n }\n\n generateLegendLabels(chart) {\n const relevantStates = chart.data.datasets[0].data.filter(d => !isTerritory(d.feature));\n const presentValues = _.uniq(relevantStates.map(d => d.value))\n .sort()\n .reverse();\n\n return presentValues.map(f => {\n const displayValue = this.displayValueFromFraction(f);\n\n return {\n text: displayValue,\n fillStyle: this.colorForDisplayValue(displayValue),\n pointStyle: \"rect\",\n fontColor: chart.legend.options.labels.color,\n };\n });\n }\n\n tooltipCallbacks() {\n return {\n title: items => topojsonStateName(items[0].raw.feature),\n label: item => this.displayValueFromFraction(item.raw.value),\n labelColor: item => ({ backgroundColor: this.colorFromFraction(item.raw.value) }),\n };\n }\n\n colorForStateOnMap(chartDatum) {\n const state = chartDatum.raw.feature;\n const payers = this.payersForState(this.payerType, stateAbbreviation(state));\n const color = this.colorFromFraction(chartDatum.raw.value);\n\n if (_.isEmpty(applyPayerFilters(this.payerType, payers))) {\n return this.fadeColor(color);\n } else {\n return color;\n }\n }\n\n colorFromFraction(fraction) {\n return this.colorForDisplayValue(this.displayValueFromFraction(fraction));\n }\n\n fadeColor(rgb) {\n const hex25 = \"40\";\n\n return `${rgb}${hex25}`; // appending a hex value takes this to RGBA, fading the base color against the white background.\n }\n\n coverageDetailsAnchor() {\n return null; // Here for chart-specific specialization\n }\n\n get nation() {\n return topojson.feature(atlas, atlas.objects.nation).features[0];\n }\n\n get states() {\n return topojson.feature(atlas, atlas.objects.states).features;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"dependant\"];\n\n static values = { noEvents: Boolean };\n\n connect() {\n this.evaluateDependants();\n }\n\n checkAll() {\n this.setAllCheckboxes(true);\n this.evaluateDependants();\n this.setAllCheckboxes(true);\n }\n\n checkNone() {\n this.setAllCheckboxes(false);\n this.evaluateDependants();\n this.setAllCheckboxes(false);\n }\n\n checkProgramatic(event) {\n const boxesToCheck = JSON.parse(event.currentTarget.dataset.checkboxListSelect);\n\n this.checkboxTargets.forEach(checkbox => {\n this.setChecked(checkbox, boxesToCheck.includes(checkbox.value));\n });\n }\n\n toggleByToken(event) {\n const token = event.currentTarget.dataset.checkboxListToken;\n\n this.checkboxTargets\n .filter(checkbox => checkbox.dataset.checkboxListToken === token)\n .forEach(checkbox => this.setChecked(checkbox, !checkbox.checked));\n }\n\n toggleGroup(event) {\n const groupIds = JSON.parse(event.currentTarget.dataset.checkboxListSelect);\n const groupBoxes = this.checkboxTargets.filter(checkbox => groupIds.includes(checkbox.value));\n\n const allChecked = groupBoxes.every(checkbox => checkbox.checked);\n\n groupBoxes.forEach(checkbox => {\n this.setChecked(checkbox, !allChecked);\n });\n }\n\n setAllCheckboxes(checked) {\n this.checkboxTargets.forEach(checkbox => {\n if (!checkbox.disabled) {\n this.setChecked(checkbox, checked);\n }\n });\n }\n\n evaluateDependants() {\n this.dependantTargets.forEach(el => {\n const dependantCheckbox = el.querySelector(\"input[type=checkbox]\");\n const parent = this.checkboxTargets.find(other => other.value === el.dataset.dependantOn);\n const disabled = !parent || !parent.checked;\n\n el.classList.toggle(\"opacity-50\", disabled);\n dependantCheckbox.disabled = disabled;\n if (disabled) {\n this.setChecked(dependantCheckbox, false);\n }\n });\n }\n\n setChecked(checkbox, checked) {\n if (checkbox.checked !== checked) {\n checkbox.checked = checked;\n\n if (!this.noEventsValue) {\n checkbox.dispatchEvent(new Event(\"input\"));\n }\n }\n }\n\n get checkboxTargets() {\n return Array.from(this.element.querySelectorAll(\"input[type=checkbox]\"));\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"source\"];\n\n copy() {\n this.sourceTarget.select();\n document.execCommand(\"copy\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"details\", \"chevron\"];\n\n toggle() {\n this.chevronTargets.forEach(t => t.classList.toggle(\"rotate-right\"));\n this.detailsTargets.forEach(t => t.classList.toggle(\"hidden\"));\n }\n}\n","export default `\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n`;\n","import { Controller } from \"stimulus\";\nimport spinner from \"../templates/spinner\";\n\nexport default class extends Controller {\n runReport(event) {\n event.preventDefault();\n\n this.render(this.payers, spinner);\n\n this.fetch().then(resp => {\n this.render(this.payers, resp.payers);\n this.render(this.results, resp.results);\n });\n }\n\n selectPayer(event) {\n event.preventDefault();\n\n this.render(this.results, spinner);\n\n this.fetch().then(resp => {\n this.render(this.results, resp.results);\n this.highlightSelectedPayer();\n });\n }\n\n fetch() {\n return fetch(this.element.action, {\n method: \"POST\",\n body: new FormData(this.element),\n }).then(resp => resp.json());\n }\n\n render(el, html) {\n el.innerHTML = html;\n el.children[0].scrollIntoView();\n }\n\n highlightSelectedPayer() {\n Array.from(this.payers.querySelectorAll(\"[data-payer]\")).forEach(e =>\n e.classList.remove(\"border-teal\", \"bg-teal-50\"),\n );\n this.payers\n .querySelector(`[data-payer=\"${this.payerId}\"]`)\n .classList.add(\"border-teal\", \"bg-teal-50\");\n }\n\n get payerId() {\n return this.data.get(\"payerId\");\n }\n\n get payers() {\n return document.getElementById(\"payers\");\n }\n\n get results() {\n return document.getElementById(\"results\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nfunction fromString(value) {\n if ([\"true\", \"false\"].includes(value)) {\n return value === \"true\";\n }\n\n return value;\n}\n\nfunction normalizeValues(values) {\n return values.startsWith(\"[\") ? JSON.parse(values) : [values];\n}\n\nexport default class extends Controller {\n static targets = [\"input\", \"inputGroup\", \"sourceInput\"];\n\n connect() {\n const value =\n this.sourceOfTruth?.type === \"checkbox\"\n ? this.sourceOfTruth.checked\n : this.sourceOfTruth?.value;\n\n this.toggle(value);\n }\n\n onChange({ target }) {\n const value = this.useValue ? target.value : target.checked;\n\n this.toggle(value);\n }\n\n toggle(value) {\n if (this.values.includes(fromString(value))) {\n this.inputGroupTargets.forEach(target => target.classList.remove(this.klass));\n this.enable();\n } else {\n this.inputGroupTargets.forEach(target => target.classList.add(this.klass));\n this.disable();\n }\n }\n\n disable() {\n this.inputTargets.forEach(i => {\n const input = i;\n\n if (input.selectize) {\n if (this.shouldClear) input.selectize.clear();\n input.selectize.disable();\n } else if (input.trixId) {\n input.setAttribute(\"disabled\", \"disabled\");\n input.toolbarElement.setAttribute(\"disabled\", \"disabled\");\n } else {\n if (this.shouldClear) input.value = \"\";\n input.setAttribute(\"disabled\", \"disabled\");\n }\n });\n }\n\n enable() {\n this.inputTargets.forEach(i => {\n const input = i;\n\n if (input.selectize) {\n input.selectize.enable();\n } else if (input.trixId) {\n input.removeAttribute(\"disabled\");\n input.toolbarElement.removeAttribute(\"disabled\");\n } else {\n input.removeAttribute(\"disabled\");\n }\n });\n }\n\n get values() {\n return normalizeValues(this.data.get(\"value\")).map(v => fromString(v));\n }\n\n get klass() {\n return this.data.get(\"class\") || \"hidden\";\n }\n\n get useValue() {\n const useValue = this.data.get(\"useValue\");\n\n return useValue ? fromString(useValue) : false;\n }\n\n get shouldClear() {\n const shouldClear = this.data.get(\"shouldClear\");\n\n return shouldClear ? fromString(shouldClear) : true;\n }\n\n get sourceOfTruth() {\n return this.sourceInputTargets.length > 1\n ? this.sourceInputTargets.find(i => i.checked)\n : this.sourceInputTargets[0];\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"action\", \"confirm\", \"confirmExtra\"];\n\n connect() {\n this.reset();\n }\n\n confirm() {\n this.actionTarget.classList.add(\"hidden\");\n this.confirmTarget.removeAttribute(\"disabled\");\n this.confirmTarget.classList.remove(\"hidden\");\n this.confirmExtraTargets.forEach(target => target.classList.remove(\"invisible\"));\n this.confirmTarget.focus();\n }\n\n onClickOutside(event) {\n if (!this.element.contains(event.target)) {\n this.reset();\n }\n }\n\n reset() {\n this.actionTarget.classList.remove(\"hidden\");\n this.confirmTarget.setAttribute(\"disabled\", \"disabled\");\n this.confirmTarget.classList.add(\"hidden\");\n this.confirmExtraTargets.forEach(target => target.classList.add(\"invisible\"));\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n static targets = [\"sourceCheckbox\", \"dependantLabel\"];\n\n connect() {\n this.update();\n }\n\n update() {\n this.dependantLabelTargets.forEach(label => {\n if (this.dependantIsActive(label)) {\n label.classList.remove(\"hidden\");\n } else {\n label.classList.add(\"hidden\");\n this.setCheckboxState(label, false);\n }\n });\n }\n\n checkAllActiveDependants() {\n this.dependantLabelTargets\n .filter(t => this.dependantIsActive(t))\n .forEach(label => this.setCheckboxState(label, true));\n }\n\n dependantIsActive(dependantLabel) {\n const theseValues = dependantLabel.dataset.connectedMultiselectShowForSourceValue.split(\",\");\n\n return _.intersection(this.checkedSourceValues, theseValues).length > 0;\n }\n\n setCheckboxState(label, checked) {\n const checkbox = $(label).find(\"input[type=checkbox]\")[0];\n\n checkbox.checked = checked;\n checkbox.dispatchEvent(new Event(\"input\"));\n }\n\n get checkedSourceValues() {\n return this.sourceCheckboxTargets.filter(t => t.checked).map(t => t.value);\n }\n}\n","import { Controller } from \"stimulus\";\nimport \"@selectize/selectize\";\n\nexport default class extends Controller {\n connect() {\n $(this.element).selectize({\n valueField: \"id\",\n labelField: \"name\",\n searchField: [\"name\", \"email\"],\n dataAttr: \"data-details\",\n create: false,\n preload: \"focus\",\n render: {\n option(item) {\n return `\n
\n
\n ${item.name}\n
\n
\n
\n ${item.email || \"No email\"}\n
\n
\n ${item.employer || \"No employer\"}\n
\n
\n
\n `;\n },\n },\n // eslint-disable-next-line consistent-return\n load: (query, callback) => {\n if (!query.length) return callback();\n\n $.ajax({\n url: `/contacts/autocomplete?q=${encodeURIComponent(query)}`,\n type: \"GET\",\n error() {\n callback();\n },\n success(response) {\n callback(response.results);\n },\n });\n },\n });\n\n document.addEventListener(\n \"turbolinks:before-cache\",\n () => {\n this.teardown();\n },\n { once: true },\n );\n }\n\n teardown() {\n this.element?.selectize?.destroy();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n this.load();\n }\n\n load() {\n $.ajax({\n url: this.data.get(\"url\"),\n dataType: \"html\",\n success: data => {\n this.element.outerHTML = data;\n },\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"source\"];\n\n copy() {\n const range = document.createRange();\n\n window.getSelection().removeAllRanges();\n\n const sourceHidden = $(this.sourceTarget).hasClass(\"hidden\");\n\n $(this.sourceTarget).removeClass(\"hidden\");\n\n range.selectNode(this.sourceTarget);\n window.getSelection().addRange(range);\n\n document.execCommand(\"copy\");\n\n $(this.sourceTarget).toggleClass(\"hidden\", sourceHidden);\n window.getSelection().removeAllRanges();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"row\"];\n\n copyToAll(event) {\n const inputsToCopy = event.currentTarget\n .closest(\"[data-copy-row-inputs-target='row']\")\n .querySelectorAll(\"input\");\n\n this.rowTargets.forEach(row => {\n const rowInputs = row.querySelectorAll(\"input\");\n\n rowInputs.forEach((ri, i) => {\n ri.value = inputsToCopy[i].value;\n });\n });\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n static targets = [\"count\", \"payerTypeInput\", \"drugInput\"];\n\n connect() {\n this.updateCounts();\n }\n\n updateCounts() {\n const selectedPayerTypes = this.checkedValues(this.payerTypeInputTargets);\n const selectedDrugs = this.checkedValues(this.drugInputTargets);\n\n this.countTargets.forEach(target => {\n const coverages = JSON.parse(target.dataset.coverageCountingCoverages);\n\n const sum = this.assembleCount(selectedPayerTypes, selectedDrugs, coverages);\n\n target.innerText = sum;\n this.toggleAlertClass(target, sum);\n });\n }\n\n assembleCount(payerTypeIds, drugIds, coverages) {\n const counts = payerTypeIds.map(payerTypeId =>\n drugIds.map(drugId => coverages[payerTypeId]?.[drugId]),\n );\n\n return _.sum(_.compact(_.flatten(counts)));\n }\n\n checkedValues(targets) {\n return targets.filter(i => i.checked).map(i => i.value);\n }\n\n toggleAlertClass(target, sum) {\n const alertClass = target.dataset.coverageCountingAlertClass;\n\n if (alertClass) {\n $(target)\n .parent()\n .toggleClass(alertClass, sum > 0);\n }\n }\n\n get coverageData() {\n return JSON.parse(this.data.get(\"coverages\"));\n }\n}\n","const ENOUGH_TIME_TO_RESIZE = 100; // ms\n\nexport default class {\n constructor(elementsThatCouldResize) {\n this.observer = new ResizeObserver(this.onResize.bind(this));\n\n elementsThatCouldResize.forEach(element => this.observer.observe(element));\n }\n\n onResize() {\n if (this.entryToPreserve) {\n const newPosition = this.entryToPreserve.getBoundingClientRect().top;\n\n window.scrollBy({ top: newPosition - this.topToPreserve });\n }\n }\n\n preservePosition(element) {\n clearTimeout(this.timeout);\n\n this.topToPreserve = element?.getBoundingClientRect().top;\n this.entryToPreserve = element;\n\n this.timeout = setTimeout(this.clear.bind(this), ENOUGH_TIME_TO_RESIZE);\n }\n\n clear() {\n delete this.entryToPreserve;\n delete this.topToPreserve;\n\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n}\n","import _ from \"lodash\";\nimport { Controller } from \"stimulus\";\nimport { screenWithinBreakpoint } from \"../utilities/screen_size_breakpoints\";\nimport PreserveScrollPosition from \"../utilities/preserve_scroll_position\";\n\nconst drugCountBreakpoints = {\n \"\": 1,\n sm: 2,\n md: 3,\n xl: 4,\n \"2k\": 6,\n \"4k\": 8,\n \"8k\": 16,\n};\n\nexport default class extends Controller {\n static targets = [\"column\", \"section\", \"sectionTitle\", \"gutterLeft\", \"gutterRight\"];\n\n connect() {\n this.shiftAmount = 0;\n this.scrollCompensation = new PreserveScrollPosition(this.sectionTargets);\n\n window.addEventListener(\"resize\", this.onScreenResize.bind(this));\n\n this.updateVisiblity();\n }\n\n onScreenResize() {\n this.scrollCompensation.clear();\n\n this.updateVisiblity();\n }\n\n updateVisiblity() {\n this.hideOverflowingColumns();\n this.toggleGutters();\n }\n\n shiftLeft(event) {\n this.shiftAmount = Math.max(this.shiftAmount - 1, 0);\n\n this.updateVisiblityPreservingVerticalPosition(event.target);\n }\n\n shiftRight(event) {\n this.shiftAmount = Math.min(this.shiftAmount + 1, this.drugCount - 1);\n\n this.updateVisiblityPreservingVerticalPosition(event.target);\n }\n\n hideOverflowingColumns() {\n const shownIndices = this.shownDrugIndices();\n\n this.columnTargets.forEach(target => {\n target.classList.toggle(\"hidden\", !shownIndices.includes(parseInt(target.dataset.index)));\n });\n }\n\n updateVisiblityPreservingVerticalPosition(elementToPreserve) {\n this.scrollCompensation.preservePosition(this.sectionNearest(elementToPreserve));\n\n this.updateVisiblity();\n }\n\n toggleGutters() {\n const shownIndices = this.shownDrugIndices();\n\n const showLeftGutter = this.overflowExists() && !shownIndices.includes(0);\n const showRightGutter = this.overflowExists() && !shownIndices.includes(this.drugCount - 1);\n\n $(this.sectionTargets)\n .toggleClass(\"rounded-l-xl\", !showLeftGutter)\n .toggleClass(\"rounded-r-xl\", !showRightGutter)\n .css(\"margin-left\", showLeftGutter ? \"0\" : \"\")\n .css(\"margin-right\", showRightGutter ? \"0\" : \"\");\n\n $(this.sectionTitleTargets).css(\"margin-left\", !showLeftGutter ? \"0\" : \"\");\n\n $(this.gutterLeftTargets).toggleClass(\"hidden\", !showLeftGutter);\n $(this.gutterRightTargets).toggleClass(\"hidden\", !showRightGutter);\n }\n\n shownDrugIndices() {\n const visibleDrugCount = this.maxVisibleDrugs();\n const shiftWithoutWrap = Math.min(this.shiftAmount, this.drugCount - visibleDrugCount);\n\n return _.times(visibleDrugCount, i => shiftWithoutWrap + i);\n }\n\n overflowExists() {\n return !screenWithinBreakpoint(\n _.findKey(drugCountBreakpoints, drugCount => drugCount >= this.drugCount),\n );\n }\n\n maxVisibleDrugs() {\n return _.findLast(drugCountBreakpoints, (_count, breakpoint) =>\n screenWithinBreakpoint(breakpoint),\n );\n }\n\n sectionNearest(element) {\n let nearestSection = null;\n\n let minDistance = Infinity;\n\n const rect = element.getBoundingClientRect();\n\n const distanceFrom = otherElement => {\n const otherRect = otherElement.getBoundingClientRect();\n\n return Math.min(Math.abs(rect.top - otherRect.top), Math.abs(rect.bottom - otherRect.bottom));\n };\n\n this.sectionTargets.forEach(section => {\n const distance = distanceFrom(section);\n\n if (distance < minDistance) {\n minDistance = distance;\n nearestSection = section;\n }\n });\n\n return nearestSection;\n }\n\n get drugCount() {\n return $(this.sectionTargets[0]).find(\"[data-coverage-details-carousel-target=column]\").length;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"exportIcon\", \"spinnerIcon\", \"errorIcon\", \"downloadButton\"];\n\n connect() {}\n\n export() {\n $(this.exportIconTarget).addClass(\"hidden\");\n $(this.spinnerIconTarget).removeClass(\"hidden\");\n\n fetch(this.data.get(\"url\"), {\n headers: {\n Accept: \"application/json\",\n },\n })\n .then(blob => blob.json())\n .then(exportResponse => {\n this.intervalId = setInterval(() => {\n fetch(exportResponse.status_url, {\n headers: {\n Accept: \"application/json\",\n },\n })\n .then(blob => blob.json())\n .then(resp => this.processStatusResponses(resp));\n }, 1000);\n });\n }\n\n processStatusResponses(resp) {\n if (resp.error) {\n $(this.spinnerIconTarget).addClass(\"hidden\");\n $(this.errorIconTarget).removeClass(\"hidden\");\n this.clearInterval(this.intervalId);\n } else if (resp.progress === 100) {\n $(this.spinnerIconTarget).addClass(\"hidden\");\n $(this.downloadButtonTarget).removeClass(\"hidden\");\n this.clearInterval(this.intervalId);\n\n this.downloadButtonTarget.href = `/download?key=${resp.download_key}`;\n }\n }\n\n reset() {\n $(this.downloadButtonTarget).addClass(\"hidden\");\n $(this.spinnerIconTarget).addClass(\"hidden\");\n $(this.errorIconTarget).addClass(\"hidden\");\n $(this.exportIconTarget).removeClass(\"hidden\");\n }\n\n disconnect() {\n this.clearInterval();\n }\n\n clearInterval = () => clearInterval(this.intervalId);\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n static targets = [\"checkbox\", \"activeCustomField\", \"fieldNameMirror\"];\n\n connect() {\n this.refreshOptions();\n }\n\n refreshOptions() {\n this.refreshOptionsInternal();\n this.updateNameMirrors();\n }\n\n refreshOptionsInternal() {\n const newValues = this.valuesForActiveField();\n\n this.checkboxTargets.forEach(target => {\n const { value } = target;\n const shown = newValues.includes(value);\n\n $(target).closest(\"label\").toggleClass(\"hidden\", !shown);\n target.checked = shown && target.checked;\n });\n\n const shownCheckboxes = this.checkboxTargets.filter(t => newValues.includes(t.value));\n const allUnchecked = _.every(shownCheckboxes, t => !t.checked);\n const yesBox = shownCheckboxes.find(t => t.value === \"Yes\");\n\n if (allUnchecked && yesBox) {\n yesBox.checked = true;\n yesBox.dispatchEvent(new Event(\"input\"));\n }\n }\n\n valuesForActiveField() {\n const fieldName = this.activeCustomFieldTarget.value;\n\n return JSON.parse(this.data.get(\"values\"))[fieldName] || [];\n }\n\n updateNameMirrors() {\n this.fieldNameMirrorTargets.forEach(target => {\n target.innerText = this.activeCustomFieldTarget.value;\n });\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nconst rowHtml = ({ uuid, text }) => `\n
\n \n
${text}
\n
\n`;\n\nexport default class extends Controller {\n static targets = [\"reorder\"];\n\n onChange(event) {\n const values = event.customFieldValues.map(({ uuid, longName, shortName }) => ({\n uuid,\n text: _.isEmpty(shortName.trim()) ? longName : shortName,\n }));\n\n _.forEach($(this.reorderTarget).find(\".horizontal-priority-sortable\"), el => {\n const value = values.find(v => v.uuid === $(el).data(\"uuid\"));\n\n if (value) {\n $(el).find(\".badge\").text(value.text);\n\n $(el).find(\"input\").val(value.text);\n } else {\n el.remove();\n }\n });\n\n const newlyAddedValues = _.reject(values, v => this.rowExists(v));\n\n $(this.reorderTarget).append(newlyAddedValues.map(rowHtml).join(\"\"));\n }\n\n rowExists(value) {\n return $(this.reorderTarget).find(`[data-uuid=${value.uuid}]`).length > 0;\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\nimport { createPopper } from \"@popperjs/core\";\n\nconst rowContentsTemplate = iconPickerState => `\n
custom-field-values-with-abbreviations#deleteRow\" data-flow=\"remove\" class=\"roundedl-l px-3 pb-1 cursor-default flex items-center hover:bg-gray-100\">x
\n \n \n \n
custom-field-values-with-abbreviations#showIconPicker\" data-flow=\"icon_image\" data-hide-many-target=\"hideable\" data-hide-many-token=\"dropdown\" class=\"w-16 flex items-center justify-center cursor-pointer border-b border-black no-border-at-rest text-sm text-gray-300 ${iconPickerState}\">No Icon
\n`;\n\nexport default class extends Controller {\n static targets = [\"iconPicker\"];\n\n static values = { iconSvgMap: Object };\n\n addRow() {\n const isDropdown = $(\"[data-hide-many-target=select]\").val() === \"dropdown\";\n const newRow = document.createElement(\"div\");\n\n newRow.classList = \"flex items-stretch\";\n $(newRow).attr(\"data-flow\", \"field_option_row\");\n $(newRow).attr(\"data-uuid\", crypto.randomUUID());\n newRow.innerHTML = rowContentsTemplate(isDropdown ? \"\" : \"hidden\");\n\n $(this.element).append(newRow);\n }\n\n deleteRow(event) {\n $(event.target).parent().remove();\n\n this.onChange();\n }\n\n onChange() {\n const values = _.map(this.fieldOptionRowTargets, target => {\n const uuid = $(target).data(\"uuid\");\n\n const longName = $(target).find(\"[data-flow=long_name]\").val();\n const shortName = $(target).find(\"[data-flow=short_name]\").val();\n\n return { uuid, longName, shortName };\n });\n\n const event = new Event(\"scoutchange\", { bubbles: true });\n\n event.customFieldValues = values;\n\n this.element.dispatchEvent(event);\n }\n\n showIconPicker(event) {\n this.popper?.destroy();\n this.activeIconPickerRow = _.find(this.allFieldOptionRows, row => row.contains(event.target));\n const iconColumn = $(this.activeIconPickerRow).find(\"[data-flow=icon_image]\")[0];\n\n this.popper = createPopper(iconColumn, this.iconPickerTarget, {\n placement: \"left\",\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n mainAxis: true,\n altAxis: true,\n padding: 5,\n },\n },\n ],\n });\n\n this.iconPickerTarget.classList.remove(\"hidden\");\n }\n\n onOutsideClick(event) {\n const isOutside = this.allFieldOptionRows\n .toArray()\n .concat(this.iconPickerTarget)\n .every(c => !c.contains(event.target));\n\n if (isOutside) {\n this.hideIconPicker();\n }\n }\n\n hideIconPicker() {\n delete this.activeIconPickerRow;\n this.popper?.destroy();\n this.iconPickerTarget.classList.add(\"hidden\");\n }\n\n setIcon(event) {\n const value = $(event.target).closest(\"[data-value]\").data(\"value\");\n const icon = _.isEmpty(value) ? \"No Icon\" : this.iconSvgMapValue[value];\n\n $(this.activeIconPickerRow).find(\"[data-flow=icon_value]\").val(value);\n $(this.activeIconPickerRow).find(\"[data-flow=icon_image]\").html(icon);\n\n this.hideIconPicker();\n }\n\n get allFieldOptionRows() {\n return $(this.element).find(\"[data-flow=field_option_row\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nimport moment from \"moment\";\n\nimport Pikaday from \"pikaday\";\nimport \"pikaday/css/pikaday.css\";\n\nwindow.moment = moment;\n\nexport default class extends Controller {\n static targets = [\"input\"];\n\n connect() {\n const inputElement = this.hasInputTarget ? this.inputTarget : this.element;\n\n this.picker = new Pikaday({\n field: inputElement,\n format: \"MM/DD/YYYY\",\n toString(date) {\n return moment(date).format(\"MM/DD/YYYY\");\n },\n parse(dateString) {\n const supportedFormats = [\"MM-DD-YYYY\", \"MM/DD/YYYY\"];\n\n return moment(dateString, supportedFormats).toDate();\n },\n onSelect: () => {\n this.element.dispatchEvent(new CustomEvent(\"select\", { bubbles: true }));\n },\n });\n }\n\n clear() {\n this.picker.clear();\n }\n}\n","import { Controller } from \"stimulus\";\nimport InputMask from \"inputmask\";\n\nexport default class extends Controller {\n connect() {\n const decimalPlaces = this.data.get(\"scale\") || 0;\n\n this.inputMask = new InputMask(\"decimal\", {\n digits: decimalPlaces,\n rightAlign: false,\n enforceDigitsOnBlur: true,\n allowMinus: false,\n });\n this.inputMask.mask(this.element);\n }\n}\n","import { Controller } from \"stimulus\";\nimport * as htmlToImage from \"html-to-image\";\nimport moment from \"moment\";\n\nexport default class extends Controller {\n static targets = [\"exclude\", \"image\", \"frame\", \"footer\"];\n\n static values = { htmlToImageKnownFaulty: Boolean };\n\n async download() {\n const monotonicTimestamp = moment().format(\"YYYY-MM-DD_kk-mm-ss\");\n const filename = `${monotonicTimestamp}-chart.png`;\n const width = this.element.offsetWidth;\n const height = this.element.offsetHeight + this.footerTarget.offsetHeight;\n\n const options = {\n backgroundColor: \"#fff\",\n filter: el => !Array.from(this.excludeTargets).includes(el),\n };\n\n this.frameTarget.setAttribute(\"style\", `width:${width}px; height:${height}px`);\n\n const imageData = await this.toPng(this.element, options);\n\n this.insertImage(imageData);\n\n const data = await this.toPng(this.frameTarget, options);\n\n this.saveFile(data, filename);\n }\n\n async toPng(element, options) {\n let dataUrl = await htmlToImage.toPng(element, options);\n\n let previousLength = -1;\n\n let i = 0;\n\n // Safari and Firefix cause issues with our htmltoimage library since they appear to not fully wait on images to load\n // https://github.com/bubkoo/html-to-image/issues/361\n // Chrome is not known to exhibit this behavior, so we skip the mitigation for performance\n if (this.htmlToImageKnownFaultyValue) {\n while (previousLength !== dataUrl.length && i < 10) {\n previousLength = dataUrl.length;\n // eslint-disable-next-line no-await-in-loop\n dataUrl = await htmlToImage.toPng(element, options);\n i += 1;\n }\n }\n\n return dataUrl;\n }\n\n insertImage(imageData) {\n const img = document.createElement(\"img\");\n\n img.src = imageData;\n this.imageTarget.appendChild(img);\n }\n\n saveFile(imageData, filename) {\n const anchor = document.createElement(\"a\");\n\n anchor.setAttribute(\"href\", imageData);\n anchor.setAttribute(\"download\", filename);\n anchor.click();\n anchor.remove();\n this.imageTarget.removeChild(this.imageTarget.firstChild);\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"rowContainer\", \"rowTemplate\"];\n\n addRow() {\n const newRow = document.createElement(\"div\");\n\n newRow.innerHTML = this.rowTemplateTarget.innerHTML;\n\n this.rowContainerTarget.appendChild(newRow);\n }\n\n removeRow(event) {\n const row = event.currentTarget.parentElement;\n\n this.rowContainerTarget.removeChild(row);\n }\n}\n","import { Controller } from \"stimulus\";\nimport InputMask from \"inputmask\";\n\nexport default class extends Controller {\n static targets = [\"price\", \"noPriceReason\", \"reset\"];\n\n connect() {\n this.inputMask = new InputMask(\"decimal\", {\n digits: \"4\",\n rightAlign: false,\n enforceDigitsOnBlur: true,\n allowMinus: false,\n });\n this.inputMask.mask(this.priceTarget);\n if (this.priceTarget.value) {\n this.hideNoPriceReason();\n } else if (this.noPriceReasonTarget.value) {\n this.hidePrice();\n }\n }\n\n reset() {\n this.priceTarget.value = null;\n this.noPriceReasonTarget.selectize.clear();\n this.noPriceReasonTarget.parentElement.classList.remove(\"hidden\");\n this.priceTarget.parentElement.classList.add(\"flex\");\n this.priceTarget.parentElement.classList.remove(\"hidden\");\n this.resetTarget.classList.add(\"hidden\");\n }\n\n onPriceInput() {\n if (this.priceTarget.value) {\n this.hideNoPriceReason();\n } else {\n this.reset();\n }\n }\n\n onNoPriceReasonBlur() {\n if (this.noPriceReasonTarget.value) {\n this.hidePrice();\n } else {\n this.reset();\n }\n }\n\n hidePrice() {\n this.priceTarget.parentElement.classList.remove(\"flex\");\n this.priceTarget.parentElement.classList.add(\"hidden\");\n this.resetTarget.classList.remove(\"hidden\");\n }\n\n hideNoPriceReason() {\n this.noPriceReasonTarget.parentElement.classList.add(\"hidden\");\n this.resetTarget.classList.remove(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"showWhenActive\", \"showWhenInactive\", \"selectedCount\", \"submit\"];\n\n static values = { form: String };\n\n connect() {\n this.$checkboxTargets.on(\"input\", () => this.update());\n\n this.update();\n }\n\n start() {\n $(this.showWhenInactiveTargets).addClass(\"hidden\");\n $(this.showWhenActiveTargets).removeClass(\"hidden\");\n this.$inactiveRowTargets.addClass(\"hidden\");\n this.$checkboxColumnTargets.removeClass(\"hidden\");\n this.$checkboxTargets.attr(\"disabled\", false);\n\n this.update();\n }\n\n stop() {\n $(this.showWhenInactiveTargets).removeClass(\"hidden\");\n $(this.showWhenActiveTargets).addClass(\"hidden\");\n this.$inactiveRowTargets.removeClass(\"hidden\");\n this.$checkboxColumnTargets.addClass(\"hidden\");\n this.$checkboxTargets.attr(\"disabled\", true);\n }\n\n update() {\n this.selectedCountTarget.innerText = this.selectedCount;\n $(this.submitTarget).attr(\"disabled\", this.selectedCount === 0);\n }\n\n get $activeRowTargets() {\n return $(`#${this.formValue} [data-e-alert-builder-table-target='activeRow']`);\n }\n\n get $inactiveRowTargets() {\n return $(`#${this.formValue} [data-e-alert-builder-table-target='inactiveRow']`);\n }\n\n get $checkboxColumnTargets() {\n return $(`#${this.formValue} [data-e-alert-builder-table-target='checkboxColumn']`);\n }\n\n get $checkboxTargets() {\n return $(`#${this.formValue} input[type=checkbox]`);\n }\n\n get selectedCount() {\n return $(`#${this.formValue} input[type=checkbox]:checked`).length;\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n static targets = [\"tableEntry\", \"hiddenWhenPayerTypeAmbiguous\", \"shownWhenPayerTypeAmbiguous\"];\n\n static values = { fixedPayerType: String };\n\n connect() {\n new MutationObserver(this.onTableEntriesChanged.bind(this)).observe(this.element, {\n childList: true,\n });\n\n this.onTableEntriesChanged();\n }\n\n removeExistingCoverage(event) {\n const taskId = event.currentTarget.dataset.coverageTaskId;\n\n this.tableEntryTargets.find(t => t.dataset.coverageTaskId === taskId).remove();\n }\n\n addRelatedCoverage() {\n this.triggerModal(\"related\");\n }\n\n addOtherCoverage() {\n this.triggerModal(\"other\");\n }\n\n triggerModal(collection) {\n $(this.modalFormTarget).find('input[name=\"task_id[]\"]').remove();\n this.tableEntryTargets.forEach(t => {\n $(this.modalFormTarget).append(\n ``,\n );\n });\n\n $(this.modalFormTarget).find(\"input[name=payer_type]\").val(this.currentPayerType);\n $(this.modalFormTarget).find(\"input[name=collection]\").val(collection);\n $(this.modalFormTarget).find(\"input[type=submit]\").click();\n }\n\n onTableEntriesChanged() {\n const ambiguous = _.isEmpty(this.currentPayerType);\n\n $(this.shownWhenPayerTypeAmbiguousTargets).toggleClass(\"hidden\", !ambiguous);\n $(this.hiddenWhenPayerTypeAmbiguousTargets).toggleClass(\"hidden\", ambiguous);\n }\n\n get currentPayerType() {\n if (this.hasFixedPayerTypeValue) {\n return this.fixedPayerTypeValue;\n } else if (this.hasTableEntryTarget) {\n return this.tableEntryTargets[0].dataset.payerType;\n } else {\n return \"\";\n }\n }\n\n get modalFormTarget() {\n return document.getElementById(\"modal_form\");\n }\n}\n","import { Controller } from \"stimulus\";\nimport Rails from \"@rails/ujs\";\n\nexport default class extends Controller {\n static targets = [\"payerModalCheckbox\", \"coverageModalSelect\"];\n\n static values = { endpoint: String };\n\n connect() {\n this.payerModalCheckboxTargets.forEach(t => {\n const checkbox = $(t).find(\"input[name=coverage_task_ids]\")[0];\n\n checkbox.checked = this.pageFormHasTaskColumn(checkbox.value);\n });\n }\n\n updateColumnsFromCheckboxes() {\n this.payerModalCheckboxTargets.forEach(t => {\n const checkbox = $(t).find(\"input[name=coverage_task_ids]\")[0];\n const newFormColumn = $(t).find(\"[data-e-alert-coverage-table-modal-target=tableEntry]\")[0];\n\n if (checkbox.checked) {\n this.addPageFormColumn(checkbox.value, newFormColumn.innerHTML);\n }\n });\n }\n\n async updateColumnsFromSelect() {\n const taskId = this.coverageModalSelectTarget.value;\n\n const response = await fetch(`${this.endpointValue}?task_id=${taskId}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": Rails.csrfToken(),\n },\n });\n\n const html = await response.text();\n\n this.addPageFormColumn(taskId, html);\n }\n\n addPageFormColumn(taskId, html) {\n if (!this.pageFormHasTaskColumn(taskId)) {\n $(this.pageFormTarget).append(html);\n }\n }\n\n removePageFormColumn(taskId) {\n $(this.pageFormTarget).find(`[data-coverage-task-id=\"${taskId}\"]`).remove();\n }\n\n pageFormHasTaskColumn(taskId) {\n return $(this.pageFormTarget).find(`[data-coverage-task-id=\"${taskId}\"]`).length > 0;\n }\n\n get pageFormTarget() {\n return document.getElementById(\"section_form\");\n }\n}\n","import { Controller } from \"stimulus\";\nimport Rails from \"@rails/ujs\";\n\nexport default class extends Controller {\n static values = { url: String, filename: String };\n\n async download() {\n const response = await fetch(this.urlValue, {\n method: \"POST\",\n headers: {\n \"X-CSRF-Token\": Rails.csrfToken(),\n },\n });\n\n const data = await response.blob();\n const objectUrl = URL.createObjectURL(new Blob([data]));\n\n const downloadLink = document.createElement(\"a\");\n\n downloadLink.href = objectUrl;\n downloadLink.setAttribute(\"download\", this.filenameValue);\n downloadLink.click();\n\n URL.revokeObjectURL(objectUrl);\n }\n\n async downloadAndReload() {\n await this.download();\n\n setTimeout(() => {\n window.location.reload();\n }, 0);\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\nimport HtmldiffAsyncRunner from \"../utilities/htmldiff_async_runner\";\n\nexport default class extends Controller {\n static targets = [\n \"select\",\n \"snapshot\",\n \"snapshotTrix\",\n \"snapshotTrixContainer\",\n \"snapshotTrixPlaceholder\",\n \"htmldiff\",\n \"current\",\n ];\n\n connect() {\n this.asyncRunners = {};\n this.update();\n }\n\n async fetchAndUpdate() {\n const response = await fetch(this.resourceUrl);\n const newFieldValues = await response.json();\n\n this.snapshotTargets.forEach(el => {\n el.innerHTML = [\n \"
\",\n newFieldValues?.[$(el).data(\"section-entry-field-name\")],\n \"
\",\n ].join(\"\\n\");\n });\n\n this.snapshotTrixTargets.forEach(el => {\n el.editor.loadHTML(newFieldValues?.[$(el).data(\"section-entry-field-name\")] || \"\");\n });\n\n this.snapshotTrixContainerTargets.forEach(el => {\n $(el).toggleClass(\n \"hidden\",\n _.isEmpty(newFieldValues?.[$(el).data(\"section-entry-field-name\")]),\n );\n });\n\n this.snapshotTrixPlaceholderTargets.forEach(el => {\n $(el).toggleClass(\n \"hidden\",\n !_.isEmpty(newFieldValues?.[$(el).data(\"section-entry-field-name\")]),\n );\n });\n\n this.update();\n }\n\n update() {\n this.allFieldNames.forEach(thisField => {\n const findMatching = targets => $(targets.find(el => this.fieldName(el) === thisField));\n\n const snapshotValue =\n findMatching(this.snapshotTargets).find(\".trix-content\").html() || this.diffHtml(\"\");\n const currentValue =\n findMatching(this.currentTargets).find(\".trix-content\").html() || this.diffHtml(\"\");\n\n this.initializeRunner(thisField);\n this.asyncRunners[thisField].calculateDiff(snapshotValue, currentValue);\n });\n }\n\n renderDiff(fieldName, diff) {\n this.htmldiffTargets\n .filter(t => this.fieldName(t) === fieldName)\n .forEach(target => {\n target.innerHTML = this.diffHtml(diff);\n });\n }\n\n initializeRunner(thisField) {\n if (!this.asyncRunners[thisField]) {\n this.asyncRunners[thisField] = new HtmldiffAsyncRunner(d => this.renderDiff(thisField, d));\n }\n }\n\n fieldName(target) {\n return $(target).data(\"section-entry-field-name\");\n }\n\n diffHtml(diff) {\n return [\"
\", diff, \"
\"].join(\"\\n\");\n }\n\n get allFieldNames() {\n return _.uniq(this.currentTargets.map(t => this.fieldName(t)));\n }\n\n get resourceUrl() {\n const snapshotSetId = this.selectTarget.value;\n const urlBase = this.data.get(\"url\");\n\n return `${urlBase}?snapshot_set_id=${snapshotSetId}`;\n }\n}\n","import { Controller } from \"stimulus\";\nimport HtmldiffAsyncRunner from \"../utilities/htmldiff_async_runner\";\n\nexport default class extends Controller {\n static targets = [\"editable\", \"comparator\", \"output\", \"spinner\"];\n\n connect() {\n this.htmldiffRunner = new HtmldiffAsyncRunner(this.renderDiff.bind(this), this.spinnerTarget);\n this.update();\n }\n\n update() {\n this.htmldiffRunner.calculateDiff(this.comparatorValue, this.editableValue);\n }\n\n renderDiff(diff) {\n this.outputTarget.innerHTML = [\n \"
\",\n diff,\n \"
\",\n ].join(\"\\n\");\n }\n\n get editableValue() {\n return this.editableTarget.value;\n }\n\n get comparatorValue() {\n return $(this.comparatorTarget).find(\".trix-content\").html();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n fire(e) {\n const { event } = e.currentTarget.dataset;\n\n window.dispatchEvent(new CustomEvent(event));\n }\n}\n","import { Controller } from \"stimulus\";\n\nconst universalDomainExclusions = [/^tel:/];\n\nexport default class extends Controller {\n static targets = [\"modal\", \"leaveButton\"];\n\n connect() {\n Array.from(this.element.querySelectorAll(\"a\"))\n .filter(anchor => anchor.dataset.target !== \"leaveButton\")\n .forEach(anchor => {\n if (this.showWarning && this.isExternalLink(anchor)) {\n anchor.addEventListener(\"click\", event => {\n event.preventDefault();\n\n this.leaveButtonTarget.href = anchor.href;\n this.modalTarget.classList.remove(\"hidden\");\n });\n } else if (anchor.host !== window.location.host) {\n anchor.setAttribute(\"target\", \"_blank\");\n }\n });\n }\n\n cancel() {\n this.leaveButtonTarget.href = \"#\";\n this.modalTarget.classList.add(\"hidden\");\n }\n\n leave() {\n this.modalTarget.classList.add(\"hidden\");\n }\n\n get domains() {\n return JSON.parse(this.data.get(\"internal-domains\"));\n }\n\n get showWarning() {\n return this.data.get(\"showWarning\") === \"true\";\n }\n\n isExternalLink(anchor) {\n return !this.domains.concat(universalDomainExclusions).some(d => anchor.href.match(d));\n }\n}\n","import { Controller } from \"stimulus\";\n\nimport \"blueimp-file-upload/js/jquery.fileupload\";\n\nexport default class extends Controller {\n static targets = [\n \"file\",\n \"placeholder\",\n \"progress\",\n \"clear\",\n \"imagePreview\",\n \"key\",\n \"name\",\n \"dropzone\",\n ];\n\n connect() {\n this.form = $(this.fileTarget).closest(\"form\");\n const dropzone = this.hasDropzoneTarget ? this.dropzoneTarget : document;\n\n dropzone.addEventListener(\"dragover\", this.showDropzone.bind(this));\n dropzone.addEventListener(\"dragleave\", this.hideDropzone.bind(this));\n dropzone.addEventListener(\"drop\", this.hideDropzone.bind(this));\n\n $(this.fileTarget).fileupload({\n fileInput: this.fileTarget,\n url: this.data.get(\"url\"),\n type: \"POST\",\n autoUpload: true,\n paramName: \"file\",\n dataType: \"XML\",\n replaceFileInput: true,\n dropZone: dropzone,\n add: (e, data) => {\n const fileData = { ...data };\n const selectedFile = fileData.files[0];\n\n this.nameTarget.value = selectedFile.name;\n\n const formData = JSON.parse(this.data.get(\"fields\"));\n\n formData[\"Content-Type\"] = selectedFile.type;\n fileData.formData = formData;\n fileData.submit();\n },\n start: () => {\n this.maybePlaceholderTarget?.classList.add(\"hidden\");\n this.progressTarget.innerText = \"Uploading...\";\n this.maybeImagePreviewTarget?.classList.add(\"hidden\");\n },\n progressall: (e, data) => {\n const progress = parseInt((data.loaded / data.total) * 100);\n\n this.maybePlaceholderTarget?.classList.add(\"hidden\");\n this.progressTarget.innerText = `Uploading...${progress}%`;\n },\n done: (e, data) => {\n const key = $(data.jqXHR.responseXML).find(\"Key\").text();\n\n this.keyTarget.value = key;\n\n this.maybePlaceholderTarget?.classList.add(\"hidden\");\n this.maybeClearTarget?.classList.remove(\"hidden\");\n\n if (this.autoSubmit) {\n this.fileTarget.form.submit();\n } else if (this.hasImagePreviewTarget) {\n this.previewImage(data.files[0]);\n } else {\n this.progressTarget.innerText = data.files[0].name;\n }\n },\n fail() {\n this.progressTarget.innerText = \"Upload failed!\";\n },\n });\n\n this.dispatchConnectedEvent();\n }\n\n clear() {\n this.fileTarget.value = \"\";\n this.maybeClearTarget?.classList.add(\"hidden\");\n this.progressTarget.innerText = \"\";\n this.maybeImagePreviewTarget?.classList.add(\"hidden\");\n this.keyTarget.value = \"\";\n this.nameTarget.value = \"\";\n\n this.maybePlaceholderTarget?.classList.remove(\"hidden\");\n }\n\n previewImage(file) {\n const reader = new FileReader();\n\n reader.onload = event => {\n this.progressTarget.innerText = \"\";\n this.imagePreviewTarget.classList.remove(\"hidden\");\n this.imagePreviewTarget.src = event.target.result;\n };\n\n reader.readAsDataURL(file);\n }\n\n dispatchConnectedEvent() {\n this.element.dispatchEvent(new CustomEvent(\"file-input-connected\", { bubbles: true }));\n }\n\n showDropzone(event) {\n const { items } = event.dataTransfer;\n\n if (items.length !== 0 && items[0].kind === \"file\") {\n this.dropzoneTarget.classList.add(\"border-teal\");\n this.dropzoneTarget.classList.add(\"bg-teal-25\");\n }\n }\n\n hideDropzone() {\n this.dropzoneTarget.classList.remove(\"border-teal\");\n this.dropzoneTarget.classList.remove(\"bg-teal-25\");\n }\n\n get maybeImagePreviewTarget() {\n return this.hasImagePreviewTarget ? this.imagePreviewTarget : null;\n }\n\n get maybePlaceholderTarget() {\n return this.hasPlaceholderTarget ? this.placeholderTarget : null;\n }\n\n get maybeClearTarget() {\n return this.hasClearTarget ? this.clearTarget : null;\n }\n\n get autoSubmit() {\n return this.data.get(\"auto-submit\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"searchBox\", \"listItem\"];\n\n connect() {\n this.clearFilter();\n }\n\n filterList() {\n const allowFilter = /[^a-z0-9 ]/gi;\n const filterExp = new RegExp(this.searchBoxTarget.value.replace(allowFilter, \"\"), \"i\");\n\n this.listItemTargets.forEach(listItem => {\n if (listItem.innerText.match(filterExp)) {\n listItem.classList.toggle(\"hidden\", false);\n } else {\n listItem.classList.toggle(\"hidden\", true);\n const inputField = listItem.querySelector(\"input\");\n\n if (inputField?.checked) {\n const event = new CustomEvent(\"change\", {\n bubbles: true,\n cancelable: true,\n });\n\n inputField.checked = false;\n inputField.dispatchEvent(event);\n }\n }\n });\n }\n\n clearFilter() {\n this.searchBoxTarget.value = \"\";\n this.searchBoxTarget.focus();\n this.filterList();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"filter\"];\n\n connect() {\n this.load();\n }\n\n load() {\n $.ajax({\n url: this.frameUrl,\n dataType: \"html\",\n success: data => {\n this.element.innerHTML = data;\n },\n });\n }\n\n filter() {\n this.load();\n }\n\n get frameUrl() {\n return `${this.data.get(\"url\")}?${this.params}`;\n }\n\n get params() {\n return this.filterTargets\n .filter(t => this.isFilterSelected(t))\n .map(t => `${t.name}=${t.value}`)\n .join(\"&\");\n }\n\n isFilterSelected(target) {\n return target.type === \"checkbox\" ? target.checked : target.value;\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n static targets = [\"filter\", \"label\", \"disable\"];\n\n connect() {\n this.updateLabel();\n }\n\n filter(event) {\n const exclusions = event.target.dataset.filtersResetOnChange?.split(\" \");\n const hash = this.urlHash(event.target);\n const url = `${window.location.pathname}?${this.params(exclusions)}${hash}`;\n\n $(this.disableTargets).prop(\"disabled\", true);\n Turbolinks.clearCache();\n Turbolinks.visit(encodeURI(url));\n }\n\n leave(event) {\n const oldSlug = new RegExp(`${event.target.dataset.filtersLeaveSlug}[^/]*`);\n const newSlug = `${event.target.dataset.filtersLeaveSlug}${event.target.value}`;\n const pathname = window.location.pathname.replace(oldSlug, newSlug);\n\n const url = `${pathname}?${this.params()}${this.urlHash(event.target)}`;\n\n $(this.disableTargets).prop(\"disabled\", true);\n Turbolinks.clearCache();\n Turbolinks.visit(encodeURI(url));\n }\n\n updateLabel() {\n this.labelTargets.forEach(label => {\n label.innerText = this.labelTextFromSelected();\n });\n }\n\n params(exclusions = []) {\n return this.selectedFilters\n .filter(t => !exclusions.includes(t.name))\n .map(t => `${t.name}=${t.value}`)\n .join(\"&\");\n }\n\n propagateToDuplicates(event) {\n this.filterTargets\n .filter(t => t.name === event.currentTarget.name && t.value === event.currentTarget.value)\n .forEach(t => {\n t.checked = event.currentTarget.checked;\n });\n }\n\n urlHash(target) {\n const anchor = target.dataset.filtersAnchor;\n\n return anchor ? `#${anchor}` : window.location.hash;\n }\n\n get selectedFilters() {\n // Some input groups have duplicated inputs for desktop/mobile\n\n return _.uniqWith(\n this.filterTargets.filter(t => this.isFilterSelected(t)),\n (a, b) => a.name === b.name && a.value === b.value,\n );\n }\n\n isFilterSelected(target) {\n const isSelected = [\"checkbox\", \"radio\"].includes(target.type) ? target.checked : target.value;\n\n return target.dataset.filtersInvert ? !isSelected : isSelected;\n }\n\n labelTextFromSelected() {\n const selected = this.selectedFilters.length;\n\n switch (selected) {\n case 0:\n return \"All\";\n case 1:\n return $(this.selectedFilters[0]).closest(\"label\").text().trim();\n default:\n return `${selected} ${this.element.dataset.filtersItemName} selected`;\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"message\"];\n\n connect() {\n this.timeoutIds = [setTimeout(this.disappear, 4500), setTimeout(this.removeFlash, 5000)];\n\n document.addEventListener(\"turbolinks:before-cache\", this.removeFlash, {\n once: true,\n });\n }\n\n close() {\n this.clearTimeouts();\n this.disappear();\n\n setTimeout(this.removeFlash, 500);\n }\n\n removeFlash = () => {\n if (this.hasMessageTarget) {\n this.messageTarget.parentNode.removeChild(this.messageTarget);\n }\n };\n\n disappear = () => {\n if (this.hasMessageTarget) {\n this.messageTarget.classList.add(\"disappear\");\n }\n };\n\n clearTimeouts = () => this.timeoutIds.forEach(clearTimeout);\n\n disconnect() {\n this.clearTimeouts();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n submit() {\n this.element.submit();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n this.element.querySelector(\".field-with-errors\")?.scrollIntoView();\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n static targets = [\"submit\", \"someRequired\"];\n\n connect() {\n this.onChange();\n }\n\n onChange() {\n const isValid = this.element.checkValidity() && this.groupsHaveSomeChecked();\n\n this.submitTargets.forEach(submitEl => {\n submitEl.disabled = !isValid;\n });\n }\n\n onProgramaticChange() {\n // Browsers cannot be trusted to propagate form 'change' events when changing the state of inputs in code.\n // Connecting a triggering event (e.g. a 'Show All' button) to onChange directly could work, but creates race conditions.\n // By placing a callback on the event loop, it is guarenteed to run after all programatic changes take effect.\n setTimeout(() => this.onChange(), 0);\n }\n\n groupsHaveSomeChecked() {\n const groups = {};\n\n this.someRequiredTargets.forEach(el => {\n groups[el.name] = !!(el.checked || groups[el.name]);\n });\n\n return _.every(_.values(groups));\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"grid\", \"container\", \"hideable\"];\n\n one() {\n $(this.gridTargets).css({ \"grid-template-columns\": \"1fr\" });\n $(this.containerTargets).addClass(\"max-w-xl\");\n $(this.containerTargets).removeClass(\"max-w-3xl\");\n $(this.containerTargets).removeClass(\"max-w-5xl\");\n\n this.hideElementsNotInLayout(1);\n }\n\n two() {\n $(this.gridTargets).css({ \"grid-template-columns\": \"1fr 1fr\" });\n $(this.containerTargets).addClass(\"max-w-3xl\");\n $(this.containerTargets).removeClass(\"max-w-xl\");\n $(this.containerTargets).removeClass(\"max-w-5xl\");\n\n this.hideElementsNotInLayout(2);\n }\n\n three() {\n $(this.gridTargets).css({ \"grid-template-columns\": \"1fr 1fr 1fr\" });\n $(this.containerTargets).addClass(\"max-w-5xl\");\n $(this.containerTargets).removeClass(\"max-w-3xl\");\n $(this.containerTargets).removeClass(\"max-w-xl\");\n\n this.hideElementsNotInLayout(3);\n }\n\n hideElementsNotInLayout(columnCount) {\n this.hideableTargets.forEach(target => {\n const targetColumns = $(target)\n .data(\"grid-column-switcher-show-in-columns\")\n .toString()\n .split(\" \")\n .map(x => parseInt(x));\n\n $(target).toggleClass(\"hidden\", !targetColumns.includes(columnCount));\n });\n }\n}\n","import { Controller } from \"stimulus\";\nimport InputMask from \"inputmask\";\n\nexport default class extends Controller {\n connect() {\n this.inputMask = new InputMask(\"a9999\");\n this.inputMask.mask(this.element);\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"hideable\", \"label\"];\n\n toggle(event) {\n const token = $(event.target).closest(\"[data-hide-token]\").data(\"hideToken\");\n\n if (token) {\n this.hideableTargets\n .filter(target => target.dataset.hideToken === token)\n .forEach(target => target.classList.toggle(\"hidden\"));\n\n this.labelTargets\n .filter(target => target.dataset.hideToken === token)\n .forEach(target => target.classList.toggle(this.labelClass));\n } else {\n this.hideableTargets\n .filter(target => !target.dataset.hideToken)\n .forEach(target => target.classList.toggle(\"hidden\"));\n this.labelTargets\n .filter(target => !(\"hideToken\" in target.dataset))\n .forEach(target => target.classList.toggle(this.labelClass));\n }\n }\n\n hideOutside(event) {\n if (!this.element.contains(event.target)) {\n this.hideableTargets.forEach(target => target.classList.add(\"hidden\"));\n this.labelTargets.forEach(target => target.classList.remove(this.labelClass));\n }\n }\n\n get labelClass() {\n return this.data.get(\"label-class\") || \"active\";\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"hideable\", \"radio\", \"select\", \"label\"];\n\n connect() {\n const preselectedRadios = this.radioTargets.filter(target => target.checked);\n const preselectedSelects = this.selectTargets.filter(target => !!target.value);\n\n const preselectedInputs = preselectedRadios.concat(preselectedSelects);\n\n preselectedInputs.forEach(target => this.toggle({ target }));\n }\n\n toggle(event) {\n const targetToShow = event.target.value;\n\n const matchesGroup = t => t.dataset.hideManyGroup === event.target.dataset.hideManyGroup;\n\n this.hideableTargets.filter(matchesGroup).forEach(target => {\n const matches = target.dataset.hideManyToken.split(\" \").includes(targetToShow);\n\n target.classList.toggle(\"hidden\", !matches);\n });\n\n this.labelTargets.filter(matchesGroup).forEach(target => {\n const active = target.dataset.hideManyToken === targetToShow;\n\n target.classList.toggle(\"active\", active);\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"addressForm\", \"addressId\"];\n\n connect() {\n if (this.addressIdTarget.value === \"0\") {\n this.showCustomForm();\n }\n }\n\n addressTypeChange() {\n if (this.addressIdTarget.value === \"0\") {\n this.showCustomForm();\n } else {\n this.hideCustomForm();\n }\n }\n\n hideCustomForm() {\n this.addressFormTarget.classList.add(\"hidden\");\n }\n\n showCustomForm() {\n this.addressFormTarget.classList.remove(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"card\"];\n\n static values = { url: String };\n\n show() {\n if (this.hasCardTarget) {\n this.cardTarget.classList.remove(\"hidden\");\n } else {\n this.controller = new AbortController();\n const { signal } = this.controller;\n\n fetch(this.urlValue, { signal })\n .then(r => r.text())\n .then(html => {\n const fragment = document.createRange().createContextualFragment(html);\n\n this.element.appendChild(fragment);\n })\n .catch(() => {});\n }\n }\n\n hide() {\n if (this.hasCardTarget) {\n this.cardTarget.classList.add(\"hidden\");\n } else if (this.controller) {\n this.controller.abort();\n }\n }\n\n hideOutside(event) {\n if (!this.element.contains(event.target)) {\n this.hide();\n }\n }\n\n disconnect() {\n if (this.hasCardTarget) {\n this.cardTarget.remove();\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"checkbox\", \"display\"];\n\n static values = { nouns: String };\n\n connect() {\n this.update();\n }\n\n update() {\n const checkedTargets = this.checkboxTargets.filter(c => c.checked);\n const checkedCount = checkedTargets.length;\n\n if (checkedCount === 0) {\n this.displayTarget.innerText = \"None\";\n } else if (checkedCount === 1) {\n this.displayTarget.innerText = this.matchingLabelText(checkedTargets[0]);\n } else if (checkedCount === this.checkboxTargets.length) {\n this.displayTarget.innerText = \"All\";\n } else {\n this.displayTarget.innerText = `${checkedCount} ${this.nounsValue}`;\n }\n }\n\n matchingLabelText(checkbox) {\n return $(checkbox).closest(\"label\").text().trim();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"exclusiveInput\", \"otherInput\"];\n\n deselectExclusive() {\n if (this.hasExclusiveInputTarget) {\n this.exclusiveInputTarget.checked = false;\n }\n }\n\n deselectOthers() {\n this.otherInputTargets.forEach(e => {\n e.checked = false;\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n new MutationObserver(this.onClassChange.bind(this)).observe(this.element, {\n attributeFilter: [\"class\"],\n });\n }\n\n onClassChange() {\n const isHidden = this.element.classList.contains(\"hidden\");\n const targetBottom = this.element.getBoundingClientRect().bottom;\n const distanceWithMargin = window.innerHeight - targetBottom - 10;\n\n if (isHidden || distanceWithMargin >= 0) {\n $(this.element).css(\"transform\", \"\");\n } else {\n $(this.element).css(\"transform\", `translateY(${distanceWithMargin}px)`);\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"content\", \"heading\"];\n\n connect() {\n if (this.autoOpen) {\n this.loadContent();\n }\n }\n\n toggle() {\n this.contentTarget.classList.toggle(\"hidden\");\n this.headingTarget.classList.toggle(\"open\");\n\n this.loadContent();\n }\n\n loadContent() {\n if (!this.loaded) {\n $.ajax({\n url: this.data.get(\"url\"),\n dataType: \"html\",\n success: data => {\n this.contentTarget.innerHTML = data;\n this.data.set(\"loaded\", true);\n },\n });\n }\n }\n\n get autoOpen() {\n return this.data.get(\"auto-open\") === \"true\";\n }\n\n get loaded() {\n return this.data.get(\"loaded\") === \"true\";\n }\n}\n","import { Controller } from \"stimulus\";\nimport { isMobile } from \"../utilities/screen_size_breakpoints\";\n\nexport default class extends Controller {\n static targets = [\"menu\", \"menuContainer\", \"hamburger\", \"x\", \"portalContent\", \"footer\"];\n\n show() {\n this.menuContainerTarget.classList.add(\"bg-indigo-800\");\n this.menuContainerTarget.classList.add(\"w-full\");\n this.menuContainerTarget.classList.add(\"h-full\");\n this.hamburgerTarget.classList.add(\"hidden\");\n this.xTarget.classList.remove(\"hidden\");\n this.menuTargets.forEach(mt => mt.classList.remove(\"hidden\"));\n this.portalContentTarget.classList.add(\"hidden\");\n this.footerTarget.classList.add(\"hidden\");\n }\n\n hide() {\n this.menuContainerTarget.classList.remove(\"bg-indigo-800\");\n this.menuContainerTarget.classList.remove(\"w-full\");\n this.menuContainerTarget.classList.remove(\"h-full\");\n this.hamburgerTarget.classList.remove(\"hidden\");\n this.xTarget.classList.add(\"hidden\");\n this.menuTargets.forEach(mt => mt.classList.add(\"hidden\"));\n this.portalContentTarget.classList.remove(\"hidden\");\n this.footerTarget.classList.remove(\"hidden\");\n }\n\n onResize() {\n if (isMobile()) {\n this.hide();\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n this.element.onchange = ({ target: { value } }) => {\n Turbolinks.clearCache();\n Turbolinks.visit(value, { action: \"replace\" });\n };\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"option\", \"source\"];\n\n connect() {\n this.refreshOptions();\n }\n\n refreshOptions() {\n const newValues = this.sourceValues().map(n => n.id.toString());\n\n this.optionTargets.forEach(target => {\n const { value } = target;\n const shown = newValues.includes(value);\n\n $(target).closest(\"label\").toggleClass(\"hidden\", !shown);\n target.checked = shown && target.checked;\n });\n }\n\n sourceValues() {\n const fieldName = this.sourceTarget.value;\n\n return JSON.parse(this.data.get(\"values\"))[fieldName] || [];\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\"];\n\n onHashChange() {\n this.inputTarget.value = window.location.href;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"lockIcon\", \"unlockIcon\", \"unlockButton\", \"content\"];\n\n static values = {\n unlocked: Boolean,\n };\n\n connect() {\n if (this.unlockedValue) {\n this.unlock();\n } else {\n this.lock();\n }\n }\n\n lock() {\n this.element.disabled = true;\n this.lockIconTarget.classList.remove(\"hidden\");\n this.unlockIconTarget.classList.add(\"hidden\");\n this.unlockButtonTarget.classList.remove(\"hidden\");\n this.contentTarget.classList.add(\"opacity-50\");\n }\n\n unlock() {\n this.element.disabled = false;\n this.lockIconTarget.classList.add(\"hidden\");\n this.unlockIconTarget.classList.remove(\"hidden\");\n this.unlockButtonTarget.classList.add(\"hidden\");\n this.contentTarget.classList.remove(\"opacity-50\");\n }\n}\n","import { Controller } from \"stimulus\";\nimport { createPopper } from \"@popperjs/core\";\n\nexport default class extends Controller {\n static targets = [\"popup\", \"state\"];\n\n stateSelected({ currentTarget }) {\n this.clearSelection();\n currentTarget.classList.add(\"active\");\n\n $.ajax({\n url: `${this.baseUrl}/payers/${currentTarget.dataset.region}?popup=true`,\n dataType: \"html\",\n context: this,\n success: data => {\n const popup = document.createRange().createContextualFragment(data);\n\n this.element.appendChild(popup);\n this.popper = createPopper(currentTarget, this.popupTarget);\n },\n });\n }\n\n teardown() {\n this.clearSelection();\n }\n\n clearSelection() {\n if (this.popper) {\n this.popper.destroy();\n }\n\n this.popupTargets.forEach(t => this.element.removeChild(t));\n this.stateTargets.forEach(t => t.classList.remove(\"active\"));\n }\n\n onOutsideClick({ target }) {\n if (!this.isInside(target)) {\n this.clearSelection();\n }\n }\n\n isInside(target) {\n return [...this.stateTargets, ...this.popupTargets].some(c => c.contains(target));\n }\n\n get baseUrl() {\n return this.data.get(\"base-url\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"result\"];\n\n onStateChange({ currentTarget }) {\n $.ajax({\n url: `${this.baseUrl}/payers/${currentTarget.value}`,\n dataType: \"html\",\n context: this,\n success: data => {\n this.resultTarget.innerHTML = data;\n },\n });\n }\n\n get baseUrl() {\n return this.data.get(\"base-url\");\n }\n}\n","import { Controller } from \"stimulus\";\nimport Cookies from \"js-cookie\";\n\nfunction termsAccepted(cookieKey) {\n return Cookies.get(cookieKey);\n}\n\nfunction agreeToTerms(cookieKey) {\n Cookies.set(cookieKey, true, { expires: 365 });\n}\n\nexport default class extends Controller {\n connect() {\n if (termsAccepted(this.cookieKey)) {\n this.teardown();\n } else {\n this.element.classList.remove(\"hidden\");\n }\n }\n\n agree() {\n agreeToTerms(this.cookieKey);\n this.teardown();\n }\n\n teardown() {\n this.element.parentNode.removeChild(this.element);\n }\n\n get cookieKey() {\n return `dkp-map-terms-accepted-${this.data.get(\"map-id\")}`;\n }\n}\n","import _ from \"lodash\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static values = { options: Array, selected: Number };\n\n connect() {\n const conditionalOptions = {};\n const inModal = $(this.element).parents(\".modal\").length > 0;\n\n if (inModal) {\n conditionalOptions.onDropdownOpen = this.buildDropdownRepositionCallback();\n }\n\n $(this.element)\n .selectize({\n ...conditionalOptions,\n width: \"100%\",\n create: true,\n openOnFocus: true,\n closeAfterSelect: true,\n allowEmptyOption: true,\n respect_word_boundaries: false,\n selectOnTab: true,\n items: [this.selectedValue],\n options: this.optionsValue.map(datum => ({\n id: datum[0],\n text: datum[1],\n indents: datum[2],\n descendents: datum[3],\n })),\n valueField: \"id\",\n labelField: \"text\",\n searchField: [\"text\", \"descendents\"],\n score(query) {\n const defaultSearch = this.getScoreFunction(query);\n\n return item => (defaultSearch(item) > 0 ? 1 : 0);\n },\n render: {\n option: (item, escape) => {\n const outputLines = [];\n\n outputLines.push(\n \"
\",\n );\n\n _.each(item.indents, indent => {\n if (indent === \" \") {\n outputLines.push('
');\n } else if (indent === \"I\") {\n outputLines.push(\n '
',\n );\n } else if (indent === \"L\") {\n outputLines.push('
');\n outputLines.push('
');\n outputLines.push('
');\n outputLines.push(\"
\");\n } else if (indent === \"T\") {\n outputLines.push('
');\n outputLines.push('
');\n outputLines.push('
');\n outputLines.push(\"
\");\n }\n });\n\n outputLines.push(`
${escape(item.text)}
`);\n outputLines.push(\"
\");\n\n return outputLines.join(\"\\n\");\n },\n },\n onFocus() {\n if (this.getValue().length === 0) {\n this.clear();\n }\n },\n createFilter(input) {\n return Object.values(this.options).every(\n option => option.text.toLowerCase() !== input.toLowerCase(),\n );\n },\n })\n .on(\"change\", () => this.element.dispatchEvent(new Event(\"scoutchange\", { bubbles: true })));\n\n document.addEventListener(\n \"turbolinks:before-cache\",\n () => {\n this.element?.selectize?.destroy();\n },\n { once: true },\n );\n }\n\n buildDropdownRepositionCallback() {\n return $dropdown => {\n const dropdownPosition = $dropdown[0].getBoundingClientRect();\n const dropdownSpillover = dropdownPosition.bottom - $(window).height();\n\n if (dropdownSpillover > 0) {\n $dropdown.css(\"top\", dropdownPosition.top - dropdownSpillover);\n }\n };\n }\n}\n","import SelectController from \"./select_controller\";\n\nexport default class extends SelectController {\n connect() {\n super.connect();\n\n this.element.onchange = event => {\n const url = `${window.location.pathname}?region=${event.target.value}`;\n\n Turbolinks.clearCache();\n Turbolinks.visit(url, { action: \"replace\" });\n };\n }\n}\n","import { Controller } from \"stimulus\";\n\nimport moment from \"moment\";\n\nimport {\n configure,\n hits,\n pagination,\n panel,\n searchBox,\n refinementList,\n clearRefinements,\n} from \"instantsearch.js/es/widgets\";\n\nimport { connectRange } from \"instantsearch.js/es/connectors\";\n\nconst algoliasearch = require(\"algoliasearch\");\nconst instantsearch = require(\"instantsearch.js\").default;\n\nfunction buildPanelWithTitle(title) {\n return panel({\n hidden(options) {\n return options.results.nbHits === 0;\n },\n templates: {\n header: title,\n },\n cssClasses: {\n header: \"text-gray-600 font-semibold mb-2\",\n },\n })(refinementList);\n}\n\nfunction buildRefinementlist(container, title, attribute) {\n return buildPanelWithTitle(title)({\n container,\n attribute,\n operator: \"or\",\n showMore: true,\n limit: 5,\n cssClasses: {\n count: \"badge-sm badge-indigo\",\n checkbox: \"form-checkbox\",\n label: \"flex items-center text-base\",\n labelText: \"px-2\",\n disabledShowMore: \"hidden\",\n },\n });\n}\n\nfunction buildDateRangeRefinement(container, attribute) {\n return connectRange((renderOptions, isFirstRender) => {\n const { start, refine, widgetParams } = renderOptions;\n const [min, max] = start;\n\n if (isFirstRender) {\n const form = document.createElement(\"form\");\n\n form.addEventListener(\"select\", event => {\n event.preventDefault();\n const inputElements = event.target.form.elements;\n\n const rawMinInputValue = Date.parse(inputElements.min.value);\n const rawMaxInputValue = Date.parse(inputElements.max.value);\n\n refine([\n Number.isFinite(rawMinInputValue) ? rawMinInputValue / 1000 : undefined,\n Number.isFinite(rawMaxInputValue) ? rawMaxInputValue / 1000 : undefined,\n ]);\n });\n\n widgetParams.container.appendChild(form);\n\n return;\n }\n\n widgetParams.container.querySelector(\"form\").innerHTML = `\n
\n From\n \n To\n \n
\n `;\n })({ container, attribute });\n}\n\nfunction buildPagination(container) {\n const customPagination = panel({\n hidden: ({ results }) => results.nbPages < 2,\n })(pagination);\n\n return customPagination({\n container,\n cssClasses: {\n root: \"algolia-pagination\",\n list: \"algolia-pagination-list\",\n item: \"algolia-pagination-item\",\n selectedItem: \"algolia-pagination-item-selected\",\n disabledItem: \"hidden\",\n },\n });\n}\n\nexport default class extends Controller {\n static targets = [\n \"pagination\",\n \"results\",\n \"resultTemplate\",\n \"searchBox\",\n \"dateRange\",\n \"clearFilter\",\n \"clearDateRange\",\n \"refinement\",\n ];\n\n initialize() {\n this.search = instantsearch({\n indexName: this.data.get(\"algolia-index\"),\n searchClient: algoliasearch(this.data.get(\"algolia-id\"), this.data.get(\"algolia-key\")),\n });\n }\n\n connect() {\n this.search.addWidgets([\n configure({\n hitsPerPage: this.data.get(\"page-size\") || 4,\n distinct: true,\n filters: this.data.get(\"filter\"),\n facetingAfterDistinct: true,\n }),\n searchBox({\n container: this.searchBoxTarget,\n placeholder: this.data.get(\"placeholder\"),\n autofocus: true,\n showSubmit: false,\n showLoadingIndicator: false,\n showReset: true,\n cssClasses: {\n root: \"w-full\",\n form: \"flex w-full\",\n input: \"form-input flex-grow\",\n reset: \"hover:text-teal text-2xl px-4\",\n },\n templates: {\n reset: \"×\",\n },\n }),\n buildPagination(this.paginationTarget),\n hits({\n container: this.resultsTarget,\n templates: {\n item: this.resultTemplateTarget.innerHTML,\n },\n }),\n ]);\n\n this.search.addWidgets(\n this.refinementTargets.map(ref =>\n buildRefinementlist(ref, ref.dataset.title, ref.dataset.field),\n ),\n );\n\n this.search.addWidgets([\n buildDateRangeRefinement(this.dateRangeTarget, \"date_timestamp\"),\n clearRefinements({\n container: this.clearDateRangeTarget,\n includedAttributes: [\"date_timestamp\"],\n templates: {\n resetLabel: \"Reset date range\",\n },\n }),\n ]);\n\n this.search.addWidget(\n clearRefinements({\n container: this.clearFilterTarget,\n templates: {\n resetLabel: \"Reset all\",\n },\n }),\n );\n\n this.search.start();\n }\n\n disconnect() {\n this.search.dispose();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"openButton\", \"closeButton\", \"menu\"];\n\n open() {\n this.closeButtonTarget.classList.remove(\"hidden\");\n this.openButtonTarget.classList.add(\"hidden\");\n this.menuTarget.classList.remove(\"hidden\");\n }\n\n close() {\n this.openButtonTarget.classList.remove(\"hidden\");\n this.closeButtonTarget.classList.add(\"hidden\");\n this.menuTarget.classList.add(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n document.addEventListener(\"turbolinks:before-cache\", this.onTurbolinksBeforeCache, {\n once: true,\n });\n }\n\n disconnect() {\n document.removeEventListener(\"turbolinks:before-cache\", this.onTurbolinksBeforeCache, {\n once: true,\n });\n }\n\n onTurbolinksBeforeCache = () => {\n this.close();\n };\n\n close() {\n if (this.element.parentNode.contains(this.element)) {\n this.element.parentNode.removeChild(this.element);\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"modal\"];\n\n show() {\n this.modalTarget.classList.remove(\"hidden\");\n }\n\n hide() {\n this.modalTarget.classList.add(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"cloner\"];\n\n connect() {\n this.clonerTargets.forEach(t => {\n this.cloneToOtherForm({ currentTarget: t });\n });\n }\n\n cloneToOtherForm(event) {\n const input = event.currentTarget;\n const otherForm = document.getElementById(input.dataset.otherFormId);\n\n if (input.type === \"checkbox\") {\n const existing = $(otherForm).find(`input[name='${input.name}'][value='${input.value}']`);\n\n if (input.checked) {\n if (existing.length === 0) {\n $(otherForm).append(``);\n }\n } else {\n existing.remove();\n }\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"slider\"];\n\n open() {\n this.sliderTarget.classList.remove(\"hidden\");\n }\n\n close() {\n this.sliderTarget.classList.add(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\nimport InputMask from \"inputmask\";\n\nexport default class extends Controller {\n connect() {\n this.inputMask = new InputMask(\"9999[9]-999[9]-99\", { tabThrough: true });\n this.inputMask.mask(this.element);\n }\n\n format() {\n const parts = this.element.value.replace(/_/g, \"\").split(\"-\");\n\n if (parts.length === 3) {\n const formattedValue = [\n parts[0].padStart(5, \"0\"),\n parts[1].padStart(4, \"0\"),\n parts[2].padStart(2, \"0\"),\n ].join(\"-\");\n\n this.element.value = formattedValue;\n }\n }\n}\n","import { Controller } from \"stimulus\";\nimport Rails from \"@rails/ujs\";\n\nexport default class extends Controller {\n static values = {\n highlight: String,\n dismissUrl: String,\n };\n\n connect() {\n if (this.highlightElement) {\n if (!this.anchor) {\n this.highlightElement.scrollIntoView();\n }\n this.highlightElement.classList.add(\"bg-blue-100\", \"hover:bg-blue-200\");\n }\n }\n\n dismiss() {\n fetch(this.dismissUrlValue, {\n method: \"POST\",\n headers: {\n \"X-CSRF-Token\": Rails.csrfToken(),\n },\n }).then(() => {\n if (this.highlightElement) {\n this.highlightElement.classList.remove(\"bg-blue-100\", \"hover:bg-blue-200\");\n }\n\n this.element.remove();\n });\n }\n\n get highlightElement() {\n if (this.hasHighlightValue) {\n return document.querySelector(`#${this.highlightValue}`);\n }\n\n return false;\n }\n\n get anchor() {\n return window.location.hash;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\"];\n\n increment() {\n this.inputTarget.stepUp();\n }\n\n decrement() {\n this.inputTarget.stepDown();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n openAll() {\n this.element.querySelectorAll(\"a\").forEach(link => {\n window.open(link.href, \"_blank\");\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nimport moment from \"moment\";\n\nimport {\n configure,\n hits,\n pagination,\n panel,\n searchBox,\n refinementList,\n clearRefinements,\n} from \"instantsearch.js/es/widgets\";\n\nimport { connectRange } from \"instantsearch.js/es/connectors\";\n\nconst algoliasearch = require(\"algoliasearch\");\nconst instantsearch = require(\"instantsearch.js\").default;\n\nfunction buildPanelWithTitle(title) {\n return panel({\n hidden(options) {\n return options.results.nbHits === 0;\n },\n templates: {\n header: title,\n },\n cssClasses: {\n header: \"text-gray-600 font-semibold mb-2\",\n },\n })(refinementList);\n}\n\nfunction buildRefinementlist(container, title, attribute) {\n return buildPanelWithTitle(title)({\n container,\n attribute,\n operator: \"or\",\n showMore: true,\n limit: 5,\n cssClasses: {\n count: \"badge-sm badge-indigo\",\n checkbox: \"form-checkbox\",\n label: \"flex items-center text-base\",\n labelText: \"px-2\",\n disabledShowMore: \"hidden\",\n },\n });\n}\n\nfunction buildDateRangeRefinement(container, attribute) {\n return connectRange((renderOptions, isFirstRender) => {\n const { start, refine, widgetParams } = renderOptions;\n const [min, max] = start;\n\n if (isFirstRender) {\n const form = document.createElement(\"form\");\n\n form.addEventListener(\"select\", event => {\n event.preventDefault();\n const inputElements = event.target.form.elements;\n\n const rawMinInputValue = Date.parse(inputElements.min.value);\n const rawMaxInputValue = Date.parse(inputElements.max.value);\n\n refine([\n Number.isFinite(rawMinInputValue) ? rawMinInputValue / 1000 : undefined,\n Number.isFinite(rawMaxInputValue) ? rawMaxInputValue / 1000 : undefined,\n ]);\n });\n\n widgetParams.container.appendChild(form);\n\n return;\n }\n\n widgetParams.container.querySelector(\"form\").innerHTML = `\n
\n From\n \n To\n \n
\n `;\n })({ container, attribute });\n}\n\nfunction buildPagination(container) {\n const customPagination = panel({\n hidden: ({ results }) => results.nbPages < 2,\n })(pagination);\n\n return customPagination({\n container,\n cssClasses: {\n root: \"algolia-pagination\",\n list: \"algolia-pagination-list\",\n item: \"algolia-pagination-item\",\n selectedItem: \"algolia-pagination-item-selected\",\n disabledItem: \"hidden\",\n },\n });\n}\n\nexport default class extends Controller {\n static targets = [\n \"pagination\",\n \"results\",\n \"resultTemplate\",\n \"searchBox\",\n \"effectiveDateRange\",\n \"clearEffectiveDateRange\",\n \"revisionDateRange\",\n \"clearRevisionDateRange\",\n \"clearFilter\",\n \"refinement\",\n ];\n\n initialize() {\n this.search = instantsearch({\n indexName: this.data.get(\"algolia-index\"),\n searchClient: algoliasearch(this.data.get(\"algolia-id\"), this.data.get(\"algolia-key\")),\n });\n }\n\n connect() {\n this.search.addWidgets([\n configure({\n hitsPerPage: this.data.get(\"page-size\") || 4,\n distinct: true,\n filters: this.data.get(\"filter\"),\n }),\n searchBox({\n container: this.searchBoxTarget,\n placeholder: this.data.get(\"placeholder\"),\n autofocus: true,\n showSubmit: false,\n showLoadingIndicator: false,\n showReset: true,\n cssClasses: {\n root: \"w-full\",\n form: \"flex w-full\",\n input: \"form-input flex-grow\",\n reset: \"hover:text-teal text-2xl px-4\",\n },\n templates: {\n reset: \"×\",\n },\n }),\n buildPagination(this.paginationTarget),\n hits({\n container: this.resultsTarget,\n templates: {\n item: this.resultTemplateTarget.innerHTML,\n },\n }),\n ]);\n\n this.search.addWidgets(\n this.refinementTargets.map(ref =>\n buildRefinementlist(ref, ref.dataset.title, ref.dataset.field),\n ),\n );\n\n this.search.addWidgets([\n buildDateRangeRefinement(this.effectiveDateRangeTarget, \"effective_date\"),\n clearRefinements({\n container: this.clearEffectiveDateRangeTarget,\n includedAttributes: [\"effective_date\"],\n templates: {\n resetLabel: \"Reset date range\",\n },\n }),\n buildDateRangeRefinement(this.revisionDateRangeTarget, \"revision_date\"),\n clearRefinements({\n container: this.clearRevisionDateRangeTarget,\n includedAttributes: [\"revision_date\"],\n templates: {\n resetLabel: \"Reset date range\",\n },\n }),\n ]);\n\n this.search.addWidget(\n clearRefinements({\n container: this.clearFilterTarget,\n templates: {\n resetLabel: \"Reset all\",\n },\n }),\n );\n\n this.search.start();\n }\n\n disconnect() {\n this.search.dispose();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"scrollable\"];\n\n connect() {\n if (this.enabled && !window.location.hash) {\n this.restorePosition();\n }\n }\n\n savePosition() {\n if (this.enabled) {\n const currentPos = this.scrollable.scrollTop;\n\n if (currentPos > 0) {\n localStorage.setItem(this.key, currentPos);\n } else {\n this.clearPosition(this.key);\n }\n }\n }\n\n restorePosition() {\n const pos = localStorage.getItem(this.key) || 0;\n\n requestAnimationFrame(() => this.scrollable.scrollTo({ top: pos }));\n }\n\n clearPosition(key) {\n localStorage.removeItem(key);\n }\n\n resetPosition(e) {\n const source = e.target;\n\n this.data.set(\"enabled\", false);\n this.clearPosition(this.key);\n\n if (source.href) {\n this.clearPosition(`${this.prefix}-${source.href}`);\n }\n }\n\n get prefix() {\n return \"scout-scroll-position\";\n }\n\n get key() {\n return `${this.prefix}-${this.data.get(\"key\")}`;\n }\n\n get enabled() {\n return this.data.get(\"enabled\") === \"true\";\n }\n\n get scrollable() {\n return this.hasScrollableTarget ? this.scrollableTarget : this.element;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"option\"];\n\n connect() {\n this.syncInputs();\n }\n\n syncInputs() {\n this.optionTargets.forEach(t => {\n const radioButton = t.querySelector(\"input[type=radio]\");\n const select = t.querySelector(\"select\");\n\n if (radioButton.checked) {\n t.classList.add(\"highlight-ring\");\n select.disabled = false;\n\n if (select.selectize) {\n select.selectize.enable();\n }\n } else {\n t.classList.remove(\"highlight-ring\");\n select.disabled = true;\n\n if (select.selectize) {\n select.selectize.disable();\n }\n }\n });\n }\n}\n","import { Controller } from \"stimulus\";\nimport { createPopper } from \"@popperjs/core\";\n\nexport default class extends Controller {\n static targets = [\"menu\", \"toggle\"];\n\n static values = { position: String };\n\n connect() {\n window.addEventListener(\"click\", this.onOutsideClick.bind(this));\n }\n\n toggle() {\n const shouldOpen = this.menuTarget.classList.contains(\"hidden\");\n\n this.closeMenu();\n\n if (shouldOpen) {\n this.popper = createPopper(this.toggleTarget, this.menuTarget, {\n placement: this.positionValue || \"top\",\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n mainAxis: true,\n altAxis: true,\n padding: 5,\n },\n },\n ],\n });\n\n this.menuTarget.classList.remove(\"hidden\");\n this.toggleTarget.classList.add(\"active\");\n }\n }\n\n teardown() {\n this.closeMenu();\n }\n\n closeMenu() {\n this.popper?.destroy();\n $(this.menuTargets).addClass(\"hidden\");\n $(this.toggleTargets).removeClass(\"hidden\");\n }\n\n onOutsideClick({ target }) {\n if (!this.isInside(target)) {\n this.closeMenu();\n }\n }\n\n isInside(target) {\n return this.menuTargets.concat(this.toggleTargets).some(c => c.contains(target));\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n static targets = [\"widget\", \"coordinate\", \"newWidgetArea\", \"form\"];\n\n onDragStart(event) {\n const coords = this.gridCoordinates(event.target.parentElement);\n const { dragOperation } = event.target.dataset;\n\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(\"dragOperation\", dragOperation);\n\n const otherWidgets = _.without(this.widgetTargets, event.target.parentElement);\n\n this.workingData = {\n dragOperation,\n otherWidgets: otherWidgets.map(this.gridCoordinates),\n newArea: coords,\n ...this.extraWorkingData(dragOperation, event.target.dataset, coords),\n };\n\n this.repositionAreaTarget(false);\n\n $(this.coordinateTargets).removeClass(\"hidden\");\n $(this.newWidgetAreaTarget).removeClass(\"hidden\");\n $(event.target.parentElement).removeClass(\"z-10\").addClass(\"z-30\");\n }\n\n extraWorkingData(dragOperation, dataset, coords) {\n return dragOperation.includes(\"resize\")\n ? this.calculateResizeOrigin(dragOperation, dataset.startPoint, coords)\n : this.calculateMoveOriginAndOffset(dataset, coords);\n }\n\n calculateResizeOrigin(direction, startPoint, coords) {\n const origin = {};\n\n const anchorHorizontalEnd = startPoint?.includes(\"west\") ? coords.columnSpan - 1 : 0;\n const anchorVerticalEnd = startPoint?.includes(\"north\") ? coords.rowSpan - 1 : 0;\n\n if (direction === \"resize-horizontal\") {\n origin.row = coords.row;\n origin.rowSpan = coords.rowSpan;\n\n origin.column = coords.column + anchorHorizontalEnd;\n } else if (direction === \"resize-vertical\") {\n origin.column = coords.column;\n origin.columnSpan = coords.columnSpan;\n\n origin.row = coords.row + anchorVerticalEnd;\n } else if (direction === \"resize-diagonal\") {\n origin.column = coords.column + anchorHorizontalEnd;\n origin.row = coords.row + anchorVerticalEnd;\n }\n\n return { origin };\n }\n\n calculateMoveOriginAndOffset(dataset, coords) {\n return {\n offset: JSON.parse(dataset.offset),\n origin: {\n rowSpan: coords.rowSpan,\n columnSpan: coords.columnSpan,\n },\n };\n }\n\n calculateNewArea(targetCoords) {\n const { dragOperation } = this.workingData;\n\n return dragOperation.includes(\"resize\")\n ? this.calculateNewResizeArea(dragOperation, targetCoords)\n : this.calculateNewMoveArea(targetCoords);\n }\n\n calculateNewResizeArea(dragOperation, targetCoords) {\n const newArea = {};\n\n const boundingStartColumn = Math.min(targetCoords.column, this.workingData.origin.column);\n const boundingEndColumn = Math.max(targetCoords.column + 1, this.workingData.origin.column + 1);\n const boundingStartRow = Math.min(targetCoords.row, this.workingData.origin.row);\n const boundingEndRow = Math.max(targetCoords.row + 1, this.workingData.origin.row + 1);\n\n if (dragOperation === \"resize-vertical\") {\n newArea.column = this.workingData.origin.column;\n newArea.columnSpan = this.workingData.origin.columnSpan;\n\n newArea.row = boundingStartRow;\n newArea.rowSpan = boundingEndRow - boundingStartRow;\n } else if (dragOperation === \"resize-horizontal\") {\n newArea.column = boundingStartColumn;\n newArea.columnSpan = boundingEndColumn - boundingStartColumn;\n\n newArea.row = this.workingData.origin.row;\n newArea.rowSpan = this.workingData.origin.rowSpan;\n } else if (dragOperation === \"resize-diagonal\") {\n newArea.column = boundingStartColumn;\n newArea.columnSpan = boundingEndColumn - boundingStartColumn;\n\n newArea.row = boundingStartRow;\n newArea.rowSpan = boundingEndRow - boundingStartRow;\n }\n\n return newArea;\n }\n\n calculateNewMoveArea(targetCoords) {\n const { columnSpan, rowSpan } = this.workingData.origin;\n\n const targetColumn = targetCoords.column - this.workingData.offset.column;\n const targetRow = targetCoords.row - this.workingData.offset.row;\n\n const maximum = this.maxCoords();\n const maxColumn = maximum.column - columnSpan + 1;\n const maxRow = maximum.row - rowSpan + 1;\n\n const bounded = (ideal, max) => Math.max(1, Math.min(ideal, max));\n\n return {\n column: bounded(targetColumn, maxColumn),\n row: bounded(targetRow, maxRow),\n columnSpan,\n rowSpan,\n };\n }\n\n onDragOver(event) {\n const targetCoords = this.gridCoordinates(event.target);\n\n this.workingData.newArea = this.calculateNewArea(targetCoords);\n\n const anyOverlap = this.newAreaOverlapsOtherWidgets();\n\n this.repositionAreaTarget(anyOverlap);\n this.setDragCursor(event, anyOverlap);\n\n return true;\n }\n\n onDragEnd(event) {\n const endCoords = this.workingData.newArea;\n const chartID = event.target.parentElement.dataset.chart;\n const $form = $(this.formTargets.find(f => f.dataset.chart === chartID));\n\n const widgetMoved = this.anyChanges(endCoords, $form.serializeArray());\n const widgetIsValid = !this.newAreaOverlapsOtherWidgets();\n\n if (widgetMoved && widgetIsValid) {\n const setFormValue = (key, value) =>\n $form.find(`[name='portal_analytics_chart[${key}]']`).val(value);\n\n setFormValue(\"column\", endCoords.column);\n setFormValue(\"row\", endCoords.row);\n setFormValue(\"column_span\", endCoords.columnSpan);\n setFormValue(\"row_span\", endCoords.rowSpan);\n $form.trigger(\"submit\");\n } else {\n $(this.coordinateTargets).addClass(\"hidden\");\n $(this.newWidgetAreaTarget).addClass(\"hidden\");\n $(this.widgetTargets).removeClass(\"z-30\").addClass(\"z-10\");\n this.workingData = {};\n }\n }\n\n repositionAreaTarget(hasError) {\n const cssCoords = {\n \"grid-column-start\": this.workingData.newArea.column,\n \"grid-column-end\": this.workingData.newArea.column + this.workingData.newArea.columnSpan,\n \"grid-row-start\": this.workingData.newArea.row,\n \"grid-row-end\": this.workingData.newArea.row + this.workingData.newArea.rowSpan,\n };\n\n $(this.newWidgetAreaTarget)\n .css(cssCoords)\n .toggleClass(\"bg-red-400\", hasError)\n .toggleClass(\"bg-blue-400\", !hasError);\n }\n\n setDragCursor(event, hasError) {\n event.preventDefault();\n event.dataTransfer.dropEffect = hasError ? \"none\" : \"move\";\n }\n\n gridCoordinates(target) {\n const column = parseInt(target.dataset.column);\n const row = parseInt(target.dataset.row);\n const columnSpan = parseInt(target.dataset.columnSpan) || 1;\n const rowSpan = parseInt(target.dataset.rowSpan) || 1;\n\n return { column, row, columnSpan, rowSpan };\n }\n\n anyChanges(newGridCoords, currentFormValues) {\n const formValue = key =>\n parseInt(currentFormValues.find(obj => obj.name === `portal_analytics_chart[${key}]`).value);\n\n return (\n newGridCoords.column !== formValue(\"column\") ||\n newGridCoords.row !== formValue(\"row\") ||\n newGridCoords.columnSpan !== formValue(\"column_span\") ||\n newGridCoords.rowSpan !== formValue(\"row_span\")\n );\n }\n\n newAreaOverlapsOtherWidgets() {\n const area = this.workingData.newArea;\n\n const startBeforeEnd = (a, b, key) => a[key] < b[key] + b[`${key}Span`];\n\n const intersectsAlongAxis = (a, b, key) =>\n startBeforeEnd(a, b, key) && startBeforeEnd(b, a, key);\n\n return this.workingData.otherWidgets.some(\n widget =>\n intersectsAlongAxis(area, widget, \"column\") && intersectsAlongAxis(area, widget, \"row\"),\n );\n }\n\n maxCoords() {\n const allCoords = this.coordinateTargets.map(target => this.gridCoordinates(target));\n\n return {\n row: Math.max(...allCoords.map(x => x.row)),\n column: Math.max(...allCoords.map(y => y.column)),\n };\n }\n}\n","import { Controller } from \"stimulus\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n static targets = [\"columns\", \"rows\", \"grid\"];\n\n connect() {\n this.resize();\n }\n\n resize() {\n const rows = parseInt(this.rowsTarget.value);\n const columns = parseInt(this.columnsTarget.value);\n\n if (rows > 0 && columns > 0) {\n $(this.gridTarget)\n .css(\"grid-template-columns\", `repeat(${columns}, 1fr)`)\n .css(\"grid-template-rows\", `repeat(${rows}, 1fr)`)\n .html(this.previewBoxes(rows, columns));\n }\n }\n\n previewBoxes(rows, columns) {\n const takenCoords = JSON.parse(this.gridTarget.dataset.takenCoords);\n\n const columnRange = _.range(1, columns + 1);\n const rowRange = _.range(1, rows + 1);\n const allCoords = rowRange.flatMap(row => columnRange.map(column => `${column},${row}`));\n\n const takenClass = coord => (takenCoords.includes(coord) ? \"bg-gray-300\" : \"\");\n\n return allCoords.map(coord => `
`);\n }\n}\n","import { Controller } from \"stimulus\";\n\nfunction gtag() {\n window.dataLayer.push(arguments); // eslint-disable-line\n}\n\nexport default class extends Controller {\n connect() {\n window.dataLayer = window.dataLayer || [];\n\n gtag(\"js\", new Date());\n\n gtag(\"config\", this.data.get(\"key\"), {\n user_id: this.data.get(\"user\"),\n dimension1: this.data.get(\"user\"),\n dimension3: this.data.get(\"portal\"),\n dimension4: this.data.get(\"portalType\"),\n dimension5: this.data.get(\"client\"),\n custom_map: {\n dimension1: \"ga_user_id\",\n dimension3: \"portal\",\n dimension4: \"portalType\",\n dimension5: \"client\",\n },\n });\n }\n\n trackDownload({ currentTarget }) {\n gtag(\"event\", \"download\", {\n event_category: \"portal downloads\",\n event_label: currentTarget.dataset.analyticsDownloadType,\n portal: this.data.get(\"portal\"),\n client: this.data.get(\"client\"),\n portal_file: currentTarget.dataset.analyticsFileName,\n });\n }\n\n trackModal({ currentTarget }) {\n gtag(\"event\", \"modal\", {\n event_category: \"modal\",\n client: this.data.get(\"client\"),\n event_label: $(currentTarget).find(\"[name='group_title']\").val(),\n });\n }\n\n trackFilter({ currentTarget }) {\n gtag(\"event\", \"filter\", {\n event_category: \"filter\",\n client: this.data.get(\"client\"),\n event_label: currentTarget.value + (currentTarget.checked ? \"-enabled\" : \"-disabled\"),\n });\n }\n}\n","import { Controller } from \"stimulus\";\nimport { isMobile } from \"../utilities/screen_size_breakpoints\";\n\nexport default class extends Controller {\n static targets = [\"files\", \"heading\"];\n\n connect() {\n if (isMobile()) {\n this.collapse();\n }\n }\n\n toggle() {\n if (isMobile()) {\n this.filesTarget.classList.toggle(\"hidden\");\n this.headingTarget.classList.toggle(\"open\");\n }\n }\n\n collapse() {\n this.filesTarget.classList.add(\"hidden\");\n this.headingTarget.classList.remove(\"open\");\n }\n\n expand() {\n this.filesTarget.classList.remove(\"hidden\");\n this.headingTarget.classList.add(\"open\");\n }\n\n onResize() {\n if (!isMobile()) {\n this.expand();\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"portalName\"];\n\n setPortalName(event) {\n if (event.target.value) {\n this.portalNameTarget.value = `${event.target.innerText} Portal`;\n } else {\n this.portalNameTarget.value = \"\";\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"defaultOption\", \"range\", \"customContainer\"];\n\n connect() {\n this.setRange(!this.defaultOptionTarget.checked);\n }\n\n enableRange() {\n this.setRange(true);\n }\n\n disableRange() {\n this.setRange(false);\n }\n\n setRange(enabled) {\n this.customContainerTarget.classList.toggle(\"hidden\", !enabled);\n\n this.rangeTargets.forEach(el => {\n const input = el;\n\n input.disabled = !enabled;\n });\n }\n}\n","import { Controller } from \"stimulus\";\nimport \"@algolia/autocomplete-theme-classic\";\nimport { autocomplete } from \"@algolia/autocomplete-js\";\nimport algoliasearch from \"algoliasearch/lite\";\nimport {\n HIGHLIGHT_PRE_TAG,\n HIGHLIGHT_POST_TAG,\n} from \"@algolia/autocomplete-preset-algolia/dist/esm/constants\";\nimport { screenBreakpoints } from \"../utilities/screen_size_breakpoints\";\n\nexport default class extends Controller {\n initialize() {\n this.client = algoliasearch(this.data.get(\"algolia-id\"), this.data.get(\"algolia-key\"));\n this.isMobileView = this.data.get(\"size\") === \"small\";\n }\n\n connect() {\n if (\n (window.innerWidth >= screenBreakpoints.sm && this.isMobileView) ||\n (window.innerWidth < screenBreakpoints.sm && !this.isMobileView)\n ) {\n return;\n }\n\n const sources = this.isMobileView ? this.buildSmallSource() : this.buildSource();\n\n this.search = autocomplete({\n container: this.isMobileView ? \".aa-input-container-sm\" : \".aa-input-container-md\",\n panelContainer: \".aa-medium-panel\",\n hint: false,\n openOnFocus: this.isMobileView,\n autoFocus: this.isMobileView,\n placeholder: \"Search...\",\n detachedMediaQuery: this.isMobileView ? \"\" : \"none\",\n getSources: () => sources,\n });\n }\n\n disconnect() {\n this?.search?.destroy();\n }\n\n fetchResults(client) {\n return query =>\n client.search(this.searchParams(query)).then(data => {\n const groupedResults = {};\n const transformedHits = [];\n\n data.results[0].hits.forEach(h => {\n const key = h.category;\n\n if (groupedResults[key] === undefined) {\n groupedResults[key] = [];\n }\n\n groupedResults[key].push(h);\n });\n\n Object.keys(groupedResults).forEach(key => {\n groupedResults[key].forEach((hit, idx) => {\n transformedHits.push({\n showHeader: idx === 0,\n ...hit,\n });\n });\n });\n\n return transformedHits;\n });\n }\n\n searchParams(query) {\n return [\n {\n indexName: this.data.get(\"algolia-index\"),\n query: query.query,\n params: {\n hitsPerPage: 8,\n filters: `visible_by:${this.data.get(\"visibility-key\")}`,\n userToken: this.data.get(\"user\"),\n optionalWords: query.query,\n highlightPreTag: HIGHLIGHT_PRE_TAG,\n highlightPostTag: HIGHLIGHT_POST_TAG,\n },\n },\n ];\n }\n\n buildSource() {\n return [\n {\n sourceId: \"algoliaPublicIndex\",\n getItems: this.fetchResults(this.client),\n getItemUrl({ item }) {\n return item.portal_link;\n },\n templates: {\n noResults() {\n return \"No matching results.\";\n },\n item(params) {\n const { item, components, html } = params;\n\n if (item.showHeader) {\n return html`\n
\n
\n
\n ${item.category} \n
\n
\n \n
\n
\n
\n ${components.Highlight({ hit: item, tagName: \"mark\", attribute: \"type\" })}\n
\n
\n
\n
\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"title\",\n })}\n
\n
\n
\n
\n
\n `;\n } else {\n return html`\n
\n \n
\n
\n
\n ${components.Highlight({ hit: item, tagName: \"mark\", attribute: \"type\" })}\n
\n
\n
\n
\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"title\",\n })}\n
\n
\n
\n
\n
\n `;\n }\n },\n },\n },\n ];\n }\n\n buildSmallSource() {\n return [\n {\n sourceId: \"algoliaPublicIndex\",\n getItems: this.fetchResults(this.client),\n getItemUrl({ item }) {\n return item.portal_link;\n },\n templates: {\n noResults() {\n return \"No matching results.\";\n },\n item(params) {\n const { item, components, html } = params;\n\n return html`\n
\n \n
\n
\n
\n
\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"title\",\n })}\n
\n
\n
\n
\n
\n
\n ${`${item.category} - `}\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"type\",\n })}\n
\n
\n
\n
\n
\n
\n `;\n },\n },\n },\n ];\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"log\", \"downloadButton\", \"title\"];\n\n connect() {\n this.intervalId = setInterval(() => {\n fetch(this.data.get(\"url\"), {\n headers: {\n Accept: \"application/json\",\n },\n })\n .then(blob => blob.json())\n .then(resp => {\n this.logTarget.innerText = resp.log;\n this.logTarget.parentNode.scrollTo(0, this.logTarget.parentNode.scrollHeight);\n if (resp.progress === 0) {\n this.titleTarget.innerText = \"Report Progress - Working\";\n } else {\n this.titleTarget.innerText = `Report Progress - Working - ${resp.progress}%`;\n }\n\n if (resp.error) {\n this.clearInterval(this.intervalId);\n this.titleTarget.innerText = \"Report Progress - Error\";\n this.element.classList.add(\"border-red\");\n this.titleTarget.classList.add(\"text-red\");\n } else if (resp.flags.includes(\"partial_completion\")) {\n this.clearInterval(this.intervalId);\n if (this.data.get(\"redirectUrl\")) {\n window.location = this.data.get(\"redirectUrl\");\n } else {\n this.titleTarget.innerText = \"Report Progress - Early Completion\";\n if (this.hasDownloadButtonTarget) {\n this.downloadButtonTarget.href = `/download?key=${resp.download_key}`;\n this.downloadButtonTarget.classList.remove(\"invisible\");\n }\n }\n } else if (resp.progress === 100) {\n this.clearInterval(this.intervalId);\n this.titleTarget.innerText = \"Report Progress - Complete\";\n if (this.hasDownloadButtonTarget) {\n this.downloadButtonTarget.href = `/download?key=${resp.download_key}`;\n this.downloadButtonTarget.classList.remove(\"invisible\");\n }\n }\n });\n }, 1000);\n }\n\n disconnect() {\n this.clearInterval();\n }\n\n clearInterval = () => clearInterval(this.intervalId);\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n super.connect();\n\n this.element.onchange = event => {\n const url = `/market_research/${event.target.value}`;\n\n Turbolinks.clearCache();\n Turbolinks.visit(url);\n };\n }\n}\n","/* eslint-disable class-methods-use-this */\n\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"stickyHeader\"];\n\n jump(event) {\n let { anchor } = event.currentTarget.dataset;\n\n if (!anchor) {\n anchor = event.currentTarget.value;\n }\n\n if (anchor) {\n const section = document.getElementById(anchor);\n\n if (this.hasStickyHeaderTarget) {\n this.scrollWithOffset(section);\n } else {\n this.scrollWithoutOffset(section);\n }\n }\n }\n\n jumpToTop() {\n document.scrollingElement.scrollIntoView({ behavior: \"smooth\" });\n }\n\n scrollWithOffset(section) {\n const position = $(section).offset().top;\n const headerHeight = $(this.stickyHeaderTarget).outerHeight();\n const marginForReadability = 24;\n\n window.scroll({ top: position - headerHeight - marginForReadability, behavior: \"smooth\" });\n\n this.animate(section);\n }\n\n scrollWithoutOffset(section) {\n section.scrollIntoView({ behavior: \"smooth\" });\n\n this.animate(section);\n }\n\n animate(section) {\n section.classList.remove(\"animate-slow\");\n section.classList.add(\"pulse\");\n\n window.setTimeout(() => {\n section.classList.add(\"animate-slow\");\n section.classList.remove(\"pulse\");\n }, 1000);\n }\n}\n","import { Controller } from \"stimulus\";\nimport \"@algolia/autocomplete-theme-classic\";\nimport { autocomplete } from \"@algolia/autocomplete-js\";\nimport algoliasearch from \"algoliasearch/lite\";\nimport {\n HIGHLIGHT_PRE_TAG,\n HIGHLIGHT_POST_TAG,\n} from \"@algolia/autocomplete-preset-algolia/dist/esm/constants\";\nimport { screenBreakpoints } from \"../utilities/screen_size_breakpoints\";\n\nexport default class extends Controller {\n initialize() {\n this.client = algoliasearch(this.data.get(\"algolia-id\"), this.data.get(\"algolia-key\"));\n this.isMobileView = this.data.get(\"size\") === \"small\";\n }\n\n connect() {\n if (\n (window.innerWidth >= screenBreakpoints.sm && this.isMobileView) ||\n (window.innerWidth < screenBreakpoints.sm && !this.isMobileView)\n ) {\n return;\n }\n\n const sources = this.isMobileView ? this.buildSmallSource() : this.buildSource();\n\n this.search = autocomplete({\n container: this.isMobileView ? \".aa-input-container-sm\" : \".aa-input-container-md\",\n panelContainer: \".aa-medium-panel\",\n hint: false,\n openOnFocus: this.isMobileView,\n autoFocus: this.isMobileView,\n placeholder: \"Search...\",\n detachedMediaQuery: this.isMobileView ? \"\" : \"none\",\n getSources: () => sources,\n });\n }\n\n disconnect() {\n this?.search?.destroy();\n }\n\n fetchResults(client) {\n return query =>\n client.search(this.searchParams(query)).then(data => {\n const groupedResults = {};\n const transformedHits = [];\n\n data.results[0].hits.forEach(h => {\n const key = h.category;\n\n if (groupedResults[key] === undefined) {\n groupedResults[key] = [];\n }\n\n groupedResults[key].push(h);\n });\n\n Object.keys(groupedResults).forEach(key => {\n groupedResults[key].forEach((hit, idx) => {\n transformedHits.push({\n showHeader: idx === 0,\n ...hit,\n });\n });\n });\n\n return transformedHits;\n });\n }\n\n searchParams(query) {\n return [\n {\n indexName: this.data.get(\"algolia-index\"),\n query: query.query,\n params: {\n hitsPerPage: 8,\n userToken: this.data.get(\"user\"),\n optionalWords: query.query,\n highlightPreTag: HIGHLIGHT_PRE_TAG,\n highlightPostTag: HIGHLIGHT_POST_TAG,\n },\n },\n ];\n }\n\n buildSource() {\n return [\n {\n sourceId: \"algoliaInternalSiteIndex\",\n getItems: this.fetchResults(this.client),\n getItemUrl({ item }) {\n return item.search_result_permalink;\n },\n templates: {\n noResults() {\n return \"No matching results.\";\n },\n item(params) {\n const { item, components, html } = params;\n\n if (item.showHeader) {\n return html`\n
\n
\n
\n \n ${item.search_result_category}\n \n
\n
\n \n
\n
\n
\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"search_result_type\",\n })}\n
\n
\n
\n
\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"search_result_title\",\n })}\n
\n
\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"search_result_description\",\n })}\n
\n
\n
\n
\n
\n `;\n } else {\n return html`\n
\n \n
\n
\n
\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"search_result_type\",\n })}\n
\n
\n
\n
\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"search_result_title\",\n })}\n
\n
\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"search_result_description\",\n })}\n
\n
\n
\n
\n
\n `;\n }\n },\n },\n },\n ];\n }\n\n buildSmallSource() {\n return [\n {\n sourceId: \"algoliaInternalSiteIndex\",\n getItems: this.fetchResults(this.client),\n getItemUrl({ item }) {\n return item.search_result_permalink;\n },\n templates: {\n noResults() {\n return \"No matching results.\";\n },\n item(params) {\n const { item, components, html } = params;\n\n return html`\n
\n \n
\n
\n
\n
\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"search_result_title\",\n })}\n
\n
\n
\n
\n
\n
\n ${`${item.search_result_type} - `}\n ${components.Highlight({\n hit: item,\n tagName: \"mark\",\n attribute: \"search_result_description\",\n })}\n
\n
\n
\n
\n
\n
\n `;\n },\n },\n },\n ];\n }\n}\n","import { Controller } from \"stimulus\";\nimport \"@selectize/selectize\";\n\nexport default class extends Controller {\n connect() {\n const plugins = [\"silent_remove\"];\n const conditionalOptions = {};\n\n const isMulti = this.element.attributes.multiple;\n const inModal = $(this.element).parents(\".modal\").length > 0;\n const addSingle = this.element.attributes.selectizeAddSingle;\n const addMulti = $(this.element).data(\"tags\");\n\n if (isMulti) {\n plugins.push(\"remove_button\");\n }\n\n if (inModal) {\n conditionalOptions.onDropdownOpen = this.buildDropdownRepositionCallback();\n }\n\n if (addSingle || addMulti) {\n conditionalOptions.create = true;\n\n conditionalOptions.createFilter = function (input) {\n return Object.values(this.options).every(\n option => option.text.toLowerCase() !== input.toLowerCase(),\n );\n };\n }\n\n if (addMulti) {\n conditionalOptions.onItemAdd = function (value, item) {\n if (value.length === 0 && isMulti) {\n this.removeItem(item, true);\n }\n };\n }\n\n $(this.element)\n .selectize({\n width: \"100%\",\n plugins,\n placeholder: $(this.element).data(\"placeholder\"),\n openOnFocus: true,\n closeAfterSelect: true,\n allowEmptyOption: true,\n respect_word_boundaries: false,\n selectOnTab: true,\n maxOptions: this.element.length,\n onFocus() {\n if (this.getValue().length === 0) {\n this.clear();\n }\n },\n ...conditionalOptions,\n })\n .on(\"change\", () => this.element.dispatchEvent(new Event(\"scoutchange\", { bubbles: true })));\n\n document.addEventListener(\n \"turbolinks:before-cache\",\n () => {\n this.teardown();\n },\n { once: true },\n );\n\n if (this.element.title) {\n $(this.element).siblings(\".selectize-control\").attr(\"title\", this.element.title);\n }\n }\n\n teardown() {\n this.element?.selectize?.destroy();\n }\n\n buildDropdownRepositionCallback() {\n return $dropdown => {\n const dropdownPosition = $dropdown[0].getBoundingClientRect();\n const dropdownSpillover = dropdownPosition.bottom - $(window).height();\n\n if (dropdownSpillover > 0) {\n $dropdown.css(\"top\", dropdownPosition.top - dropdownSpillover);\n }\n };\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"show\", \"content\"];\n\n static values = { startShown: Boolean };\n\n connect() {\n if (this.startShownValue) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n show() {\n $(this.showTargets).addClass(\"hidden\");\n $(this.contentTargets).removeClass(\"hidden\");\n }\n\n hide() {\n $(this.showTargets).removeClass(\"hidden\");\n $(this.contentTargets).addClass(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\"];\n\n preserveState() {\n this.inputTarget.value = !$(\"[data-show-all-target='content'\").hasClass(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"overflowable\", \"show\"];\n\n connect() {\n new ResizeObserver(() => this.showWhenOverflow()).observe(this.overflowableTarget);\n\n this.showWhenOverflow();\n }\n\n showWhenOverflow() {\n this.showTarget.classList.toggle(\"hidden\", !this.hasOverflow);\n }\n\n get hasOverflow() {\n // +1 is necessary because Chrome has been known to round subpixels inconsistently.\n // E.g. if both elements are 18.31px, clientHeight will be 18 while scrollHeight is 19\n return this.overflowableTarget.scrollHeight > this.overflowableTarget.clientHeight + 1;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"showable\", \"count\"];\n\n static values = { form: String };\n\n connect() {\n this.checkboxTargets.on(\"input\", () => this.update());\n\n this.update();\n }\n\n update() {\n const count = this.selectedCount;\n\n $(this.countTargets).text(count);\n $(this.showableTargets).toggleClass(\"hidden\", count === 0);\n }\n\n get checkboxTargets() {\n return $(`#${this.formValue} input[type=checkbox]`);\n }\n\n get selectedCount() {\n return $(`#${this.formValue} input[type=checkbox]:checked`).length;\n }\n}\n","/* eslint-disable class-methods-use-this */\n\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n if (window.location.hash) this.jumpTo(window.location.hash.slice(1), true);\n }\n\n jump(event) {\n const { anchor } = event.currentTarget.dataset;\n\n this.jumpTo(anchor, false);\n }\n\n jumpTo(anchor, fast) {\n const section = document.getElementById(anchor);\n\n if (section && fast) {\n section.scrollIntoView();\n } else if (section) {\n section.scrollIntoView({ behavior: \"smooth\" });\n section.classList.remove(\"animate-slow\");\n section.classList.add(\"pulse\");\n\n window.setTimeout(() => {\n section.classList.add(\"animate-slow\");\n section.classList.remove(\"pulse\");\n }, 1000);\n }\n }\n}\n","import { Controller } from \"stimulus\";\nimport Sortable from \"sortablejs\";\nimport Rails from \"@rails/ujs\";\nimport _ from \"lodash\";\n\nexport default class extends Controller {\n static targets = [\"form\"];\n\n connect() {\n const isSync = this.data.get(\"mode\") === \"synchronous\";\n\n Sortable.create(this.element, {\n animation: 150,\n handle: \"[data-sortable-handle='drag']\",\n fallbackOnBody: true,\n store: {\n get: sortable => sortable.toArray(),\n set: sortable => (isSync ? this.sortSync(sortable) : this.sortAsync(sortable)),\n },\n });\n }\n\n sortSync(sortable) {\n const inputTag = item => ``;\n\n sortable.toArray().forEach(sortableItem => $(this.formTarget).append(inputTag(sortableItem)));\n this.formTarget.submit();\n }\n\n sortAsync(sortable) {\n const url = this.data.get(\"url\");\n\n if (_.isEmpty(url)) return;\n\n fetch(this.data.get(\"url\"), {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": Rails.csrfToken(),\n },\n body: JSON.stringify({\n ordered_items: sortable.toArray(),\n }),\n }).then(resp => {\n if (resp.status >= 500) {\n alert(\"Something went wrong when you tried to reorder a list.\"); // eslint-disable-line\n }\n });\n }\n}\n","import { Controller } from \"stimulus\";\nimport Sortable from \"sortablejs\";\n\nexport default class extends Controller {\n connect() {\n Sortable.create(this.element, {\n animation: 150,\n handle: \"[data-sortable-handle='drag']\",\n fallbackOnBody: true,\n });\n }\n}\n","import { Controller } from \"stimulus\";\nimport Rails from \"@rails/ujs\";\n\nexport default class extends Controller {\n static targets = [\"name\", \"url\", \"message\"];\n\n static values = { endpoint: String };\n\n validate() {\n const message = this.messageTarget;\n\n fetch(this.endpointValue, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": Rails.csrfToken(),\n },\n body: JSON.stringify({\n name: this.nameTarget.value,\n url: this.urlTarget.value,\n }),\n })\n .then(resp => resp.text())\n .then(html => {\n message.innerHTML = html;\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"commercialPayers\",\n \"medicareAdvantagePayers\",\n \"managedMedicaidPayers\",\n \"payerTypes\",\n ];\n\n toggleCommercial() {\n this.commercialPayersTarget.classList.remove(\"hidden\");\n this.medicareAdvantagePayersTarget.classList.add(\"hidden\");\n this.managedMedicaidPayersTarget.classList.add(\"hidden\");\n this.payerTypesTarget.classList.add(\"hidden\");\n }\n\n toggleMedicareAdvantage() {\n this.commercialPayersTarget.classList.add(\"hidden\");\n this.medicareAdvantagePayersTarget.classList.remove(\"hidden\");\n this.managedMedicaidPayersTarget.classList.add(\"hidden\");\n this.payerTypesTarget.classList.add(\"hidden\");\n }\n\n toggleManagedMedicaid() {\n this.commercialPayersTarget.classList.add(\"hidden\");\n this.medicareAdvantagePayersTarget.classList.add(\"hidden\");\n this.managedMedicaidPayersTarget.classList.remove(\"hidden\");\n this.payerTypesTarget.classList.add(\"hidden\");\n }\n\n back() {\n this.commercialPayersTarget.classList.add(\"hidden\");\n this.medicareAdvantagePayersTarget.classList.add(\"hidden\");\n this.managedMedicaidPayersTarget.classList.add(\"hidden\");\n this.payerTypesTarget.classList.remove(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\nimport HtmldiffAsyncRunner from \"../utilities/htmldiff_async_runner\";\n\nexport default class extends Controller {\n static targets = [\"output\"];\n\n static values = { snapshot: String, current: String };\n\n connect() {\n this.htmldiffRunner = new HtmldiffAsyncRunner(this.renderDiff.bind(this));\n this.update();\n }\n\n update() {\n this.htmldiffRunner.calculateDiff(this.snapshotValue, this.currentValue);\n }\n\n renderDiff(diff) {\n this.outputTarget.innerHTML = [\n \"
\",\n diff,\n \"
\",\n ].join(\"\\n\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"headerContainer\", \"bodyContainer\"];\n\n connect() {\n this.onScroll();\n }\n\n onScroll() {\n this.headerContainerTarget.scroll({ left: this.bodyContainerTarget.scrollLeft });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"tab\", \"content\", \"clearItem\"];\n\n showTab(event) {\n const index = parseInt(event.currentTarget.dataset.index);\n\n this.tabTargets.forEach((el, i) => {\n el.classList.toggle(\"active\", index === i);\n });\n\n this.contentTargets.forEach((el, i) => {\n const contentIndex = el.dataset.tabIndex === undefined ? i : parseInt(el.dataset.tabIndex);\n\n el.classList.toggle(this.contentClass, index !== contentIndex);\n });\n\n this.clearItemTargets.forEach(clearItem => {\n if (clearItem?.checked) {\n const changeEvent = new CustomEvent(\"change\", {\n bubbles: true,\n cancelable: true,\n });\n\n clearItem.checked = false;\n clearItem.dispatchEvent(changeEvent);\n }\n });\n }\n\n changeTabExternal(event) {\n // This is necessary (as opposed to binding an external event to #showTab)\n // because if the tab selector is a form's radio input, #showTab will not update\n // the inputs and the old, visually-unselected tab will be POSTed as active.\n const index = parseInt(event.currentTarget.dataset.index);\n\n $(this.tabTargets[index]).trigger(\"click\");\n }\n\n get contentClass() {\n return this.data.get(\"content-class\") || \"hidden\";\n }\n}\n","import { Controller } from \"stimulus\";\n\nrequire(\"jquery-tablesort\");\n\nexport default class extends Controller {\n connect() {\n $(this.element).tablesort({\n asc: \"asc\",\n desc: \"desc\",\n });\n }\n\n disconnect() {\n const table = $(this.element).data(\"tablesort\");\n\n if (table) {\n table.destroy();\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"submit\"];\n\n connect() {\n this.disabled = true;\n }\n\n toggle() {\n this.disabled = !this.disabled;\n\n if (this.disabled) {\n this.submitTarget.setAttribute(\"disabled\", \"disabled\");\n } else {\n this.submitTarget.removeAttribute(\"disabled\");\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\"];\n\n connect() {\n this.inputTargets.forEach(el => {\n el.value = Intl.DateTimeFormat().resolvedOptions().timeZone;\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"drugs\"];\n\n clientSelected(e) {\n const clientId = e.target.value;\n\n if (clientId !== \"\") {\n this.fetchDrugsForClient(clientId);\n }\n }\n\n fetchDrugsForClient(clientId) {\n const path = `${this.data.get(\"path\")}/${clientId}`;\n\n fetch(path)\n .then(r => r.text())\n .then(html => $(this.drugsTarget).html(html));\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n const alignmentRow = document.createElement(\"span\");\n const fileTools = this.toolbar.querySelector(\".trix-button-group--file-tools\");\n\n alignmentRow.setAttribute(\"class\", \"trix-button-group trix-button-group--alignment-tools\");\n this.toolbar.querySelector(\".trix-button-row\").insertBefore(alignmentRow, fileTools);\n\n const leftButton = document.createElement(\"button\");\n\n leftButton.setAttribute(\"type\", \"button\");\n leftButton.setAttribute(\"class\", \"trix-button trix-button--icon trix-button--icon-align-left\");\n leftButton.setAttribute(\"data-trix-attribute\", \"alignLeft\");\n leftButton.setAttribute(\"title\", \"Left Align\");\n leftButton.setAttribute(\"tabindex\", \"-1\");\n\n this.toolbar.querySelector(\".trix-button-group--alignment-tools\").appendChild(leftButton);\n\n const centerButton = document.createElement(\"button\");\n\n centerButton.setAttribute(\"type\", \"button\");\n centerButton.setAttribute(\n \"class\",\n \"trix-button trix-button--icon trix-button--icon-align-center\",\n );\n centerButton.setAttribute(\"data-trix-attribute\", \"alignCenter\");\n centerButton.setAttribute(\"title\", \"Center Align\");\n centerButton.setAttribute(\"tabindex\", \"-1\");\n\n this.toolbar.querySelector(\".trix-button-group--alignment-tools\").appendChild(centerButton);\n\n const rightButton = document.createElement(\"button\");\n\n rightButton.setAttribute(\"type\", \"button\");\n rightButton.setAttribute(\n \"class\",\n \"trix-button trix-button--icon trix-button--icon-align-right\",\n );\n rightButton.setAttribute(\"data-trix-attribute\", \"alignRight\");\n rightButton.setAttribute(\"title\", \"Right Align\");\n rightButton.setAttribute(\"tabindex\", \"-1\");\n\n this.toolbar.querySelector(\".trix-button-group--alignment-tools\").appendChild(rightButton);\n }\n\n disconnect() {\n this.toolbar.querySelector(\"[data-trix-attribute=alignCenter]\").remove();\n this.toolbar.querySelector(\"[data-trix-attribute=alignLeft]\").remove();\n this.toolbar.querySelector(\"[data-trix-attribute=alignRight]\").remove();\n }\n\n get toolbar() {\n return this.element.previousSibling;\n }\n}\n","import { Controller } from \"stimulus\";\n\nconst ANNOTATION_TOOLS = `\n \n \n`;\n\nconst RESET_BUTTON = `\n \n`;\n\nexport default class extends Controller {\n connect() {\n this.element.setAttribute(\"contentEditable\", false);\n\n this.element.addEventListener(\"trix-initialize\", () => {\n // It is possible for this to happen more than once per page, presumably because Turbolinks.\n // Thus, all mutations to toolbar must be idempotent.\n this.toolbar.classList.add(\"trix-annotations\");\n\n this.toolbar.querySelector(\".trix-button-group--text-tools\").innerHTML = ANNOTATION_TOOLS;\n\n this.toolbar.querySelector(\".trix-button-group--block-tools\")?.remove();\n\n const historyTools = this.toolbar.querySelector(\".trix-button-group--history-tools\");\n\n if (!historyTools.querySelector(\".trix-button--icon-reset\")) {\n historyTools.innerHTML += RESET_BUTTON;\n }\n });\n }\n\n get toolbar() {\n return this.element.previousSibling;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n this.element.addEventListener(\"trix-initialize\", () => {\n const underlineButton = document.createElement(\"button\");\n const linkButton = this.toolbar.querySelector(\"trix-button--icon-link\");\n\n underlineButton.setAttribute(\"type\", \"button\");\n underlineButton.setAttribute(\n \"class\",\n \"trix-button trix-button--icon trix-button--icon-underline\",\n );\n underlineButton.setAttribute(\"data-trix-attribute\", \"underline\");\n underlineButton.setAttribute(\"title\", \"Underline\");\n underlineButton.setAttribute(\"tabindex\", \"-1\");\n underlineButton.innerText = \"U\";\n\n this.toolbar\n .querySelector(\".trix-button-group--text-tools\")\n .insertBefore(underlineButton, linkButton);\n });\n }\n\n disconnect() {\n this.toolbar.querySelector(\"[data-trix-attribute=underline]\").remove();\n }\n\n get toolbar() {\n return this.element.previousSibling;\n }\n}\n","// Taken from https://github.com/angular/angular.js/blob/9f7144b035800c6671a981ba7e5987aeb6c9e959/src/Angular.js#L165-L170\nconst isIE = window.document.documentMode;\n\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n if (isIE) {\n document.querySelector(\"#ie-banner\").classList.remove(\"hidden\");\n }\n});\n","const jquery = require(\"jquery\");\n\nwindow.jQuery = jquery;\nwindow.$ = jquery;\n","import moment from \"moment\";\n\n// Ensure it works with turbolinks\n\nconst updateTimeStamps = () => {\n const timeHelpers = document.querySelectorAll(\"[data-time-format]\");\n const oneMinuteInMilli = 60 * 1000;\n\n Array.from(timeHelpers).forEach(timeHelper => {\n const timeFormat = timeHelper.getAttribute(\"data-time-format\");\n const value = timeHelper.getAttribute(\"datetime\");\n const datetime = Date.parse(value);\n\n if (timeFormat === \"calendar\") {\n timeHelper.textContent = moment(datetime).calendar(null, {\n lastDay: \"[Yesterday]\",\n sameDay: \"[Today]\",\n nextDay: \"[Tomorrow]\",\n lastWeek: \"[on] dddd\",\n nextWeek: \"dddd\",\n sameElse: \"L\",\n });\n } else if (timeFormat === \"relative\") {\n const offset = moment(datetime).diff(moment());\n\n if (offset > 0 && offset < oneMinuteInMilli) {\n timeHelper.textContent = moment().fromNow();\n } else {\n timeHelper.textContent = moment(datetime).fromNow();\n }\n } else {\n timeHelper.textContent = moment(datetime).format(\"MMM DD, YYYY\");\n }\n });\n};\n\nconst monitorTimeTags = mutations => {\n mutations.forEach(mutation => {\n if (mutation.type === \"childList\") {\n mutation.addedNodes.forEach(addedNode => {\n if (addedNode.querySelector && addedNode.querySelector(\"time\")) {\n updateTimeStamps();\n }\n });\n }\n });\n};\n\ndocument.addEventListener(\"turbolinks:load\", () => {\n updateTimeStamps();\n setInterval(updateTimeStamps, 30 * 1000);\n\n setTimeout(() => {\n new MutationObserver(monitorTimeTags).observe(document.querySelector(\"body\"), {\n childList: true,\n subtree: true,\n });\n }, 0);\n});\n","import * as Sentry from \"@sentry/browser\";\n\nconst { RAILS_ENV } = process.env;\n\nwindow.Sentry = Sentry;\n\nif (RAILS_ENV === \"staging\" || RAILS_ENV === \"production\") {\n Sentry.init({\n dsn: process.env.SENTRY_DSN,\n environment: RAILS_ENV,\n });\n\n document.addEventListener(\"turbolinks:load\", () => {\n Sentry.configureScope(scope => {\n const user = window.Scout.currentUser;\n\n if (user) {\n scope.setUser({\n email: user,\n });\n }\n });\n });\n}\n","import \"@stimulus/polyfills\";\nimport { Application } from \"stimulus\";\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\";\n\nconst application = Application.start();\nconst context = require.context(\"../controllers\", true, /\\.js$/);\n\napplication.load(definitionsFromContext(context));\n\napplication.handleError = (error, message, detail) => {\n console.error(error, message, detail); // eslint-disable-line no-console\n Sentry.captureException(error); // eslint-disable-line no-undef\n};\n","import Turbolinks from \"turbolinks\";\n\nTurbolinks.start();\n","/* eslint-disable import/prefer-default-export */\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport applyPayerFilters from \"./filter_payers\";\n\nexport const orderedAccessStatusNames = [\n \"Confirmed Access\",\n \"Case-by-Case\",\n \"Not Covered\",\n \"Access Undetermined\",\n];\n\nexport const payersNoun = payerTypes => {\n let payerType = null;\n\n if (_.isArray(payerTypes)) {\n if (payerTypes.length > 1) {\n return \"Payers\";\n } else {\n payerType = payerTypes[0];\n }\n } else {\n payerType = payerTypes;\n }\n\n switch (payerType) {\n case \"medicaid\":\n return \"Agencies\";\n case \"medicare\":\n return \"Contractors\";\n case \"benefit_management\":\n return \"Managers\";\n case \"medicare_advantage\":\n case \"managed_medicaid\":\n return \"Plans\";\n case \"commercial\":\n case \"medicare_advantage_payers\":\n default:\n return \"Payers\";\n }\n};\n\nexport const coverageMetricNoun = (coverageMetric, payerTypes) => {\n if (coverageMetric === \"lives\") {\n return \"Lives\";\n } else {\n return payersNoun(payerTypes);\n }\n};\n\nexport const joinNounsWithOr = nouns => {\n if (nouns.length <= 2) {\n return nouns.join(\" or \");\n } else {\n const last = _.last(nouns);\n const rest = _.dropRight(nouns, 1)\n .map(n => `${n},`)\n .join(\" \");\n\n return [rest, last].join(\" or \");\n }\n};\n\nconst accumulateValues = (coverageMetric, payerPairs) =>\n coverageMetric === \"lives\" ? _.sum(payerPairs.map(d => d.lives)) : payerPairs.length;\n\nexport const accumulateValuesFn = (payerType, coverageMetric) => payerPairs =>\n accumulateValues(coverageMetric, applyPayerFilters(payerType, payerPairs));\n\nexport const toOneDecimal = value => (value ? value.toFixed(1).replace(\".0\", \"\") : \"0\");\n\nexport const withinOneDecimal = (a, b) => a.toFixed(3) === b.toFixed(3);\n\nexport const withinOneDecimalP = (a, b) => a.toFixed(1) === b.toFixed(1);\n\nexport const fraction = (numerator, denominator) =>\n denominator === 0 ? 0 : numerator / denominator;\n\nexport const percent = (numerator, denominator) => fraction(numerator, denominator) * 100;\n\nexport const percentString = (numerator, denominator) =>\n `${toOneDecimal(percent(numerator, denominator))}%`;\n\nexport const omitMissingOverTimeItems = data =>\n data.filter(({ all }) => (_.isNumber(all) ? all > 0 : !_.isEmpty(all)));\n\nexport const formatPayersLivesTitle = (coverageMetric, payerType) =>\n coverageMetric === \"lives\" ? \"Millions of Lives\" : payersNoun(payerType);\n\nexport const minDate = chart =>\n moment.min(_.flattenDeep(_.values(chart.params.data).map(_.values)).map(d => moment(d.date)));\n\nexport const maxDate = chart =>\n moment.max(_.flattenDeep(_.values(chart.params.data).map(_.values)).map(d => moment(d.date)));\n\nexport const overTimeX = (chart, timestamp) => moment(timestamp).diff(minDate(chart), \"days\");\n\nexport const maxOverTimeX = chart => overTimeX(chart, maxDate(chart));\n\nexport const onHoverPointer = (e, el) => {\n $(e.chart.canvas).css(\"cursor\", el[0] ? \"pointer\" : \"default\");\n};\n\nconst dateFromOverTimeX = (chart, x) => minDate(chart).add(x, \"days\");\n\nconst monthsFromStart = (chart, x) => dateFromOverTimeX(chart, x).diff(minDate(chart), \"months\");\n\nconst absoluteDateOverTimeLabel = chart => (xValue, index, allTicks) => {\n const thisDate = minDate(chart).add(xValue, \"days\");\n const lastDate = minDate(chart).add(allTicks[index - 1]?.value, \"days\");\n\n const yearsMatch = index > 0 && thisDate.year() === lastDate.year();\n const monthsMatch = index > 0 && thisDate.month() === lastDate.month();\n\n if (monthsMatch) {\n return \"\";\n } else if (yearsMatch) {\n return thisDate.format(\"MMM\");\n } else {\n return thisDate.format(\"MMM YY\");\n }\n};\n\nconst relativeDateOverTimeLabel = chart => (xValue, index, allTicks) => {\n if (index === 0) return \"Launch\";\n\n const thisDate = minDate(chart).add(xValue, \"days\");\n const monthsPostLaunch = thisDate.diff(minDate(chart), \"months\");\n\n const previousXValue = allTicks[index - 1].value;\n const previousDate = minDate(chart).add(previousXValue, \"days\");\n\n const differentMonths =\n thisDate.year() !== previousDate.year() || thisDate.month() !== previousDate.month();\n\n if (differentMonths) {\n return `M${monthsPostLaunch}`;\n } else {\n return null;\n }\n};\n\nconst singleXValueTooltip = (tooltipItem, _index, allTooltipItems) =>\n tooltipItem.parsed.x === allTooltipItems[0].parsed.x;\n\nexport const absoluteDateOverTimeCallbacks = chart => ({\n ticks: absoluteDateOverTimeLabel(chart),\n tooltip: {\n title: items => dateFromOverTimeX(chart, items[0].parsed.x).format(\"MMMM YYYY\"),\n label: item => `${item.dataset.label} - ${toOneDecimal(item.parsed.y)}%`,\n filter: singleXValueTooltip,\n },\n});\n\nexport const relativeDateOverTimeCallbacks = chart => ({\n ticks: relativeDateOverTimeLabel(chart),\n tooltip: {\n title: items => `${monthsFromStart(chart, items[0].parsed.x)} months post launch`,\n label: item => `${item.dataset.label} - ${toOneDecimal(item.parsed.y)}%`,\n filter: singleXValueTooltip,\n },\n});\n\n// The same payer might have multiple different values for a given custom field if the custom field is a multiselect.\n// However, for cases where the \"total\" number of payers/lives is what's important, we discard those duplicates.\nexport const uniqPayersFromCustomFields = byCustomFieldValue =>\n _.uniqBy(_.flatten(_.values(byCustomFieldValue)), datum => datum.payer);\n","import tailwindColors from \"@tailwindcss/ui/colors\";\n\nexport default {\n teal: \"#54B5C6\",\n magenta: \"#9F5B94\",\n goldenrod: \"#EABD2C\",\n blue_gray: \"#7A78B1\",\n pale_green: \"#99AD61\",\n orange: \"#CF7046\",\n indigo: \"#4F4C90\",\n mauve: \"#B54B64\",\n};\n\nexport const lightColors = {\n gray: tailwindColors.gray[300],\n teal: \"#A9DAE2\",\n magenta: \"#CFADC9\",\n};\n\nexport const variantLightBlue = {\n backgroundColor: \"#BBE1E8\",\n borderColor: \"#2C7481\",\n};\n","import _ from \"lodash\";\n\nlet initialized = false;\n\nlet regionFilters = null;\n\nlet accountManagerFilters = null;\n\nconst initializeFilters = () => {\n if (!initialized) {\n const regions = document.getElementById(\"region\");\n const accountManagers = document.getElementById(\"account_manager\");\n\n if (regions) {\n regionFilters = JSON.parse(regions.dataset.payerFilters);\n }\n\n if (accountManagers) {\n accountManagerFilters = JSON.parse(accountManagers.dataset.payerFilters);\n }\n\n initialized = true;\n }\n};\n\nconst parsePayerId = datum => {\n if (typeof datum === \"number\") {\n return datum;\n } else {\n return datum.payer;\n }\n};\n\nconst comparePairToId = (pair, id) => parsePayerId(pair) === id;\n\nexport default (payerType, payerPairs) => {\n initializeFilters();\n\n const currentRegion = document.getElementById(\"region\")?.value;\n const currentAccountManager = document.getElementById(\"account_manager\")?.value;\n\n if (!currentRegion && !currentAccountManager) {\n return payerPairs;\n }\n\n let filteredPayerPairs = [...payerPairs];\n\n if (currentRegion) {\n filteredPayerPairs = _.intersectionWith(\n filteredPayerPairs,\n regionFilters[currentRegion][payerType],\n comparePairToId,\n );\n }\n\n if (currentAccountManager === \"unassigned\") {\n const allAccountManagers = _.mapValues(accountManagerFilters, am => am[payerType]);\n const idsFromAllAccountManagers = _.flatten(_.values(allAccountManagers));\n\n filteredPayerPairs = _.differenceWith(\n filteredPayerPairs,\n idsFromAllAccountManagers,\n comparePairToId,\n );\n } else if (currentAccountManager) {\n filteredPayerPairs = _.intersectionWith(\n filteredPayerPairs,\n accountManagerFilters[currentAccountManager][payerType],\n comparePairToId,\n );\n }\n\n return filteredPayerPairs;\n};\n","import _ from \"lodash\";\nimport { payersNoun } from \"./chart_utils\";\nimport applyPayerFilters from \"./filter_payers\";\n\n// As payer IDs are sent in dozens, possibly hundreds,\n// it is possible to exceed the maximum string size for an HTTP query.\n// Thus, we abbreviate the keys to a single character to get as close\n// as possible to irreducable complexity.\nconst abbreviations = {\n commercial: \"c[]\",\n medicare: \"r[]\",\n medicaid: \"i[]\",\n medicare_advantage: \"a[]\",\n managed_medicaid: \"m[]\",\n benefit_management: \"b[]\",\n};\n\nconst longGroupTitle = (groupTitle, payerType) => {\n switch (groupTitle) {\n case \"unchanged\":\n return `${payersNoun(payerType)} with Unchanged Confirmed Access`;\n case \"changed\":\n return `${payersNoun(payerType)} with Changed Access`;\n case \"confirmed\":\n return `${payersNoun(payerType)} with Confirmed Access`;\n case \"unconfirmed\":\n return `${payersNoun(payerType)} without Confirmed Access`;\n default:\n return groupTitle;\n }\n};\n\nconst tag = (name, value) => ``;\n\nconst parsePayerId = datum => {\n if (typeof datum === \"number\") {\n return datum;\n } else {\n return datum.payer;\n }\n};\n\nexport const parseClick = (chart, event) =>\n chart.getElementsAtEventForMode(event, \"nearest\", { intersect: true })[0];\n\nexport default (drugs, groupTitle, payers, extraParams) => {\n const form = $(\"#charts-modal\");\n\n form.find(\"[name='group_title']\").val(longGroupTitle(groupTitle, _.keys(payers)));\n\n form.find('[name=\"drug[]\"').remove();\n _.flatten([drugs]).forEach(drug => {\n form.append(tag(\"drug[]\", drug));\n });\n\n form.find('[name=\"c[]\"]').remove();\n form.find('[name=\"r[]\"]').remove();\n form.find('[name=\"i[]\"]').remove();\n form.find('[name=\"a[]\"]').remove();\n form.find('[name=\"m[]\"]').remove();\n form.find('[name=\"b[]\"]').remove();\n form.find('[name=\"changed_coverage\"').remove();\n form.find('[name=\"previous_snapshot_set_id\"').remove();\n\n _.forOwn(payers, (data, payerType) => {\n applyPayerFilters(payerType, data)\n .map(parsePayerId)\n .forEach(id => form.append(tag(abbreviations[payerType], id)));\n });\n\n if (extraParams?.changedCoverage) {\n form.append(tag(\"changed_coverage\", JSON.stringify(extraParams.changedCoverage)));\n form.append(tag(\"previous_snapshot_set_id\", extraParams.previousSnapshotSetId));\n form.append(tag(\"change_display_mode\", extraParams.changeDisplayMode));\n }\n\n form.find('[name=\"access_status[]\"]').remove();\n if (extraParams?.accessStatus) {\n form.append(tag(\"access_status[]\", extraParams.accessStatus));\n }\n\n form.find('[name=\"timestamp\"]').remove();\n if (extraParams?.timestamp) {\n form.append(tag(\"timestamp\", extraParams.timestamp));\n }\n\n form.find('[name=\"commit\"]').trigger(\"click\");\n};\n\nexport const bypassPayerModalToDetails = (payerType, payerId, drugName, anchor = null) => {\n const form = $(\"#charts-coverage-details-direct\");\n\n form.find(\"[name=payer_type]\").val(payerType);\n form.find(\"[name=payer_id]\").val(parsePayerId(payerId));\n form.find(\"[name=drug]\").val(drugName);\n\n form.find(\"[name=anchor]\").remove();\n if (anchor) {\n form.append(``);\n }\n\n form[0].submit();\n};\n","import Chart from \"chart.js/auto\";\nimport colors from \"./colors\";\n\nexport const updateChartData = (chart, buildData, payersNoun) => {\n chart.data.datasets[0].data = buildData(\"payers\");\n chart.data.datasets[1].data = buildData(\"lives\");\n\n if (payersNoun) {\n chart.data.datasets[0].label = payersNoun;\n }\n};\n\nexport const buildChart = (\n canvas,\n payersNoun,\n titleText,\n formattingCallbacks,\n buildData,\n triggerModalCallback,\n inStaticMode,\n) =>\n new Chart(canvas, {\n type: \"scatter\",\n options: {\n responsive: true,\n maintainAspectRatio: false,\n animation: !inStaticMode,\n showLine: true,\n interaction: {\n intersect: false,\n mode: \"x\",\n },\n scales: {\n y: {\n grid: {\n display: false,\n drawBorder: false,\n },\n suggestedMin: 0,\n suggestedMax: 100,\n ticks: {\n display: !inStaticMode,\n callback: value => `${value}%`,\n },\n },\n x: {\n bounds: \"data\",\n ticks: {\n display: !inStaticMode,\n callback: formattingCallbacks.ticks,\n },\n },\n },\n plugins: {\n legend: {\n display: !inStaticMode,\n position: \"bottom\",\n labels: { usePointStyle: true },\n },\n title: {\n display: true,\n text: titleText,\n color: \"black\",\n font: { size: 13 },\n },\n tooltip: {\n usePointStyle: true,\n titleAlign: \"center\",\n filter: formattingCallbacks.tooltip.filter,\n callbacks: formattingCallbacks.tooltip,\n },\n },\n onClick: triggerModalCallback,\n },\n data: {\n datasets: [\n {\n coverageMetric: \"payers\",\n label: `% of ${payersNoun}`,\n backgroundColor: \"#A6A3D7\",\n borderColor: colors.magenta,\n pointStyle: \"circle\",\n pointRadius: 5,\n data: buildData(\"payers\"),\n },\n {\n coverageMetric: \"lives\",\n label: \"% of Lives\",\n pointRadius: 5,\n backgroundColor: \"#8BDFFF\",\n borderColor: colors.teal,\n pointStyle: \"rect\",\n data: buildData(\"lives\"),\n },\n ],\n },\n });\n","export default (container, target) => {\n const $container = $(container);\n const $target = $(target);\n\n const vertical = $container.height() / $target.height();\n const horizontal = $container.width() / $target.width();\n const percentOutOfBounds = Math.min(vertical, horizontal);\n\n if (percentOutOfBounds < 1) {\n $target.css({\n transform: `scale(${percentOutOfBounds})`,\n transformOrigin: \"top\",\n });\n }\n};\n","const abbreviationMap = {\n Alabama: \"AL\",\n Alaska: \"AK\",\n Arizona: \"AZ\",\n Arkansas: \"AR\",\n California: \"CA\",\n Colorado: \"CO\",\n Connecticut: \"CT\",\n Delaware: \"DE\",\n Florida: \"FL\",\n Georgia: \"GA\",\n Hawaii: \"HI\",\n Idaho: \"ID\",\n Illinois: \"IL\",\n Indiana: \"IN\",\n Iowa: \"IA\",\n Kansas: \"KS\",\n Kentucky: \"KY\",\n Louisiana: \"LA\",\n Maine: \"ME\",\n Maryland: \"MD\",\n Massachusetts: \"MA\",\n Michigan: \"MI\",\n Minnesota: \"MN\",\n Mississippi: \"MS\",\n Missouri: \"MO\",\n Montana: \"MT\",\n Nebraska: \"NE\",\n Nevada: \"NV\",\n \"New Hampshire\": \"NH\",\n \"New Jersey\": \"NJ\",\n \"New Mexico\": \"NM\",\n \"New York\": \"NY\",\n \"North Carolina\": \"NC\",\n \"North Dakota\": \"ND\",\n Ohio: \"OH\",\n Oklahoma: \"OK\",\n Oregon: \"OR\",\n Pennsylvania: \"PA\",\n \"Rhode Island\": \"RI\",\n \"South Carolina\": \"SC\",\n \"South Dakota\": \"SD\",\n Tennessee: \"TN\",\n Texas: \"TX\",\n Utah: \"UT\",\n Vermont: \"VT\",\n Virginia: \"VA\",\n Washington: \"WA\",\n \"West Virginia\": \"WV\",\n Wisconsin: \"WI\",\n Wyoming: \"WY\",\n\n \"District of Columbia\": \"DC\",\n \"Puerto Rico\": \"PR\",\n \"American Samoa\": \"AS\",\n Guam: \"GU\",\n \"US Virgin Islands\": \"VI\",\n \"Northern Mariana Islands\": \"MP\",\n};\n\nexport const topojsonStateName = stateModel => {\n const name = stateModel.properties.name;\n\n switch (name) {\n case \"United States Virgin Islands\":\n return \"US Virgin Islands\";\n case \"Commonwealth of the Northern Mariana Islands\":\n return \"Northern Mariana Islands\";\n default:\n return name;\n }\n};\n\nexport const stateAbbreviation = stateModel => abbreviationMap[topojsonStateName(stateModel)];\n\nexport const isTerritory = stateModel =>\n [\"PR\", \"AS\", \"GU\", \"VI\", \"MP\"].includes(stateAbbreviation(stateModel));\n","const symbolaFontFace = () => [...document.fonts].find(ff => ff.family.includes(\"SymbolaRegular\"));\n\nexport default {\n up: \"🠉\",\n down: \"🠋\",\n left: \"🠈\",\n right: \"🠊\",\n onload: callback => symbolaFontFace().loaded.then(callback),\n};\n","import _ from \"lodash\";\n\nexport default class HtmldiffAsyncRunner {\n constructor(diffCallback, progressEl = null) {\n this.diffCallback = diffCallback;\n this.progressEl = progressEl;\n }\n\n calculateDiff(before, after) {\n if (_.isEmpty(before) || _.isEmpty(after)) {\n this.diffCallback(\"
Empty
\");\n } else if (before.length > 10000 || after.length > 10000) {\n this.diffCallback(\"
Text too long for changes
\");\n } else {\n if (this.progressCallback) {\n this.worker.terminate();\n delete this.worker;\n } else {\n this.progressCallback = setTimeout(() => this.onNoticableDelay(), 200);\n }\n\n if (!this.worker) {\n this.worker = new Worker(new URL(\"../workers/htmldiff_worker.js\", import.meta.url));\n this.worker.onmessage = e => this.onWorkerMessage(e);\n }\n\n this.worker.postMessage([before, after]);\n }\n }\n\n onWorkerMessage(event) {\n clearTimeout(this.progressCallback);\n delete this.progressCallback;\n\n setTimeout(() => this.progressEl?.classList?.add(\"hidden\"), 0);\n\n this.diffCallback(event.data);\n }\n\n onNoticableDelay() {\n if (this.progressCallback) {\n this.progressEl?.classList?.remove(\"hidden\");\n }\n }\n\n withinBounds(text) {\n return !_.isEmpty(text) && text.length < 10000;\n }\n}\n","import _ from \"lodash\";\n\nexport const screenBreakpoints = {\n \"\": 0,\n xs: 576,\n sm: 776,\n md: 968,\n lg: 1192,\n xl: 1400,\n \"2k\": 1921,\n \"4k\": 2561,\n \"5k\": 3841,\n \"8k\": 5121,\n};\n\nexport const currentScreenBreakpoint = () =>\n _.findLastKey(screenBreakpoints, v => v < window.innerWidth);\n\nexport const screenWithinBreakpoint = breakpoint => {\n const screenPriority = _.keys(screenBreakpoints).indexOf(currentScreenBreakpoint());\n const breakpointPriority = _.keys(screenBreakpoints).indexOf(breakpoint);\n\n return breakpointPriority <= screenPriority;\n};\n\nexport const isMobile = () => !screenWithinBreakpoint(\"md\");\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-sa\": 82682,\n\t\"./ar-sa.js\": 82682,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","parentCell","composedPath","find","ancestor","classList","contains","toggle","querySelector","menu","shouldOpen","this","closeAllMenus","popper","createPopper","add","remove","destroy","menuTargets","forEach","menuTarget","iconTargets","iconTarget","Controller","targets","window","location","waitsForDOMToRepaintTheScreenAfterInsertingFormThenShowsModal","setTimeout","modalTarget","afterFormFetch","response","headers","has","Turbolinks","clearCache","visit","get","action","text","then","html","formTarget","innerHTML","$","element","each","_i","form","addEventListener","preventDefault","fetch","method","body","FormData","fetchForm","data","initialAuthSelectedValue","initialAuthTarget","options","selectedIndex","reauthSelectedValue","reAuthTarget","initialOtherTextTarget","reauthOtherTextTarget","grow","style","height","scrollHeight","params","currentHashParams","toggleTargets","name","checked","includes","value","selectTargets","select","checkedValue","updateHash","event","exclusions","target","dataset","breadcrumbsAsTogglesResetOnChange","split","newHash","filter","concat","t","join","hash","reload","linkTargets","url","URL","href","paramPairs","slice","assignment","key","toggleExists","some","selectExists","_","s","push","clearInterval","intervalId","hideActions","itemClicked","count","selectedItems","length","showActions","currentTarget","disabled","showSpinner","Rails","JSON","stringify","bulk_ids","resp","hideSpinner","status","alert","showProgress","jobUrl","Accept","blob","json","setInterval","status_url","progress","progressTarget","innerText","error","hideProgress","selectAllTarget","indeterminate","itemTargets","item","actionsTarget","counterTarget","headerTarget","syncSelectAllState","totalItems","dropdownTargets","d","spinnerTarget","algoliasearch","require","instantsearch","search","indexName","searchClient","searchFunction","helper","state","query","resultsTarget","paginationTarget","customPagination","panel","hidden","results","nbPages","pagination","addWidgets","configure","hitsPerPage","distinct","facetFilters","searchBox","container","searchBoxTarget","placeholder","showSubmit","showLoadingIndicator","cssClasses","input","reset","templates","root","list","selectedItem","disabledItem","hits","emptyRoot","resultTemplateTarget","start","searchBarTarget","focus","gid","section","document","hide","scrollIntoView","behavior","block","dispose","onChartTypeChanged","limitedPayerTypes","limitedTypesByChartValue","currentChartType","payerTypeInputTargets","payerType","labels","l","chartTypeTargets","values","limitedTypesByChart","coverageMetricNoun","coverageMetric","payerTypesShown","drug","yes","all","nouns","payersNoun","toLowerCase","toOneDecimal","prior","current","priorValues","accumulateValuesFn","currentValues","title","payerIds","extraParams","payerIdsFor","index","payer","showChangesFromPrevious","currentPayers","priorPayers","changedPayers","changedCoverage","previousSnapshotSetId","previous_snapshot_set","changeDisplayMode","showPayersModal","ds","BarsChartControllerBase","innerClass","BarsChartGridBase","renderChart","titleTarget","PayerTypeLabels","currentAndPriorDataForAccessStatus","mainPercentTarget","percentString","mainDescriptionTarget","toLocaleString","formatPayersLivesTitle","renderGrid","accessStatus","datasetIndex","indexOf","output","drugs","closest","accessStatusIndex","orderedAccessStatusNames","currentPayerIds","priorPayerIds","OnePayerTypeManyDrugsChartControllerBase","setMainStats","setMainDifference","updatePayerTypeVisibility","shrinkWidgetToFit","children","button","trigger","accumulateDataForShownPayers","titleText","descriptionText","currentData","previousData","currentPercent","percent","previousPercent","changeAsShown","parseFloat","changesTextTarget","changesContainerTarget","gridTitleTargets","currentAndPriorDataForTarget","gridFractionTargets","gridChangeIndicatorTargets","gridPercentTargets","toggleClass","payerTypesIncluded","suffix","OneDrugManyPayerTypesChartControllerBase","outerClass","barColor","colorsByCoverageMetric","strikethroughIfDisabled","format","x","priorPercent","mainPercent","Math","max","targetIsDisabled","css","transform","backgroundColor","priorFraction","currentFraction","arrow","withinOneDecimal","addClass","removeClass","payers","colors","magenta","lives","teal","canvas","createElement","appendChild","inStaticMode","drugsIncluded","coverageInputTargets","entries","hexCode","append","rowTemplate","redrawChart","chart","plugins","subtitle","formattedData","calculateDataForChart","datasets","previous","added","removed","previousColorFromCoverageMetric","Chart","appendCanvas","type","ChartDataLabels","indexAxis","responsive","maintainAspectRatio","animation","scales","stacked","grid","display","drawBorder","ticks","y","layout","padding","right","legend","position","onClick","boxWidth","legendItem","chartData","tooltip","displayColors","callbacks","tooltipCallbacks","color","font","size","bottom","datalabels","anchor","align","offset","context","formatter","_value","confirmedAccess","dataIndex","onHover","onHoverPointer","triggerModal","label","pale_green","orange","date","moment","current_date","bases","previousSnapshotData","deltas","currentSnapshotDeltas","abs","min","i","forShownPayers","forThisDrug","byDrug","accumulated","dataOverTime","byAccessStatus","indexes","parseClick","groupType","currentAndPreviousConfirmedPayerIds","pl","lightColors","tooltipItem","deltaWord","confirmed","total","priorConfirmed","priorTotal","currentDatasets","accumulate","priorDatasets","mainFraction","increaseFraction","decreaseFraction","collection","base","changed","remainder","payerTypes","combinatoric","withCurrentDrug","PayersLivesDonutChartBase","formatTitle","forEachDataset","updateChartData","formatData","formattingCallbacks","absoluteDateOverTimeCallbacks","showLine","interaction","intersect","mode","suggestedMin","suggestedMax","callback","bounds","maxTicksLimit","maxOverTimeX","usePointStyle","_event","togglePayerTypeFromChart","titleAlign","commercial","borderColor","pointStyle","pointRadius","pointBorderColor","medicare","medicaid","medicare_advantage","variantLightBlue","medicare_advantage_payers","managed_medicaid","mauve","benefit_management","blue_gray","omitMissingOverTimeItems","datum","overTimeX","point","set","clickLocation","maxIndex","timestamp","SymbolaArrows","onload","update","recalculateChartData","dataFromParams","borderWidth","barPercentage","tooltipLabelText","c","colorForDelta","deltaFromChartContext","weight","textAlign","v","dataLabelWithDelta","listeners","click","triggerModalFromChartElement","triggerModalFromChart","buildDatasets","indigo","mapd","standardLine","parsed","delta","priorValue","currentValue","withinOneDecimalP","up","down","triggerModalInternal","payerTypeIndex","payersByAccessStatus","fractionsForIndexes","_payers","fraction","goldenrod","gray","USStateChartControllerBase","WORD_WRAP","RegExp","that","beforeFooter","footer","items","stateAbbreviation","raw","feature","outreachSummary","medicaid_outreach_status","wrapLines","lines","replace","trim","truncated","ConfirmedAccessUSStateMapChartController","custom_field","preposition","custom_preposition","numeratorText","customFieldValues","priorCustomFieldValues","previous_data","uniqPayersFromCustomFields","numerator_values","joinNounsWithOr","allValues","percentOfPayersText","showModal","customFieldValue","these","forShownPayerTypes","byFieldValue","all_values","p","bind","buildChart","relativeDateOverTimeCallbacks","accumulatedData","datapoints","datapoint","counted","countConfirmedValues","dataForPayerTypes","dataForClickLocation","presentData","numeratorDescriptionText","formattedNumerator","dataForValue","formatTooltipLabel","dataColors","unhiddenValues","legendItems","allValuesOrdered","unhiddenIndexes","sumOfUnhiddenValues","percentOfUnhidden","payersByValue","fillStyle","fontColor","enabledCustomFieldValues","previousDrug","allOldValues","allNewValues","addedValues","removedValues","updateValueRows","updateTotalRow","updateRowVisibility","gridTarget","counts","countsByCustomFieldValue","shown","rowTitleTargets","payersValueTargets","livesValueTargets","livesCount","livesString","enabledPayerCountSum","enabledValue","enabledLivesCountSum","payersPercentTargets","livesPercentTargets","sums","uniquePayerLivesCounts","payersTotalTarget","livesTotalTarget","allCustomFieldTargets","uniquePayers","fromEntries","isOtherDrug","payerIdsByType","otherFieldValue","toArray","on","togglePayerTypeFromButton","drugInputTargets","toggleDrugFromButton","toggleCoverageMetric","updateShownPayers","initializeParams","sort","togglePayerTypesInternal","toggleDrugsInternal","toggleCoverageMetricInternal","updateShownPayersInternal","parse","ChartControllerBase","renderTitle","setBarColors","colorForDrug","currentAndPriorDataForParams","shownPayerType","priorCounts","currentCounts","payerTypeDisabled","drugDisabled","priorityColors","otherColors","colorList","ManyDrugsManyPayerTypesControllerBase","forEachDrug","toggleDrugFromChart","triggerModalFromDatalabel","drugIndex","formatYAxisTitle","top","dataStyle","dataForPayerType","minDateInSet","diff","adjective","coverageMetricText","ChartControllerWrapper","stack","priorData","alreadyParsed","isFixedDrug","toggleDrug","togglePayerTypeInternal","toggleDrugInternal","initialPayerType","updateAttribute","initialAuthIndicatorTargets","initialAuthLabelTargets","reauthIndicatorTargets","reauthLabelTargets","titleTargets","indicatorTarget","labelTarget","percentage","percentageForAttribute","ensuringNoOverrun","toFixed","attribute","byPayerType","numerator","denominator","payersByLength","hasAuthLength","yesValues","isYes","valuesByType","verb","enabledTypes","countsByType","countsForShownPayerTypes","totalsWithPolicy","isEnabled","Yes","No","countSum","byCoverageMetric","required","isRequired","payersByPolicyType","orderedAllValues","paType","tooltipTitleText","combinedFractionFromChartContext","isDatalabelDataset","_v","mainIndex","calculateFractions","remainderFraction","_coverageMetric","_collection","datalabelInsideBar","dataLabelPossiblyWithArrow","deltaColorFromChartContext","left","confirmedByType","present","presentValues","withPublishedPolicy","enabledPolicyTypes","countsByPolicyType","policyType","hasLimit","valuesForState","hasQuantityLimits","generateLabels","generateLegendLabels","footerMarginTop","footerFont","projection","axis","openCoverageDetails","states","topojsonStateName","outline","nation","colorForStateOnMap","fractionForState","payerId","payersForState","bypassPayerModalToDetails","coverageDetailsAnchor","relevantStates","isTerritory","reverse","f","displayValue","displayValueFromFraction","colorForDisplayValue","labelColor","colorFromFraction","chartDatum","applyPayerFilters","fadeColor","rgb","topojson","atlas","features","OneDrugOnePayerTypeChartControllerBase","evaluateDependants","setAllCheckboxes","boxesToCheck","checkboxListSelect","checkboxTargets","checkbox","setChecked","token","checkboxListToken","groupIds","groupBoxes","allChecked","every","dependantTargets","el","dependantCheckbox","parent","other","dependantOn","noEventsValue","dispatchEvent","Event","Array","from","querySelectorAll","noEvents","Boolean","sourceTarget","execCommand","chevronTargets","detailsTargets","render","spinner","highlightSelectedPayer","getElementById","fromString","sourceOfTruth","useValue","inputGroupTargets","klass","enable","disable","inputTargets","selectize","shouldClear","clear","trixId","setAttribute","toolbarElement","removeAttribute","startsWith","sourceInputTargets","actionTarget","confirmTarget","confirmExtraTargets","dependantLabelTargets","dependantIsActive","setCheckboxState","dependantLabel","theseValues","connectedMultiselectShowForSourceValue","checkedSourceValues","sourceCheckboxTargets","valueField","labelField","searchField","dataAttr","create","preload","option","email","employer","load","ajax","encodeURIComponent","success","teardown","once","dataType","outerHTML","range","createRange","getSelection","removeAllRanges","sourceHidden","hasClass","selectNode","addRange","inputsToCopy","rowTargets","row","ri","updateCounts","selectedPayerTypes","checkedValues","selectedDrugs","countTargets","coverages","coverageCountingCoverages","sum","assembleCount","toggleAlertClass","payerTypeIds","drugIds","payerTypeId","drugId","alertClass","coverageCountingAlertClass","elementsThatCouldResize","observer","ResizeObserver","onResize","observe","entryToPreserve","newPosition","getBoundingClientRect","scrollBy","topToPreserve","clearTimeout","timeout","drugCountBreakpoints","sm","md","xl","shiftAmount","scrollCompensation","PreserveScrollPosition","sectionTargets","onScreenResize","updateVisiblity","hideOverflowingColumns","toggleGutters","updateVisiblityPreservingVerticalPosition","drugCount","shownIndices","shownDrugIndices","columnTargets","parseInt","elementToPreserve","preservePosition","sectionNearest","showLeftGutter","overflowExists","showRightGutter","sectionTitleTargets","gutterLeftTargets","gutterRightTargets","visibleDrugCount","maxVisibleDrugs","shiftWithoutWrap","screenWithinBreakpoint","_count","breakpoint","nearestSection","minDistance","Infinity","rect","otherRect","distance","exportIconTarget","spinnerIconTarget","exportResponse","processStatusResponses","errorIconTarget","downloadButtonTarget","download_key","refreshOptions","refreshOptionsInternal","updateNameMirrors","newValues","valuesForActiveField","shownCheckboxes","allUnchecked","yesBox","fieldName","activeCustomFieldTarget","fieldNameMirrorTargets","rowHtml","uuid","longName","shortName","reorderTarget","val","newlyAddedValues","rowExists","isDropdown","newRow","attr","crypto","randomUUID","onChange","fieldOptionRowTargets","bubbles","activeIconPickerRow","allFieldOptionRows","iconColumn","iconPickerTarget","placement","modifiers","mainAxis","altAxis","hideIconPicker","icon","iconSvgMapValue","iconSvgMap","inputElement","hasInputTarget","inputTarget","picker","Pikaday","field","toString","dateString","toDate","onSelect","CustomEvent","decimalPlaces","inputMask","InputMask","digits","rightAlign","enforceDigitsOnBlur","allowMinus","mask","monotonicTimestamp","filename","width","offsetWidth","offsetHeight","footerTarget","excludeTargets","frameTarget","toPng","imageData","insertImage","saveFile","htmlToImage","dataUrl","previousLength","htmlToImageKnownFaultyValue","img","src","imageTarget","removeChild","firstChild","htmlToImageKnownFaulty","rowTemplateTarget","rowContainerTarget","parentElement","priceTarget","hideNoPriceReason","noPriceReasonTarget","hidePrice","resetTarget","$checkboxTargets","showWhenInactiveTargets","showWhenActiveTargets","$inactiveRowTargets","$checkboxColumnTargets","selectedCountTarget","selectedCount","submitTarget","formValue","String","MutationObserver","onTableEntriesChanged","childList","taskId","coverageTaskId","tableEntryTargets","modalFormTarget","currentPayerType","ambiguous","shownWhenPayerTypeAmbiguousTargets","hiddenWhenPayerTypeAmbiguousTargets","hasFixedPayerTypeValue","fixedPayerTypeValue","hasTableEntryTarget","fixedPayerType","payerModalCheckboxTargets","pageFormHasTaskColumn","newFormColumn","addPageFormColumn","coverageModalSelectTarget","endpointValue","pageFormTarget","endpoint","urlValue","objectUrl","createObjectURL","Blob","downloadLink","filenameValue","revokeObjectURL","download","asyncRunners","resourceUrl","newFieldValues","snapshotTargets","snapshotTrixTargets","editor","loadHTML","snapshotTrixContainerTargets","snapshotTrixPlaceholderTargets","allFieldNames","thisField","findMatching","snapshotValue","diffHtml","currentTargets","initializeRunner","calculateDiff","htmldiffTargets","HtmldiffAsyncRunner","renderDiff","snapshotSetId","selectTarget","urlBase","htmldiffRunner","comparatorValue","editableValue","outputTarget","editableTarget","comparatorTarget","universalDomainExclusions","showWarning","isExternalLink","leaveButtonTarget","host","domains","match","fileTarget","dropzone","hasDropzoneTarget","dropzoneTarget","showDropzone","hideDropzone","fileupload","fileInput","autoUpload","paramName","replaceFileInput","dropZone","fileData","selectedFile","files","nameTarget","formData","submit","maybePlaceholderTarget","maybeImagePreviewTarget","progressall","loaded","done","jqXHR","responseXML","keyTarget","maybeClearTarget","autoSubmit","hasImagePreviewTarget","previewImage","fail","dispatchConnectedEvent","file","reader","FileReader","imagePreviewTarget","result","readAsDataURL","dataTransfer","kind","hasPlaceholderTarget","placeholderTarget","hasClearTarget","clearTarget","clearFilter","filterExp","listItemTargets","listItem","inputField","cancelable","filterList","frameUrl","filterTargets","isFilterSelected","updateLabel","filtersResetOnChange","urlHash","pathname","disableTargets","prop","encodeURI","oldSlug","filtersLeaveSlug","newSlug","labelTargets","labelTextFromSelected","selectedFilters","filtersAnchor","a","b","isSelected","filtersInvert","selected","filtersItemName","removeFlash","hasMessageTarget","messageTarget","parentNode","disappear","clearTimeouts","timeoutIds","isValid","checkValidity","groupsHaveSomeChecked","submitTargets","submitEl","groups","someRequiredTargets","gridTargets","containerTargets","hideElementsNotInLayout","columnCount","hideableTargets","targetColumns","hideToken","labelClass","preselectedRadios","radioTargets","preselectedSelects","targetToShow","matchesGroup","hideManyGroup","matches","hideManyToken","active","addressIdTarget","showCustomForm","hideCustomForm","addressFormTarget","hasCardTarget","cardTarget","controller","AbortController","signal","r","fragment","createContextualFragment","abort","checkedTargets","checkedCount","displayTarget","matchingLabelText","nounsValue","hasExclusiveInputTarget","exclusiveInputTarget","otherInputTargets","onClassChange","attributeFilter","isHidden","targetBottom","distanceWithMargin","innerHeight","autoOpen","loadContent","contentTarget","headingTarget","menuContainerTarget","hamburgerTarget","xTarget","mt","portalContentTarget","isMobile","onchange","sourceValues","n","optionTargets","unlockedValue","unlock","lock","lockIconTarget","unlockIconTarget","unlockButtonTarget","unlocked","clearSelection","baseUrl","region","popup","popupTarget","popupTargets","stateTargets","isInside","resultTarget","cookieKey","Cookies","expires","conditionalOptions","parents","onDropdownOpen","buildDropdownRepositionCallback","openOnFocus","closeAfterSelect","allowEmptyOption","respect_word_boundaries","selectOnTab","selectedValue","optionsValue","indents","descendents","score","defaultSearch","getScoreFunction","escape","outputLines","indent","onFocus","getValue","createFilter","$dropdown","dropdownPosition","dropdownSpillover","Number","SelectController","buildRefinementlist","nbHits","header","refinementList","buildPanelWithTitle","operator","showMore","limit","labelText","disabledShowMore","buildDateRangeRefinement","connectRange","renderOptions","isFirstRender","refine","widgetParams","inputElements","elements","rawMinInputValue","Date","rawMaxInputValue","isFinite","undefined","filters","facetingAfterDistinct","autofocus","showReset","refinementTargets","ref","dateRangeTarget","clearRefinements","clearDateRangeTarget","includedAttributes","resetLabel","addWidget","clearFilterTarget","closeButtonTarget","openButtonTarget","onTurbolinksBeforeCache","close","removeEventListener","clonerTargets","cloneToOtherForm","otherForm","otherFormId","existing","sliderTarget","tabThrough","parts","formattedValue","padStart","highlightElement","dismissUrlValue","hasHighlightValue","highlightValue","highlight","dismissUrl","stepUp","stepDown","link","open","effectiveDateRangeTarget","clearEffectiveDateRangeTarget","revisionDateRangeTarget","clearRevisionDateRangeTarget","enabled","restorePosition","currentPos","scrollable","scrollTop","localStorage","setItem","clearPosition","pos","getItem","requestAnimationFrame","scrollTo","removeItem","source","prefix","hasScrollableTarget","scrollableTarget","syncInputs","radioButton","onOutsideClick","closeMenu","toggleTarget","positionValue","coords","gridCoordinates","dragOperation","effectAllowed","setData","otherWidgets","widgetTargets","workingData","newArea","extraWorkingData","repositionAreaTarget","coordinateTargets","newWidgetAreaTarget","calculateResizeOrigin","startPoint","calculateMoveOriginAndOffset","direction","origin","anchorHorizontalEnd","columnSpan","anchorVerticalEnd","rowSpan","column","targetCoords","calculateNewResizeArea","calculateNewMoveArea","boundingStartColumn","boundingEndColumn","boundingStartRow","boundingEndRow","targetColumn","targetRow","maximum","maxCoords","maxColumn","maxRow","bounded","ideal","calculateNewArea","anyOverlap","newAreaOverlapsOtherWidgets","setDragCursor","endCoords","chartID","$form","formTargets","widgetMoved","anyChanges","serializeArray","widgetIsValid","setFormValue","hasError","cssCoords","dropEffect","newGridCoords","currentFormValues","obj","area","startBeforeEnd","intersectsAlongAxis","widget","allCoords","resize","rows","rowsTarget","columns","columnsTarget","previewBoxes","takenCoords","columnRange","flatMap","coord","takenClass","gtag","dataLayer","arguments","user_id","dimension1","dimension3","dimension4","dimension5","custom_map","event_category","event_label","analyticsDownloadType","portal","client","portal_file","analyticsFileName","collapse","filesTarget","expand","portalNameTarget","setRange","defaultOptionTarget","customContainerTarget","rangeTargets","isMobileView","innerWidth","screenBreakpoints","sources","buildSmallSource","buildSource","autocomplete","panelContainer","hint","autoFocus","detachedMediaQuery","getSources","searchParams","groupedResults","transformedHits","h","category","hit","idx","showHeader","userToken","optionalWords","highlightPreTag","HIGHLIGHT_PRE_TAG","highlightPostTag","HIGHLIGHT_POST_TAG","sourceId","getItems","fetchResults","getItemUrl","portal_link","noResults","components","Highlight","tagName","logTarget","log","flags","hasDownloadButtonTarget","hasStickyHeaderTarget","scrollWithOffset","scrollWithoutOffset","scrollingElement","headerHeight","stickyHeaderTarget","outerHeight","scroll","animate","search_result_permalink","search_result_category","search_result_type","isMulti","attributes","multiple","inModal","addSingle","selectizeAddSingle","addMulti","onItemAdd","maxOptions","siblings","startShownValue","show","showTargets","contentTargets","startShown","showWhenOverflow","overflowableTarget","showTarget","hasOverflow","clientHeight","showableTargets","jumpTo","fast","isSync","Sortable","handle","fallbackOnBody","store","sortable","sortSync","sortAsync","sortableItem","ordered_items","message","urlTarget","commercialPayersTarget","medicareAdvantagePayersTarget","managedMedicaidPayersTarget","payerTypesTarget","snapshot","onScroll","headerContainerTarget","bodyContainerTarget","scrollLeft","tabTargets","contentIndex","tabIndex","contentClass","clearItemTargets","clearItem","changeEvent","tablesort","asc","desc","table","Intl","DateTimeFormat","resolvedOptions","timeZone","clientId","fetchDrugsForClient","path","drugsTarget","alignmentRow","fileTools","toolbar","insertBefore","leftButton","centerButton","rightButton","previousSibling","historyTools","underlineButton","linkButton","isIE","documentMode","jquery","jQuery","updateTimeStamps","timeHelpers","timeHelper","timeFormat","getAttribute","datetime","textContent","calendar","lastDay","sameDay","nextDay","lastWeek","nextWeek","sameElse","fromNow","monitorTimeTags","mutations","mutation","addedNodes","addedNode","subtree","RAILS_ENV","process","Sentry","dsn","environment","scope","user","Scout","currentUser","setUser","application","Application","definitionsFromContext","handleError","detail","console","captureException","last","payerPairs","accumulateValues","minDate","maxDate","dateFromOverTimeX","absoluteDateOverTimeLabel","xValue","allTicks","thisDate","lastDate","yearsMatch","year","month","relativeDateOverTimeLabel","monthsPostLaunch","previousXValue","previousDate","singleXValueTooltip","_index","allTooltipItems","monthsFromStart","byCustomFieldValue","tailwindColors","initialized","regionFilters","accountManagerFilters","comparePairToId","pair","regions","accountManagers","payerFilters","initializeFilters","currentRegion","currentAccountManager","filteredPayerPairs","allAccountManagers","am","idsFromAllAccountManagers","abbreviations","tag","parsePayerId","getElementsAtEventForMode","groupTitle","longGroupTitle","drugName","buildData","triggerModalCallback","$container","$target","vertical","horizontal","percentOutOfBounds","transformOrigin","abbreviationMap","Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","Ohio","Oklahoma","Oregon","Pennsylvania","Tennessee","Texas","Utah","Vermont","Virginia","Washington","Wisconsin","Wyoming","Guam","stateModel","properties","fonts","ff","family","diffCallback","progressEl","before","after","progressCallback","worker","terminate","onNoticableDelay","Worker","onmessage","onWorkerMessage","postMessage","xs","lg","screenPriority"],"sourceRoot":""}