renalware-core 2.0.157 → 2.0.162
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/renalware/components/configuration.js +20 -0
- data/app/assets/javascripts/renalware/components/{dialogs.js.erb → dialogs.js} +2 -5
- data/app/assets/javascripts/renalware/components/{feed_only_inputs.js.erb → feed_only_inputs.js} +4 -4
- data/app/assets/javascripts/renalware/{core.js.erb → core.js} +0 -5
- data/app/assets/javascripts/renalware/rollup_compiled.css +42050 -42050
- data/app/assets/javascripts/renalware/rollup_compiled.js +768 -201
- data/app/assets/stylesheets/renalware/modules/_clinical.scss +41 -0
- data/app/components/renalware/admissions/active_consult_alert_component.html.slim +1 -1
- data/app/components/renalware/article_component.rb +1 -1
- data/app/components/renalware/letters/letters_in_progress_component.rb +1 -5
- data/app/components/renalware/letters/unread_electronic_ccs_component.rb +1 -4
- data/app/components/renalware/medications/tabbed_prescriptions_list_component.html.slim +2 -2
- data/app/components/renalware/pathology/sparkline_component.html.slim +1 -1
- data/app/components/renalware/patients/bookmarks_component.rb +1 -5
- data/app/components/renalware/patients/messages_component.rb +2 -8
- data/app/components/renalware/pd/adequacy_results_component.rb +1 -1
- data/app/components/renalware/pd/pet_results_component.html.slim +5 -7
- data/app/components/renalware/surveys/eq5d_component.rb +1 -5
- data/app/components/renalware/surveys/pos_s_component.rb +1 -5
- data/app/components/renalware/system/admin_menu_component.rb +1 -4
- data/app/components/renalware/system/users_awaiting_approval_component.rb +1 -5
- data/app/controllers/renalware/api/token_authenticated_api_controller.rb +1 -1
- data/app/controllers/renalware/api/v1/medications/prescriptions_controller.rb +1 -1
- data/app/controllers/renalware/api/v1/patients/patients_controller.rb +1 -1
- data/app/controllers/renalware/events/events_controller.rb +0 -1
- data/app/controllers/renalware/pd/pet_results_controller.rb +1 -1
- data/{lib → app/documents}/document/attribute_initializer.rb +0 -0
- data/{lib → app/documents}/document/attribute_initializer/active_model.rb +0 -0
- data/{lib → app/documents}/document/attribute_initializer/base.rb +0 -0
- data/{lib → app/documents}/document/attribute_initializer/enum.rb +0 -0
- data/{lib → app/documents}/document/base.rb +0 -0
- data/{lib → app/documents}/document/embedded.rb +0 -0
- data/{lib → app/documents}/document/enum.rb +0 -0
- data/app/javascript/renalware/controllers/modal_controller.js +1 -1
- data/app/jobs/renalware/hd/generate_monthly_statistics.rb +1 -1
- data/app/jobs/renalware/hd/generate_monthly_statistics_for_patient_job.rb +1 -1
- data/app/jobs/renalware/letters/calculate_page_count_job.rb +0 -1
- data/app/jobs/renalware/letters/mailshots/create_mailshot_letters_job.rb +0 -1
- data/app/jobs/renalware/letters/printing/batch_print_job.rb +0 -1
- data/app/jobs/renalware/letters/save_rtf_letter_to_file_job.rb +1 -1
- data/app/mailers/renalware/letters/{delivery/errors.rb → delivery.rb} +2 -1
- data/app/mailers/renalware/letters/delivery/practice_mailer.rb +2 -2
- data/app/models/concerns/renalware/deviseable.rb +3 -3
- data/app/models/renalware/admissions/admission_query.rb +0 -1
- data/{lib → app/models}/renalware/automatic_age_calculator.rb +0 -0
- data/app/models/renalware/clinical/create_allergy.rb +4 -4
- data/app/models/renalware/clinics/create_clinic_visit.rb +4 -4
- data/app/models/renalware/clinics/current_observations.rb +3 -4
- data/app/models/renalware/events/alertable_events_query.rb +27 -0
- data/app/models/renalware/events/create_event.rb +0 -1
- data/app/models/renalware/events/event.rb +4 -0
- data/app/models/renalware/events/event_type_alert_trigger.rb +15 -0
- data/app/models/renalware/events/type.rb +7 -0
- data/app/models/renalware/feeds/files/exceptions.rb +1 -0
- data/app/models/renalware/feeds/files/practice_memberships/import_csv.rb +0 -1
- data/app/models/renalware/feeds/files/primary_care_physicians/import_csv.rb +0 -1
- data/app/models/renalware/feeds/message_processor.rb +0 -1
- data/app/models/renalware/hd/prescription_administration.rb +6 -4
- data/app/models/renalware/hd/profiles_in_date_range_query.rb +1 -6
- data/app/models/renalware/hd/scheduling/diary_range.rb +1 -2
- data/app/models/renalware/hd/scheduling/find_or_create_diary_by_week_query.rb +1 -1
- data/app/models/renalware/hd/session_forms/batch.rb +0 -1
- data/app/models/renalware/hd/session_forms/batch_compile_pdfs.rb +0 -1
- data/app/models/renalware/hd/session_forms/batch_item.rb +0 -1
- data/app/models/renalware/hd/sessions/close_stale_open_sessions.rb +0 -1
- data/app/models/renalware/letters/approve_letter.rb +0 -1
- data/app/models/renalware/letters/complete_letter.rb +0 -1
- data/app/models/renalware/letters/delivery/delivery_policy.rb +0 -1
- data/app/models/renalware/letters/delivery/email_letter_to_practice.rb +0 -1
- data/app/models/renalware/letters/delivery/practice_email.rb +0 -1
- data/app/models/renalware/letters/html_renderer.rb +1 -1
- data/app/models/renalware/letters/letter_factory.rb +1 -1
- data/app/models/renalware/letters/part/recent_pathology_results.rb +0 -1
- data/app/models/renalware/letters/pathology_layout.rb +1 -1
- data/app/models/renalware/letters/pdf_letter_cache.rb +1 -1
- data/app/models/renalware/letters/pdf_renderer.rb +1 -1
- data/app/models/renalware/letters/printing/batch_compile_pdfs.rb +0 -1
- data/app/models/renalware/letters/printing/complete_batch.rb +0 -1
- data/app/models/renalware/letters/printing/pdf_combining.rb +0 -2
- data/app/models/renalware/letters/resolve_default_electronic_ccs.rb +0 -2
- data/app/models/renalware/letters/rtf_renderer.rb +3 -2
- data/app/models/renalware/modalities/change_patient_modality.rb +4 -4
- data/app/models/renalware/pathology.rb +1 -0
- data/app/models/renalware/pathology/adjust_observation.rb +0 -1
- data/app/models/renalware/pathology/message_listener.rb +1 -1
- data/app/models/renalware/pathology/observation.rb +1 -1
- data/app/models/renalware/pathology/observation_descriptions_by_code_query.rb +1 -1
- data/app/models/renalware/pathology/observations_grouped_by_date_query.rb +0 -1
- data/app/models/renalware/pathology/observations_grouped_by_date_table.rb +0 -1
- data/app/models/renalware/pathology/ordered_patient_query.rb +1 -1
- data/app/models/renalware/pathology/requests/request_params_factory.rb +0 -1
- data/app/models/renalware/patients/calculate_age.rb +0 -1
- data/app/models/renalware/patients/clear_patient_ukrdc_data.rb +0 -1
- data/app/models/renalware/patients/ingestion/update_master_patient_index.rb +0 -1
- data/app/models/renalware/patients/last_successful_practice_sync_date_query.rb +0 -2
- data/app/models/renalware/patients/primary_care_physician.rb +1 -0
- data/app/models/renalware/patients/sync_ods_job.rb +1 -1
- data/app/models/renalware/patients/sync_practices_via_api.rb +1 -1
- data/app/models/renalware/pd.rb +5 -0
- data/app/models/renalware/pd/{apd/exceptions.rb → apd.rb.dead} +0 -0
- data/app/models/renalware/pd/apd/available_overnight_volume.rb +0 -1
- data/app/models/renalware/pd/apd/regime_calculations.rb +1 -1
- data/app/models/renalware/pd/create_regime.rb +4 -4
- data/app/models/renalware/pd/regimes_in_date_range_query.rb +0 -2
- data/app/models/renalware/pd/revise_regime.rb +5 -5
- data/{lib → app/models}/renalware/remembered_preferences.rb +0 -0
- data/app/models/renalware/research/study_participants_query.rb +0 -1
- data/app/models/renalware/transplants/create_donor_stage.rb +4 -4
- data/app/models/renalware/transplants/registrations/wait_list_query.rb +1 -1
- data/app/models/renalware/ukrdc.rb +1 -0
- data/app/models/renalware/ukrdc/create_encrypted_patient_xml_files.rb +2 -2
- data/app/models/renalware/ukrdc/create_patient_xml_file.rb +1 -2
- data/app/models/renalware/ukrdc/export_summary.rb +0 -1
- data/app/models/renalware/ukrdc/housekeeping/remove_old_export_archive_folders.rb +0 -1
- data/app/models/renalware/ukrdc/incoming/file_list.rb +0 -2
- data/app/models/renalware/ukrdc/incoming/import_survey.rb +0 -1
- data/app/models/renalware/ukrdc/incoming/import_surveys.rb +0 -1
- data/app/models/renalware/ukrdc/incoming/xml_document.rb +0 -1
- data/app/models/renalware/ukrdc/pathology_observation_requests_query.rb +1 -2
- data/app/models/renalware/ukrdc/treatment_timeline/generate_timeline.rb +0 -1
- data/app/models/renalware/ukrdc/treatment_timeline/generate_treatments.rb +1 -1
- data/app/models/renalware/ukrdc/treatment_timeline/generator_factory.rb +1 -1
- data/app/models/renalware/ukrdc/treatment_timeline/hd/generator.rb +1 -1
- data/app/models/renalware/ukrdc/treatment_timeline/pd/generator.rb +0 -1
- data/app/models/renalware/ukrdc/treatment_timeline/pd/regime_decorator.rb +0 -1
- data/app/models/renalware/ukrdc/treatment_timeline/transfer_out/generator.rb +0 -1
- data/app/models/renalware/ukrdc/treatment_timeline/transplant/generator.rb +0 -1
- data/app/models/renalware/ukrdc/xml_renderer.rb +2 -2
- data/app/models/renalware/virology/vaccination.rb +14 -1
- data/app/models/renalware/virology/vaccination_type.rb +16 -0
- data/app/presenters/renalware/accesses/dashboard_presenter.rb +0 -1
- data/app/presenters/renalware/clinical/header_presenter.rb +0 -1
- data/app/presenters/renalware/letters/letter_presenter.rb +1 -1
- data/app/presenters/renalware/letters/part_class_filter.rb +0 -1
- data/app/presenters/renalware/letters/practice_email_meta_data.rb +0 -1
- data/app/presenters/renalware/low_clearance/dashboard_presenter.rb +0 -1
- data/app/presenters/renalware/medications/prescription_presenter.rb +7 -0
- data/app/presenters/renalware/pathology/observations_diff.rb +0 -1
- data/app/presenters/renalware/renal/clinical_summary_presenter.rb +0 -1
- data/app/presenters/renalware/summary_part.rb +0 -2
- data/app/presenters/renalware/transplants/donor_dashboard_presenter.rb +0 -1
- data/app/presenters/renalware/transplants/recipient_dashboard_presenter.rb +0 -1
- data/app/presenters/renalware/ukrdc/transplant_operation_presenter.rb +0 -1
- data/app/presenters/renalware/user_session_presenter.rb +1 -3
- data/app/values/renalware/bmi.rb +0 -2
- data/app/views/renalware/admin/cache/show.html.slim +0 -36
- data/app/views/renalware/admin/playgrounds/show.html.slim +2 -2
- data/app/views/renalware/events/events/_alerts.html.slim +3 -0
- data/app/views/renalware/events/events/alert/_simple.html.slim +5 -0
- data/app/views/renalware/events/events/toggled_cell/_swab.html.slim +1 -1
- data/app/views/renalware/hd/dashboards/_page_actions.html.slim +4 -1
- data/app/views/renalware/hd/mdm_patients/_patient.html.slim +1 -1
- data/app/views/renalware/hd/prescription_administrations/_form.html.slim +2 -2
- data/app/views/renalware/hd/transmission_logs/index.html.slim +2 -1
- data/app/views/renalware/layouts/_patient.html.slim +1 -0
- data/app/views/renalware/letters/batches/_create.html.slim +2 -2
- data/app/views/renalware/letters/contacts/_new_person.html.slim +1 -1
- data/app/views/renalware/letters/contacts/_person_from_directory.html.slim +1 -1
- data/app/views/renalware/letters/formatted_letters/_letter.html.slim +13 -14
- data/app/views/renalware/letters/mailshots/mailshots/_form.html.slim +25 -21
- data/app/views/renalware/letters/parts/_allergies.html.slim +1 -1
- data/app/views/renalware/letters/parts/_problems.html.slim +1 -1
- data/app/views/renalware/letters/parts/_recent_pathology_results.html.slim +1 -1
- data/app/views/renalware/medications/home_delivery/events/_edit.html.slim +4 -4
- data/app/views/renalware/medications/prescriptions/_current.html.slim +1 -1
- data/app/views/renalware/medications/prescriptions/_current_hd.html.slim +1 -1
- data/app/views/renalware/medications/prescriptions/_form.html.slim +3 -3
- data/app/views/renalware/medications/prescriptions/_prescription.html.slim +3 -1
- data/app/views/renalware/medications/prescriptions/_recently_stopped.html.slim +1 -1
- data/app/views/renalware/system/downloads/index.html.slim +1 -1
- data/app/views/renalware/system/messages/_form.html.slim +1 -1
- data/app/views/renalware/system/view_metadata/_columns_table.html.slim +2 -2
- data/app/views/renalware/system/view_metadata/edit.html.slim +6 -6
- data/app/views/renalware/virology/vaccinations/_alert.html.slim +5 -0
- data/app/views/renalware/virology/vaccinations/_cell.html.slim +1 -1
- data/app/views/renalware/virology/vaccinations/_inputs.html.slim +3 -1
- data/app/views/renalware/virology/vaccinations/_toggled_cell.html.slim +3 -1
- data/config/initializers/core_extensions.rb +1 -1
- data/config/initializers/inflections.rb +2 -0
- data/config/locales/renalware/virology/virology.en.yml +4 -0
- data/db/migrate/20201105153422_update_medication_current_prescriptions_view.rb +7 -0
- data/db/migrate/20201112152752_update_pd_mdm_patients_view1.rb +7 -0
- data/db/migrate/20210105163944_create_virology_vaccination_types.rb +13 -0
- data/db/migrate/20210115181817_create_event_type_alert_triggers.rb +15 -0
- data/db/seeds/default/seeds.rb +1 -0
- data/db/seeds/default/virology/seeds.rb +3 -0
- data/db/seeds/default/virology/vaccination_types.rb +25 -0
- data/db/views/medication_current_prescriptions_v01.sql +2 -1
- data/db/views/medication_current_prescriptions_v02.sql +30 -0
- data/db/views/pd_mdm_patients_v03.sql +50 -0
- data/db/views/reporting_anaemia_audit_v01.sql +0 -2
- data/lib/core_extensions/active_support/{duration.rb → duration_additions.rb} +0 -0
- data/lib/failure.rb +6 -0
- data/lib/gpg_encrypt_folder.rb +0 -2
- data/lib/month_period.rb +16 -0
- data/lib/renalware/configuration.rb +5 -6
- data/lib/renalware/version_number.rb +1 -1
- data/lib/service_result.rb +17 -0
- data/lib/sql/indexed_case_stmt.rb +1 -3
- data/lib/success.rb +9 -0
- data/lib/tasks/ukrdc.rake +1 -1
- data/lib/week_period.rb +57 -0
- data/spec/factories/events/events.rb +1 -2
- data/spec/factories/letters/letters.rb +4 -11
- data/spec/factories/medications/prescription_version.rb +1 -2
- data/spec/factories/patients/ethnicities.rb +1 -2
- data/spec/factories/pd/bag_types.rb +2 -2
- data/spec/factories/snippets/users.rb +1 -2
- data/spec/factories/transplants/recipient_followups.rb +1 -2
- data/spec/factories/virology/vaccination_types.rb +8 -0
- data/spec/factories/virology/vaccinations.rb +1 -1
- data/{lib/test_support → spec/support}/ajax_helpers.rb +0 -0
- data/{lib/test_support → spec/support}/text_editor_helpers.rb +0 -0
- metadata +51 -42
- data/app/assets/javascripts/renalware/components/reporting.js.erb +0 -0
- data/app/assets/javascripts/renalware/components/session_timeout_redirect.js.erb +0 -37
- data/app/components/renalware/system/article_component.html.slim +0 -3
- data/app/components/renalware/system/article_component.rb +0 -9
- data/app/mailers/renalware/previews/report_preview.rb +0 -14
- data/app/mailers/renalware/previews/ukrdc_summary_preview.rb +0 -20
- data/app/mailers/renalware/previews/user_mailer_preview.rb +0 -16
- data/lib/renalware/failure.rb +0 -6
- data/lib/renalware/month_period.rb +0 -18
- data/lib/renalware/service_result.rb +0 -19
- data/lib/renalware/success.rb +0 -9
- data/lib/renalware/week_period.rb +0 -59
@@ -1910,16 +1910,17 @@ if (window.MutationObserver) {
|
|
1910
1910
|
}
|
1911
1911
|
|
1912
1912
|
var EventListener = function() {
|
1913
|
-
function EventListener(eventTarget, eventName) {
|
1913
|
+
function EventListener(eventTarget, eventName, eventOptions) {
|
1914
1914
|
this.eventTarget = eventTarget;
|
1915
1915
|
this.eventName = eventName;
|
1916
|
+
this.eventOptions = eventOptions;
|
1916
1917
|
this.unorderedBindings = new Set();
|
1917
1918
|
}
|
1918
1919
|
EventListener.prototype.connect = function() {
|
1919
|
-
this.eventTarget.addEventListener(this.eventName, this,
|
1920
|
+
this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);
|
1920
1921
|
};
|
1921
1922
|
EventListener.prototype.disconnect = function() {
|
1922
|
-
this.eventTarget.removeEventListener(this.eventName, this,
|
1923
|
+
this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);
|
1923
1924
|
};
|
1924
1925
|
EventListener.prototype.bindingConnected = function(binding) {
|
1925
1926
|
this.unorderedBindings.add(binding);
|
@@ -1945,7 +1946,7 @@ var EventListener = function() {
|
|
1945
1946
|
return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;
|
1946
1947
|
});
|
1947
1948
|
},
|
1948
|
-
enumerable:
|
1949
|
+
enumerable: false,
|
1949
1950
|
configurable: true
|
1950
1951
|
});
|
1951
1952
|
return EventListener;
|
@@ -1994,7 +1995,7 @@ var Dispatcher = function() {
|
|
1994
1995
|
return listeners.concat(Array.from(map.values()));
|
1995
1996
|
}, []);
|
1996
1997
|
},
|
1997
|
-
enumerable:
|
1998
|
+
enumerable: false,
|
1998
1999
|
configurable: true
|
1999
2000
|
});
|
2000
2001
|
Dispatcher.prototype.bindingConnected = function(binding) {
|
@@ -2010,20 +2011,21 @@ var Dispatcher = function() {
|
|
2010
2011
|
this.application.handleError(error, "Error " + message, detail);
|
2011
2012
|
};
|
2012
2013
|
Dispatcher.prototype.fetchEventListenerForBinding = function(binding) {
|
2013
|
-
var eventTarget = binding.eventTarget, eventName = binding.eventName;
|
2014
|
-
return this.fetchEventListener(eventTarget, eventName);
|
2014
|
+
var eventTarget = binding.eventTarget, eventName = binding.eventName, eventOptions = binding.eventOptions;
|
2015
|
+
return this.fetchEventListener(eventTarget, eventName, eventOptions);
|
2015
2016
|
};
|
2016
|
-
Dispatcher.prototype.fetchEventListener = function(eventTarget, eventName) {
|
2017
|
+
Dispatcher.prototype.fetchEventListener = function(eventTarget, eventName, eventOptions) {
|
2017
2018
|
var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);
|
2018
|
-
var
|
2019
|
+
var cacheKey = this.cacheKey(eventName, eventOptions);
|
2020
|
+
var eventListener = eventListenerMap.get(cacheKey);
|
2019
2021
|
if (!eventListener) {
|
2020
|
-
eventListener = this.createEventListener(eventTarget, eventName);
|
2021
|
-
eventListenerMap.set(
|
2022
|
+
eventListener = this.createEventListener(eventTarget, eventName, eventOptions);
|
2023
|
+
eventListenerMap.set(cacheKey, eventListener);
|
2022
2024
|
}
|
2023
2025
|
return eventListener;
|
2024
2026
|
};
|
2025
|
-
Dispatcher.prototype.createEventListener = function(eventTarget, eventName) {
|
2026
|
-
var eventListener = new EventListener(eventTarget, eventName);
|
2027
|
+
Dispatcher.prototype.createEventListener = function(eventTarget, eventName, eventOptions) {
|
2028
|
+
var eventListener = new EventListener(eventTarget, eventName, eventOptions);
|
2027
2029
|
if (this.started) {
|
2028
2030
|
eventListener.connect();
|
2029
2031
|
}
|
@@ -2037,17 +2039,25 @@ var Dispatcher = function() {
|
|
2037
2039
|
}
|
2038
2040
|
return eventListenerMap;
|
2039
2041
|
};
|
2042
|
+
Dispatcher.prototype.cacheKey = function(eventName, eventOptions) {
|
2043
|
+
var parts = [ eventName ];
|
2044
|
+
Object.keys(eventOptions).sort().forEach(function(key) {
|
2045
|
+
parts.push("" + (eventOptions[key] ? "" : "!") + key);
|
2046
|
+
});
|
2047
|
+
return parts.join(":");
|
2048
|
+
};
|
2040
2049
|
return Dispatcher;
|
2041
2050
|
}();
|
2042
2051
|
|
2043
|
-
var descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;
|
2052
|
+
var descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;
|
2044
2053
|
|
2045
|
-
function
|
2054
|
+
function parseActionDescriptorString(descriptorString) {
|
2046
2055
|
var source = descriptorString.trim();
|
2047
2056
|
var matches = source.match(descriptorPattern) || [];
|
2048
2057
|
return {
|
2049
2058
|
eventTarget: parseEventTarget(matches[4]),
|
2050
2059
|
eventName: matches[2],
|
2060
|
+
eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},
|
2051
2061
|
identifier: matches[5],
|
2052
2062
|
methodName: matches[7]
|
2053
2063
|
};
|
@@ -2061,6 +2071,14 @@ function parseEventTarget(eventTargetName) {
|
|
2061
2071
|
}
|
2062
2072
|
}
|
2063
2073
|
|
2074
|
+
function parseEventOptions(eventOptions) {
|
2075
|
+
return eventOptions.split(":").reduce(function(options, token) {
|
2076
|
+
var _a;
|
2077
|
+
return Object.assign(options, (_a = {}, _a[token.replace(/^!/, "")] = !/^!/.test(token),
|
2078
|
+
_a));
|
2079
|
+
}, {});
|
2080
|
+
}
|
2081
|
+
|
2064
2082
|
function stringifyEventTarget(eventTarget) {
|
2065
2083
|
if (eventTarget == window) {
|
2066
2084
|
return "window";
|
@@ -2075,11 +2093,12 @@ var Action = function() {
|
|
2075
2093
|
this.index = index;
|
2076
2094
|
this.eventTarget = descriptor.eventTarget || element;
|
2077
2095
|
this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error("missing event name");
|
2096
|
+
this.eventOptions = descriptor.eventOptions || {};
|
2078
2097
|
this.identifier = descriptor.identifier || error("missing identifier");
|
2079
2098
|
this.methodName = descriptor.methodName || error("missing method name");
|
2080
2099
|
}
|
2081
2100
|
Action.forToken = function(token) {
|
2082
|
-
return new this(token.element, token.index,
|
2101
|
+
return new this(token.element, token.index, parseActionDescriptorString(token.content));
|
2083
2102
|
};
|
2084
2103
|
Action.prototype.toString = function() {
|
2085
2104
|
var eventNameSuffix = this.eventTargetName ? "@" + this.eventTargetName : "";
|
@@ -2089,7 +2108,7 @@ var Action = function() {
|
|
2089
2108
|
get: function() {
|
2090
2109
|
return stringifyEventTarget(this.eventTarget);
|
2091
2110
|
},
|
2092
|
-
enumerable:
|
2111
|
+
enumerable: false,
|
2093
2112
|
configurable: true
|
2094
2113
|
});
|
2095
2114
|
return Action;
|
@@ -2106,13 +2125,13 @@ var defaultEventNames = {
|
|
2106
2125
|
return "submit";
|
2107
2126
|
},
|
2108
2127
|
input: function(e) {
|
2109
|
-
return e.getAttribute("type") == "submit" ? "click" : "
|
2128
|
+
return e.getAttribute("type") == "submit" ? "click" : "input";
|
2110
2129
|
},
|
2111
2130
|
select: function(e) {
|
2112
2131
|
return "change";
|
2113
2132
|
},
|
2114
2133
|
textarea: function(e) {
|
2115
|
-
return "
|
2134
|
+
return "input";
|
2116
2135
|
}
|
2117
2136
|
};
|
2118
2137
|
|
@@ -2136,21 +2155,28 @@ var Binding = function() {
|
|
2136
2155
|
get: function() {
|
2137
2156
|
return this.action.index;
|
2138
2157
|
},
|
2139
|
-
enumerable:
|
2158
|
+
enumerable: false,
|
2140
2159
|
configurable: true
|
2141
2160
|
});
|
2142
2161
|
Object.defineProperty(Binding.prototype, "eventTarget", {
|
2143
2162
|
get: function() {
|
2144
2163
|
return this.action.eventTarget;
|
2145
2164
|
},
|
2146
|
-
enumerable:
|
2165
|
+
enumerable: false,
|
2166
|
+
configurable: true
|
2167
|
+
});
|
2168
|
+
Object.defineProperty(Binding.prototype, "eventOptions", {
|
2169
|
+
get: function() {
|
2170
|
+
return this.action.eventOptions;
|
2171
|
+
},
|
2172
|
+
enumerable: false,
|
2147
2173
|
configurable: true
|
2148
2174
|
});
|
2149
2175
|
Object.defineProperty(Binding.prototype, "identifier", {
|
2150
2176
|
get: function() {
|
2151
2177
|
return this.context.identifier;
|
2152
2178
|
},
|
2153
|
-
enumerable:
|
2179
|
+
enumerable: false,
|
2154
2180
|
configurable: true
|
2155
2181
|
});
|
2156
2182
|
Binding.prototype.handleEvent = function(event) {
|
@@ -2162,7 +2188,7 @@ var Binding = function() {
|
|
2162
2188
|
get: function() {
|
2163
2189
|
return this.action.eventName;
|
2164
2190
|
},
|
2165
|
-
enumerable:
|
2191
|
+
enumerable: false,
|
2166
2192
|
configurable: true
|
2167
2193
|
});
|
2168
2194
|
Object.defineProperty(Binding.prototype, "method", {
|
@@ -2173,7 +2199,7 @@ var Binding = function() {
|
|
2173
2199
|
}
|
2174
2200
|
throw new Error('Action "' + this.action + '" references undefined method "' + this.methodName + '"');
|
2175
2201
|
},
|
2176
|
-
enumerable:
|
2202
|
+
enumerable: false,
|
2177
2203
|
configurable: true
|
2178
2204
|
});
|
2179
2205
|
Binding.prototype.invokeWithEvent = function(event) {
|
@@ -2198,35 +2224,35 @@ var Binding = function() {
|
|
2198
2224
|
} else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {
|
2199
2225
|
return this.scope.containsElement(eventTarget);
|
2200
2226
|
} else {
|
2201
|
-
return
|
2227
|
+
return this.scope.containsElement(this.action.element);
|
2202
2228
|
}
|
2203
2229
|
};
|
2204
2230
|
Object.defineProperty(Binding.prototype, "controller", {
|
2205
2231
|
get: function() {
|
2206
2232
|
return this.context.controller;
|
2207
2233
|
},
|
2208
|
-
enumerable:
|
2234
|
+
enumerable: false,
|
2209
2235
|
configurable: true
|
2210
2236
|
});
|
2211
2237
|
Object.defineProperty(Binding.prototype, "methodName", {
|
2212
2238
|
get: function() {
|
2213
2239
|
return this.action.methodName;
|
2214
2240
|
},
|
2215
|
-
enumerable:
|
2241
|
+
enumerable: false,
|
2216
2242
|
configurable: true
|
2217
2243
|
});
|
2218
2244
|
Object.defineProperty(Binding.prototype, "element", {
|
2219
2245
|
get: function() {
|
2220
2246
|
return this.scope.element;
|
2221
2247
|
},
|
2222
|
-
enumerable:
|
2248
|
+
enumerable: false,
|
2223
2249
|
configurable: true
|
2224
2250
|
});
|
2225
2251
|
Object.defineProperty(Binding.prototype, "scope", {
|
2226
2252
|
get: function() {
|
2227
2253
|
return this.context.scope;
|
2228
2254
|
},
|
2229
|
-
enumerable:
|
2255
|
+
enumerable: false,
|
2230
2256
|
configurable: true
|
2231
2257
|
});
|
2232
2258
|
return Binding;
|
@@ -2380,14 +2406,14 @@ var AttributeObserver = function() {
|
|
2380
2406
|
get: function() {
|
2381
2407
|
return this.elementObserver.element;
|
2382
2408
|
},
|
2383
|
-
enumerable:
|
2409
|
+
enumerable: false,
|
2384
2410
|
configurable: true
|
2385
2411
|
});
|
2386
2412
|
Object.defineProperty(AttributeObserver.prototype, "selector", {
|
2387
2413
|
get: function() {
|
2388
2414
|
return "[" + this.attributeName + "]";
|
2389
2415
|
},
|
2390
|
-
enumerable:
|
2416
|
+
enumerable: false,
|
2391
2417
|
configurable: true
|
2392
2418
|
});
|
2393
2419
|
AttributeObserver.prototype.start = function() {
|
@@ -2403,7 +2429,7 @@ var AttributeObserver = function() {
|
|
2403
2429
|
get: function() {
|
2404
2430
|
return this.elementObserver.started;
|
2405
2431
|
},
|
2406
|
-
enumerable:
|
2432
|
+
enumerable: false,
|
2407
2433
|
configurable: true
|
2408
2434
|
});
|
2409
2435
|
AttributeObserver.prototype.matchElement = function(element) {
|
@@ -2432,6 +2458,114 @@ var AttributeObserver = function() {
|
|
2432
2458
|
return AttributeObserver;
|
2433
2459
|
}();
|
2434
2460
|
|
2461
|
+
var StringMapObserver = function() {
|
2462
|
+
function StringMapObserver(element, delegate) {
|
2463
|
+
var _this = this;
|
2464
|
+
this.element = element;
|
2465
|
+
this.delegate = delegate;
|
2466
|
+
this.started = false;
|
2467
|
+
this.stringMap = new Map();
|
2468
|
+
this.mutationObserver = new MutationObserver(function(mutations) {
|
2469
|
+
return _this.processMutations(mutations);
|
2470
|
+
});
|
2471
|
+
}
|
2472
|
+
StringMapObserver.prototype.start = function() {
|
2473
|
+
if (!this.started) {
|
2474
|
+
this.started = true;
|
2475
|
+
this.mutationObserver.observe(this.element, {
|
2476
|
+
attributes: true
|
2477
|
+
});
|
2478
|
+
this.refresh();
|
2479
|
+
}
|
2480
|
+
};
|
2481
|
+
StringMapObserver.prototype.stop = function() {
|
2482
|
+
if (this.started) {
|
2483
|
+
this.mutationObserver.takeRecords();
|
2484
|
+
this.mutationObserver.disconnect();
|
2485
|
+
this.started = false;
|
2486
|
+
}
|
2487
|
+
};
|
2488
|
+
StringMapObserver.prototype.refresh = function() {
|
2489
|
+
if (this.started) {
|
2490
|
+
for (var _i = 0, _a = this.knownAttributeNames; _i < _a.length; _i++) {
|
2491
|
+
var attributeName = _a[_i];
|
2492
|
+
this.refreshAttribute(attributeName);
|
2493
|
+
}
|
2494
|
+
}
|
2495
|
+
};
|
2496
|
+
StringMapObserver.prototype.processMutations = function(mutations) {
|
2497
|
+
if (this.started) {
|
2498
|
+
for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {
|
2499
|
+
var mutation = mutations_1[_i];
|
2500
|
+
this.processMutation(mutation);
|
2501
|
+
}
|
2502
|
+
}
|
2503
|
+
};
|
2504
|
+
StringMapObserver.prototype.processMutation = function(mutation) {
|
2505
|
+
var attributeName = mutation.attributeName;
|
2506
|
+
if (attributeName) {
|
2507
|
+
this.refreshAttribute(attributeName);
|
2508
|
+
}
|
2509
|
+
};
|
2510
|
+
StringMapObserver.prototype.refreshAttribute = function(attributeName) {
|
2511
|
+
var key = this.delegate.getStringMapKeyForAttribute(attributeName);
|
2512
|
+
if (key != null) {
|
2513
|
+
if (!this.stringMap.has(attributeName)) {
|
2514
|
+
this.stringMapKeyAdded(key, attributeName);
|
2515
|
+
}
|
2516
|
+
var value = this.element.getAttribute(attributeName);
|
2517
|
+
if (this.stringMap.get(attributeName) != value) {
|
2518
|
+
this.stringMapValueChanged(value, key);
|
2519
|
+
}
|
2520
|
+
if (value == null) {
|
2521
|
+
this.stringMap.delete(attributeName);
|
2522
|
+
this.stringMapKeyRemoved(key, attributeName);
|
2523
|
+
} else {
|
2524
|
+
this.stringMap.set(attributeName, value);
|
2525
|
+
}
|
2526
|
+
}
|
2527
|
+
};
|
2528
|
+
StringMapObserver.prototype.stringMapKeyAdded = function(key, attributeName) {
|
2529
|
+
if (this.delegate.stringMapKeyAdded) {
|
2530
|
+
this.delegate.stringMapKeyAdded(key, attributeName);
|
2531
|
+
}
|
2532
|
+
};
|
2533
|
+
StringMapObserver.prototype.stringMapValueChanged = function(value, key) {
|
2534
|
+
if (this.delegate.stringMapValueChanged) {
|
2535
|
+
this.delegate.stringMapValueChanged(value, key);
|
2536
|
+
}
|
2537
|
+
};
|
2538
|
+
StringMapObserver.prototype.stringMapKeyRemoved = function(key, attributeName) {
|
2539
|
+
if (this.delegate.stringMapKeyRemoved) {
|
2540
|
+
this.delegate.stringMapKeyRemoved(key, attributeName);
|
2541
|
+
}
|
2542
|
+
};
|
2543
|
+
Object.defineProperty(StringMapObserver.prototype, "knownAttributeNames", {
|
2544
|
+
get: function() {
|
2545
|
+
return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));
|
2546
|
+
},
|
2547
|
+
enumerable: false,
|
2548
|
+
configurable: true
|
2549
|
+
});
|
2550
|
+
Object.defineProperty(StringMapObserver.prototype, "currentAttributeNames", {
|
2551
|
+
get: function() {
|
2552
|
+
return Array.from(this.element.attributes).map(function(attribute) {
|
2553
|
+
return attribute.name;
|
2554
|
+
});
|
2555
|
+
},
|
2556
|
+
enumerable: false,
|
2557
|
+
configurable: true
|
2558
|
+
});
|
2559
|
+
Object.defineProperty(StringMapObserver.prototype, "recordedAttributeNames", {
|
2560
|
+
get: function() {
|
2561
|
+
return Array.from(this.stringMap.keys());
|
2562
|
+
},
|
2563
|
+
enumerable: false,
|
2564
|
+
configurable: true
|
2565
|
+
});
|
2566
|
+
return StringMapObserver;
|
2567
|
+
}();
|
2568
|
+
|
2435
2569
|
function add(map, key, value) {
|
2436
2570
|
fetch(map, key).add(value);
|
2437
2571
|
}
|
@@ -2468,7 +2602,7 @@ var Multimap = function() {
|
|
2468
2602
|
return values.concat(Array.from(set));
|
2469
2603
|
}, []);
|
2470
2604
|
},
|
2471
|
-
enumerable:
|
2605
|
+
enumerable: false,
|
2472
2606
|
configurable: true
|
2473
2607
|
});
|
2474
2608
|
Object.defineProperty(Multimap.prototype, "size", {
|
@@ -2478,7 +2612,7 @@ var Multimap = function() {
|
|
2478
2612
|
return size + set.size;
|
2479
2613
|
}, 0);
|
2480
2614
|
},
|
2481
|
-
enumerable:
|
2615
|
+
enumerable: false,
|
2482
2616
|
configurable: true
|
2483
2617
|
});
|
2484
2618
|
Multimap.prototype.add = function(key, value) {
|
@@ -2517,12 +2651,15 @@ var Multimap = function() {
|
|
2517
2651
|
}();
|
2518
2652
|
|
2519
2653
|
var __extends = window && window.__extends || function() {
|
2520
|
-
var extendStatics =
|
2521
|
-
|
2522
|
-
|
2523
|
-
d
|
2524
|
-
|
2525
|
-
|
2654
|
+
var extendStatics = function(d, b) {
|
2655
|
+
extendStatics = Object.setPrototypeOf || {
|
2656
|
+
__proto__: []
|
2657
|
+
} instanceof Array && function(d, b) {
|
2658
|
+
d.__proto__ = b;
|
2659
|
+
} || function(d, b) {
|
2660
|
+
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
2661
|
+
};
|
2662
|
+
return extendStatics(d, b);
|
2526
2663
|
};
|
2527
2664
|
return function(d, b) {
|
2528
2665
|
extendStatics(d, b);
|
@@ -2544,7 +2681,7 @@ var IndexedMultimap = function(_super) {
|
|
2544
2681
|
get: function() {
|
2545
2682
|
return Array.from(this.keysByValue.keys());
|
2546
2683
|
},
|
2547
|
-
enumerable:
|
2684
|
+
enumerable: false,
|
2548
2685
|
configurable: true
|
2549
2686
|
});
|
2550
2687
|
IndexedMultimap.prototype.add = function(key, value) {
|
@@ -2575,7 +2712,7 @@ var TokenListObserver = function() {
|
|
2575
2712
|
get: function() {
|
2576
2713
|
return this.attributeObserver.started;
|
2577
2714
|
},
|
2578
|
-
enumerable:
|
2715
|
+
enumerable: false,
|
2579
2716
|
configurable: true
|
2580
2717
|
});
|
2581
2718
|
TokenListObserver.prototype.start = function() {
|
@@ -2591,14 +2728,14 @@ var TokenListObserver = function() {
|
|
2591
2728
|
get: function() {
|
2592
2729
|
return this.attributeObserver.element;
|
2593
2730
|
},
|
2594
|
-
enumerable:
|
2731
|
+
enumerable: false,
|
2595
2732
|
configurable: true
|
2596
2733
|
});
|
2597
2734
|
Object.defineProperty(TokenListObserver.prototype, "attributeName", {
|
2598
2735
|
get: function() {
|
2599
2736
|
return this.attributeObserver.attributeName;
|
2600
2737
|
},
|
2601
|
-
enumerable:
|
2738
|
+
enumerable: false,
|
2602
2739
|
configurable: true
|
2603
2740
|
});
|
2604
2741
|
TokenListObserver.prototype.elementMatchedAttribute = function(element) {
|
@@ -2690,7 +2827,7 @@ var ValueListObserver = function() {
|
|
2690
2827
|
get: function() {
|
2691
2828
|
return this.tokenListObserver.started;
|
2692
2829
|
},
|
2693
|
-
enumerable:
|
2830
|
+
enumerable: false,
|
2694
2831
|
configurable: true
|
2695
2832
|
});
|
2696
2833
|
ValueListObserver.prototype.start = function() {
|
@@ -2706,14 +2843,14 @@ var ValueListObserver = function() {
|
|
2706
2843
|
get: function() {
|
2707
2844
|
return this.tokenListObserver.element;
|
2708
2845
|
},
|
2709
|
-
enumerable:
|
2846
|
+
enumerable: false,
|
2710
2847
|
configurable: true
|
2711
2848
|
});
|
2712
2849
|
Object.defineProperty(ValueListObserver.prototype, "attributeName", {
|
2713
2850
|
get: function() {
|
2714
2851
|
return this.tokenListObserver.attributeName;
|
2715
2852
|
},
|
2716
|
-
enumerable:
|
2853
|
+
enumerable: false,
|
2717
2854
|
configurable: true
|
2718
2855
|
});
|
2719
2856
|
ValueListObserver.prototype.tokenMatched = function(token) {
|
@@ -2786,35 +2923,35 @@ var BindingObserver = function() {
|
|
2786
2923
|
get: function() {
|
2787
2924
|
return this.context.element;
|
2788
2925
|
},
|
2789
|
-
enumerable:
|
2926
|
+
enumerable: false,
|
2790
2927
|
configurable: true
|
2791
2928
|
});
|
2792
2929
|
Object.defineProperty(BindingObserver.prototype, "identifier", {
|
2793
2930
|
get: function() {
|
2794
2931
|
return this.context.identifier;
|
2795
2932
|
},
|
2796
|
-
enumerable:
|
2933
|
+
enumerable: false,
|
2797
2934
|
configurable: true
|
2798
2935
|
});
|
2799
2936
|
Object.defineProperty(BindingObserver.prototype, "actionAttribute", {
|
2800
2937
|
get: function() {
|
2801
2938
|
return this.schema.actionAttribute;
|
2802
2939
|
},
|
2803
|
-
enumerable:
|
2940
|
+
enumerable: false,
|
2804
2941
|
configurable: true
|
2805
2942
|
});
|
2806
2943
|
Object.defineProperty(BindingObserver.prototype, "schema", {
|
2807
2944
|
get: function() {
|
2808
2945
|
return this.context.schema;
|
2809
2946
|
},
|
2810
|
-
enumerable:
|
2947
|
+
enumerable: false,
|
2811
2948
|
configurable: true
|
2812
2949
|
});
|
2813
2950
|
Object.defineProperty(BindingObserver.prototype, "bindings", {
|
2814
2951
|
get: function() {
|
2815
2952
|
return Array.from(this.bindingsByAction.values());
|
2816
2953
|
},
|
2817
|
-
enumerable:
|
2954
|
+
enumerable: false,
|
2818
2955
|
configurable: true
|
2819
2956
|
});
|
2820
2957
|
BindingObserver.prototype.connectAction = function(action) {
|
@@ -2851,12 +2988,78 @@ var BindingObserver = function() {
|
|
2851
2988
|
return BindingObserver;
|
2852
2989
|
}();
|
2853
2990
|
|
2991
|
+
var ValueObserver = function() {
|
2992
|
+
function ValueObserver(context, receiver) {
|
2993
|
+
this.context = context;
|
2994
|
+
this.receiver = receiver;
|
2995
|
+
this.stringMapObserver = new StringMapObserver(this.element, this);
|
2996
|
+
this.valueDescriptorMap = this.controller.valueDescriptorMap;
|
2997
|
+
this.invokeChangedCallbacksForDefaultValues();
|
2998
|
+
}
|
2999
|
+
ValueObserver.prototype.start = function() {
|
3000
|
+
this.stringMapObserver.start();
|
3001
|
+
};
|
3002
|
+
ValueObserver.prototype.stop = function() {
|
3003
|
+
this.stringMapObserver.stop();
|
3004
|
+
};
|
3005
|
+
Object.defineProperty(ValueObserver.prototype, "element", {
|
3006
|
+
get: function() {
|
3007
|
+
return this.context.element;
|
3008
|
+
},
|
3009
|
+
enumerable: false,
|
3010
|
+
configurable: true
|
3011
|
+
});
|
3012
|
+
Object.defineProperty(ValueObserver.prototype, "controller", {
|
3013
|
+
get: function() {
|
3014
|
+
return this.context.controller;
|
3015
|
+
},
|
3016
|
+
enumerable: false,
|
3017
|
+
configurable: true
|
3018
|
+
});
|
3019
|
+
ValueObserver.prototype.getStringMapKeyForAttribute = function(attributeName) {
|
3020
|
+
if (attributeName in this.valueDescriptorMap) {
|
3021
|
+
return this.valueDescriptorMap[attributeName].name;
|
3022
|
+
}
|
3023
|
+
};
|
3024
|
+
ValueObserver.prototype.stringMapValueChanged = function(attributeValue, name) {
|
3025
|
+
this.invokeChangedCallbackForValue(name);
|
3026
|
+
};
|
3027
|
+
ValueObserver.prototype.invokeChangedCallbacksForDefaultValues = function() {
|
3028
|
+
for (var _i = 0, _a = this.valueDescriptors; _i < _a.length; _i++) {
|
3029
|
+
var _b = _a[_i], key = _b.key, name_1 = _b.name, defaultValue = _b.defaultValue;
|
3030
|
+
if (defaultValue != undefined && !this.controller.data.has(key)) {
|
3031
|
+
this.invokeChangedCallbackForValue(name_1);
|
3032
|
+
}
|
3033
|
+
}
|
3034
|
+
};
|
3035
|
+
ValueObserver.prototype.invokeChangedCallbackForValue = function(name) {
|
3036
|
+
var methodName = name + "Changed";
|
3037
|
+
var method = this.receiver[methodName];
|
3038
|
+
if (typeof method == "function") {
|
3039
|
+
var value = this.receiver[name];
|
3040
|
+
method.call(this.receiver, value);
|
3041
|
+
}
|
3042
|
+
};
|
3043
|
+
Object.defineProperty(ValueObserver.prototype, "valueDescriptors", {
|
3044
|
+
get: function() {
|
3045
|
+
var valueDescriptorMap = this.valueDescriptorMap;
|
3046
|
+
return Object.keys(valueDescriptorMap).map(function(key) {
|
3047
|
+
return valueDescriptorMap[key];
|
3048
|
+
});
|
3049
|
+
},
|
3050
|
+
enumerable: false,
|
3051
|
+
configurable: true
|
3052
|
+
});
|
3053
|
+
return ValueObserver;
|
3054
|
+
}();
|
3055
|
+
|
2854
3056
|
var Context = function() {
|
2855
3057
|
function Context(module, scope) {
|
2856
3058
|
this.module = module;
|
2857
3059
|
this.scope = scope;
|
2858
3060
|
this.controller = new module.controllerConstructor(this);
|
2859
3061
|
this.bindingObserver = new BindingObserver(this, this.dispatcher);
|
3062
|
+
this.valueObserver = new ValueObserver(this, this.controller);
|
2860
3063
|
try {
|
2861
3064
|
this.controller.initialize();
|
2862
3065
|
} catch (error) {
|
@@ -2865,6 +3068,7 @@ var Context = function() {
|
|
2865
3068
|
}
|
2866
3069
|
Context.prototype.connect = function() {
|
2867
3070
|
this.bindingObserver.start();
|
3071
|
+
this.valueObserver.start();
|
2868
3072
|
try {
|
2869
3073
|
this.controller.connect();
|
2870
3074
|
} catch (error) {
|
@@ -2877,48 +3081,49 @@ var Context = function() {
|
|
2877
3081
|
} catch (error) {
|
2878
3082
|
this.handleError(error, "disconnecting controller");
|
2879
3083
|
}
|
3084
|
+
this.valueObserver.stop();
|
2880
3085
|
this.bindingObserver.stop();
|
2881
3086
|
};
|
2882
3087
|
Object.defineProperty(Context.prototype, "application", {
|
2883
3088
|
get: function() {
|
2884
3089
|
return this.module.application;
|
2885
3090
|
},
|
2886
|
-
enumerable:
|
3091
|
+
enumerable: false,
|
2887
3092
|
configurable: true
|
2888
3093
|
});
|
2889
3094
|
Object.defineProperty(Context.prototype, "identifier", {
|
2890
3095
|
get: function() {
|
2891
3096
|
return this.module.identifier;
|
2892
3097
|
},
|
2893
|
-
enumerable:
|
3098
|
+
enumerable: false,
|
2894
3099
|
configurable: true
|
2895
3100
|
});
|
2896
3101
|
Object.defineProperty(Context.prototype, "schema", {
|
2897
3102
|
get: function() {
|
2898
3103
|
return this.application.schema;
|
2899
3104
|
},
|
2900
|
-
enumerable:
|
3105
|
+
enumerable: false,
|
2901
3106
|
configurable: true
|
2902
3107
|
});
|
2903
3108
|
Object.defineProperty(Context.prototype, "dispatcher", {
|
2904
3109
|
get: function() {
|
2905
3110
|
return this.application.dispatcher;
|
2906
3111
|
},
|
2907
|
-
enumerable:
|
3112
|
+
enumerable: false,
|
2908
3113
|
configurable: true
|
2909
3114
|
});
|
2910
3115
|
Object.defineProperty(Context.prototype, "element", {
|
2911
3116
|
get: function() {
|
2912
3117
|
return this.scope.element;
|
2913
3118
|
},
|
2914
|
-
enumerable:
|
3119
|
+
enumerable: false,
|
2915
3120
|
configurable: true
|
2916
3121
|
});
|
2917
3122
|
Object.defineProperty(Context.prototype, "parentElement", {
|
2918
3123
|
get: function() {
|
2919
3124
|
return this.element.parentElement;
|
2920
3125
|
},
|
2921
|
-
enumerable:
|
3126
|
+
enumerable: false,
|
2922
3127
|
configurable: true
|
2923
3128
|
});
|
2924
3129
|
Context.prototype.handleError = function(error, message, detail) {
|
@@ -2936,13 +3141,55 @@ var Context = function() {
|
|
2936
3141
|
return Context;
|
2937
3142
|
}();
|
2938
3143
|
|
3144
|
+
function readInheritableStaticArrayValues(constructor, propertyName) {
|
3145
|
+
var ancestors = getAncestorsForConstructor(constructor);
|
3146
|
+
return Array.from(ancestors.reduce(function(values, constructor) {
|
3147
|
+
getOwnStaticArrayValues(constructor, propertyName).forEach(function(name) {
|
3148
|
+
return values.add(name);
|
3149
|
+
});
|
3150
|
+
return values;
|
3151
|
+
}, new Set()));
|
3152
|
+
}
|
3153
|
+
|
3154
|
+
function readInheritableStaticObjectPairs(constructor, propertyName) {
|
3155
|
+
var ancestors = getAncestorsForConstructor(constructor);
|
3156
|
+
return ancestors.reduce(function(pairs, constructor) {
|
3157
|
+
pairs.push.apply(pairs, getOwnStaticObjectPairs(constructor, propertyName));
|
3158
|
+
return pairs;
|
3159
|
+
}, []);
|
3160
|
+
}
|
3161
|
+
|
3162
|
+
function getAncestorsForConstructor(constructor) {
|
3163
|
+
var ancestors = [];
|
3164
|
+
while (constructor) {
|
3165
|
+
ancestors.push(constructor);
|
3166
|
+
constructor = Object.getPrototypeOf(constructor);
|
3167
|
+
}
|
3168
|
+
return ancestors.reverse();
|
3169
|
+
}
|
3170
|
+
|
3171
|
+
function getOwnStaticArrayValues(constructor, propertyName) {
|
3172
|
+
var definition = constructor[propertyName];
|
3173
|
+
return Array.isArray(definition) ? definition : [];
|
3174
|
+
}
|
3175
|
+
|
3176
|
+
function getOwnStaticObjectPairs(constructor, propertyName) {
|
3177
|
+
var definition = constructor[propertyName];
|
3178
|
+
return definition ? Object.keys(definition).map(function(key) {
|
3179
|
+
return [ key, definition[key] ];
|
3180
|
+
}) : [];
|
3181
|
+
}
|
3182
|
+
|
2939
3183
|
var __extends$1 = window && window.__extends || function() {
|
2940
|
-
var extendStatics =
|
2941
|
-
|
2942
|
-
|
2943
|
-
d
|
2944
|
-
|
2945
|
-
|
3184
|
+
var extendStatics = function(d, b) {
|
3185
|
+
extendStatics = Object.setPrototypeOf || {
|
3186
|
+
__proto__: []
|
3187
|
+
} instanceof Array && function(d, b) {
|
3188
|
+
d.__proto__ = b;
|
3189
|
+
} || function(d, b) {
|
3190
|
+
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
3191
|
+
};
|
3192
|
+
return extendStatics(d, b);
|
2946
3193
|
};
|
2947
3194
|
return function(d, b) {
|
2948
3195
|
extendStatics(d, b);
|
@@ -2953,32 +3200,83 @@ var __extends$1 = window && window.__extends || function() {
|
|
2953
3200
|
};
|
2954
3201
|
}();
|
2955
3202
|
|
2956
|
-
function
|
2957
|
-
|
2958
|
-
|
2959
|
-
|
2960
|
-
|
3203
|
+
var __spreadArrays = window && window.__spreadArrays || function() {
|
3204
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
3205
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++,
|
3206
|
+
k++) r[k] = a[j];
|
3207
|
+
return r;
|
3208
|
+
};
|
3209
|
+
|
3210
|
+
function bless(constructor) {
|
3211
|
+
return shadow(constructor, getBlessedProperties(constructor));
|
3212
|
+
}
|
3213
|
+
|
3214
|
+
function shadow(constructor, properties) {
|
3215
|
+
var shadowConstructor = extend(constructor);
|
3216
|
+
var shadowProperties = getShadowProperties(constructor.prototype, properties);
|
3217
|
+
Object.defineProperties(shadowConstructor.prototype, shadowProperties);
|
3218
|
+
return shadowConstructor;
|
3219
|
+
}
|
3220
|
+
|
3221
|
+
function getBlessedProperties(constructor) {
|
3222
|
+
var blessings = readInheritableStaticArrayValues(constructor, "blessings");
|
3223
|
+
return blessings.reduce(function(blessedProperties, blessing) {
|
3224
|
+
var properties = blessing(constructor);
|
3225
|
+
for (var key in properties) {
|
3226
|
+
var descriptor = blessedProperties[key] || {};
|
3227
|
+
blessedProperties[key] = Object.assign(descriptor, properties[key]);
|
3228
|
+
}
|
3229
|
+
return blessedProperties;
|
3230
|
+
}, {});
|
3231
|
+
}
|
3232
|
+
|
3233
|
+
function getShadowProperties(prototype, properties) {
|
3234
|
+
return getOwnKeys(properties).reduce(function(shadowProperties, key) {
|
3235
|
+
var _a;
|
3236
|
+
var descriptor = getShadowedDescriptor(prototype, properties, key);
|
3237
|
+
if (descriptor) {
|
3238
|
+
Object.assign(shadowProperties, (_a = {}, _a[key] = descriptor, _a));
|
3239
|
+
}
|
3240
|
+
return shadowProperties;
|
3241
|
+
}, {});
|
2961
3242
|
}
|
2962
3243
|
|
2963
|
-
function
|
2964
|
-
var
|
2965
|
-
|
2966
|
-
|
3244
|
+
function getShadowedDescriptor(prototype, properties, key) {
|
3245
|
+
var shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);
|
3246
|
+
var shadowedByValue = shadowingDescriptor && "value" in shadowingDescriptor;
|
3247
|
+
if (!shadowedByValue) {
|
3248
|
+
var descriptor = Object.getOwnPropertyDescriptor(properties, key).value;
|
3249
|
+
if (shadowingDescriptor) {
|
3250
|
+
descriptor.get = shadowingDescriptor.get || descriptor.get;
|
3251
|
+
descriptor.set = shadowingDescriptor.set || descriptor.set;
|
3252
|
+
}
|
3253
|
+
return descriptor;
|
3254
|
+
}
|
2967
3255
|
}
|
2968
3256
|
|
3257
|
+
var getOwnKeys = function() {
|
3258
|
+
if (typeof Object.getOwnPropertySymbols == "function") {
|
3259
|
+
return function(object) {
|
3260
|
+
return __spreadArrays(Object.getOwnPropertyNames(object), Object.getOwnPropertySymbols(object));
|
3261
|
+
};
|
3262
|
+
} else {
|
3263
|
+
return Object.getOwnPropertyNames;
|
3264
|
+
}
|
3265
|
+
}();
|
3266
|
+
|
2969
3267
|
var extend = function() {
|
2970
3268
|
function extendWithReflect(constructor) {
|
2971
|
-
function
|
2972
|
-
var _newTarget = this && this instanceof
|
3269
|
+
function extended() {
|
3270
|
+
var _newTarget = this && this instanceof extended ? this.constructor : void 0;
|
2973
3271
|
return Reflect.construct(constructor, arguments, _newTarget);
|
2974
3272
|
}
|
2975
|
-
|
3273
|
+
extended.prototype = Object.create(constructor.prototype, {
|
2976
3274
|
constructor: {
|
2977
|
-
value:
|
3275
|
+
value: extended
|
2978
3276
|
}
|
2979
3277
|
});
|
2980
|
-
Reflect.setPrototypeOf(
|
2981
|
-
return
|
3278
|
+
Reflect.setPrototypeOf(extended, constructor);
|
3279
|
+
return extended;
|
2982
3280
|
}
|
2983
3281
|
function testReflectExtension() {
|
2984
3282
|
var a = function() {
|
@@ -2994,16 +3292,23 @@ var extend = function() {
|
|
2994
3292
|
} catch (error) {
|
2995
3293
|
return function(constructor) {
|
2996
3294
|
return function(_super) {
|
2997
|
-
__extends$1(
|
2998
|
-
function
|
3295
|
+
__extends$1(extended, _super);
|
3296
|
+
function extended() {
|
2999
3297
|
return _super !== null && _super.apply(this, arguments) || this;
|
3000
3298
|
}
|
3001
|
-
return
|
3299
|
+
return extended;
|
3002
3300
|
}(constructor);
|
3003
3301
|
};
|
3004
3302
|
}
|
3005
3303
|
}();
|
3006
3304
|
|
3305
|
+
function blessDefinition(definition) {
|
3306
|
+
return {
|
3307
|
+
identifier: definition.identifier,
|
3308
|
+
controllerConstructor: bless(definition.controllerConstructor)
|
3309
|
+
};
|
3310
|
+
}
|
3311
|
+
|
3007
3312
|
var Module = function() {
|
3008
3313
|
function Module(application, definition) {
|
3009
3314
|
this.application = application;
|
@@ -3015,21 +3320,21 @@ var Module = function() {
|
|
3015
3320
|
get: function() {
|
3016
3321
|
return this.definition.identifier;
|
3017
3322
|
},
|
3018
|
-
enumerable:
|
3323
|
+
enumerable: false,
|
3019
3324
|
configurable: true
|
3020
3325
|
});
|
3021
3326
|
Object.defineProperty(Module.prototype, "controllerConstructor", {
|
3022
3327
|
get: function() {
|
3023
3328
|
return this.definition.controllerConstructor;
|
3024
3329
|
},
|
3025
|
-
enumerable:
|
3330
|
+
enumerable: false,
|
3026
3331
|
configurable: true
|
3027
3332
|
});
|
3028
3333
|
Object.defineProperty(Module.prototype, "contexts", {
|
3029
3334
|
get: function() {
|
3030
3335
|
return Array.from(this.connectedContexts);
|
3031
3336
|
},
|
3032
|
-
enumerable:
|
3337
|
+
enumerable: false,
|
3033
3338
|
configurable: true
|
3034
3339
|
});
|
3035
3340
|
Module.prototype.connectContextForScope = function(scope) {
|
@@ -3055,6 +3360,48 @@ var Module = function() {
|
|
3055
3360
|
return Module;
|
3056
3361
|
}();
|
3057
3362
|
|
3363
|
+
var ClassMap = function() {
|
3364
|
+
function ClassMap(scope) {
|
3365
|
+
this.scope = scope;
|
3366
|
+
}
|
3367
|
+
ClassMap.prototype.has = function(name) {
|
3368
|
+
return this.data.has(this.getDataKey(name));
|
3369
|
+
};
|
3370
|
+
ClassMap.prototype.get = function(name) {
|
3371
|
+
return this.data.get(this.getDataKey(name));
|
3372
|
+
};
|
3373
|
+
ClassMap.prototype.getAttributeName = function(name) {
|
3374
|
+
return this.data.getAttributeNameForKey(this.getDataKey(name));
|
3375
|
+
};
|
3376
|
+
ClassMap.prototype.getDataKey = function(name) {
|
3377
|
+
return name + "-class";
|
3378
|
+
};
|
3379
|
+
Object.defineProperty(ClassMap.prototype, "data", {
|
3380
|
+
get: function() {
|
3381
|
+
return this.scope.data;
|
3382
|
+
},
|
3383
|
+
enumerable: false,
|
3384
|
+
configurable: true
|
3385
|
+
});
|
3386
|
+
return ClassMap;
|
3387
|
+
}();
|
3388
|
+
|
3389
|
+
function camelize(value) {
|
3390
|
+
return value.replace(/(?:[_-])([a-z0-9])/g, function(_, char) {
|
3391
|
+
return char.toUpperCase();
|
3392
|
+
});
|
3393
|
+
}
|
3394
|
+
|
3395
|
+
function capitalize(value) {
|
3396
|
+
return value.charAt(0).toUpperCase() + value.slice(1);
|
3397
|
+
}
|
3398
|
+
|
3399
|
+
function dasherize(value) {
|
3400
|
+
return value.replace(/([A-Z])/g, function(_, char) {
|
3401
|
+
return "-" + char.toLowerCase();
|
3402
|
+
});
|
3403
|
+
}
|
3404
|
+
|
3058
3405
|
var DataMap = function() {
|
3059
3406
|
function DataMap(scope) {
|
3060
3407
|
this.scope = scope;
|
@@ -3063,54 +3410,74 @@ var DataMap = function() {
|
|
3063
3410
|
get: function() {
|
3064
3411
|
return this.scope.element;
|
3065
3412
|
},
|
3066
|
-
enumerable:
|
3413
|
+
enumerable: false,
|
3067
3414
|
configurable: true
|
3068
3415
|
});
|
3069
3416
|
Object.defineProperty(DataMap.prototype, "identifier", {
|
3070
3417
|
get: function() {
|
3071
3418
|
return this.scope.identifier;
|
3072
3419
|
},
|
3073
|
-
enumerable:
|
3420
|
+
enumerable: false,
|
3074
3421
|
configurable: true
|
3075
3422
|
});
|
3076
3423
|
DataMap.prototype.get = function(key) {
|
3077
|
-
|
3078
|
-
return this.element.getAttribute(
|
3424
|
+
var name = this.getAttributeNameForKey(key);
|
3425
|
+
return this.element.getAttribute(name);
|
3079
3426
|
};
|
3080
3427
|
DataMap.prototype.set = function(key, value) {
|
3081
|
-
|
3082
|
-
this.element.setAttribute(
|
3428
|
+
var name = this.getAttributeNameForKey(key);
|
3429
|
+
this.element.setAttribute(name, value);
|
3083
3430
|
return this.get(key);
|
3084
3431
|
};
|
3085
3432
|
DataMap.prototype.has = function(key) {
|
3086
|
-
|
3087
|
-
return this.element.hasAttribute(
|
3433
|
+
var name = this.getAttributeNameForKey(key);
|
3434
|
+
return this.element.hasAttribute(name);
|
3088
3435
|
};
|
3089
3436
|
DataMap.prototype.delete = function(key) {
|
3090
3437
|
if (this.has(key)) {
|
3091
|
-
|
3092
|
-
this.element.removeAttribute(
|
3438
|
+
var name_1 = this.getAttributeNameForKey(key);
|
3439
|
+
this.element.removeAttribute(name_1);
|
3093
3440
|
return true;
|
3094
3441
|
} else {
|
3095
3442
|
return false;
|
3096
3443
|
}
|
3097
3444
|
};
|
3098
|
-
DataMap.prototype.
|
3445
|
+
DataMap.prototype.getAttributeNameForKey = function(key) {
|
3099
3446
|
return "data-" + this.identifier + "-" + dasherize(key);
|
3100
3447
|
};
|
3101
3448
|
return DataMap;
|
3102
3449
|
}();
|
3103
3450
|
|
3104
|
-
function
|
3105
|
-
|
3106
|
-
|
3107
|
-
|
3108
|
-
}
|
3451
|
+
var Guide = function() {
|
3452
|
+
function Guide(logger) {
|
3453
|
+
this.warnedKeysByObject = new WeakMap();
|
3454
|
+
this.logger = logger;
|
3455
|
+
}
|
3456
|
+
Guide.prototype.warn = function(object, key, message) {
|
3457
|
+
var warnedKeys = this.warnedKeysByObject.get(object);
|
3458
|
+
if (!warnedKeys) {
|
3459
|
+
warnedKeys = new Set();
|
3460
|
+
this.warnedKeysByObject.set(object, warnedKeys);
|
3461
|
+
}
|
3462
|
+
if (!warnedKeys.has(key)) {
|
3463
|
+
warnedKeys.add(key);
|
3464
|
+
this.logger.warn(message, object);
|
3465
|
+
}
|
3466
|
+
};
|
3467
|
+
return Guide;
|
3468
|
+
}();
|
3109
3469
|
|
3110
3470
|
function attributeValueContainsToken(attributeName, token) {
|
3111
3471
|
return "[" + attributeName + '~="' + token + '"]';
|
3112
3472
|
}
|
3113
3473
|
|
3474
|
+
var __spreadArrays$1 = window && window.__spreadArrays || function() {
|
3475
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
3476
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++,
|
3477
|
+
k++) r[k] = a[j];
|
3478
|
+
return r;
|
3479
|
+
};
|
3480
|
+
|
3114
3481
|
var TargetSet = function() {
|
3115
3482
|
function TargetSet(scope) {
|
3116
3483
|
this.scope = scope;
|
@@ -3119,85 +3486,126 @@ var TargetSet = function() {
|
|
3119
3486
|
get: function() {
|
3120
3487
|
return this.scope.element;
|
3121
3488
|
},
|
3122
|
-
enumerable:
|
3489
|
+
enumerable: false,
|
3123
3490
|
configurable: true
|
3124
3491
|
});
|
3125
3492
|
Object.defineProperty(TargetSet.prototype, "identifier", {
|
3126
3493
|
get: function() {
|
3127
3494
|
return this.scope.identifier;
|
3128
3495
|
},
|
3129
|
-
enumerable:
|
3496
|
+
enumerable: false,
|
3130
3497
|
configurable: true
|
3131
3498
|
});
|
3132
3499
|
Object.defineProperty(TargetSet.prototype, "schema", {
|
3133
3500
|
get: function() {
|
3134
3501
|
return this.scope.schema;
|
3135
3502
|
},
|
3136
|
-
enumerable:
|
3503
|
+
enumerable: false,
|
3137
3504
|
configurable: true
|
3138
3505
|
});
|
3139
3506
|
TargetSet.prototype.has = function(targetName) {
|
3140
3507
|
return this.find(targetName) != null;
|
3141
3508
|
};
|
3142
3509
|
TargetSet.prototype.find = function() {
|
3510
|
+
var _this = this;
|
3143
3511
|
var targetNames = [];
|
3144
3512
|
for (var _i = 0; _i < arguments.length; _i++) {
|
3145
3513
|
targetNames[_i] = arguments[_i];
|
3146
3514
|
}
|
3147
|
-
|
3148
|
-
|
3515
|
+
return targetNames.reduce(function(target, targetName) {
|
3516
|
+
return target || _this.findTarget(targetName) || _this.findLegacyTarget(targetName);
|
3517
|
+
}, undefined);
|
3149
3518
|
};
|
3150
3519
|
TargetSet.prototype.findAll = function() {
|
3520
|
+
var _this = this;
|
3151
3521
|
var targetNames = [];
|
3152
3522
|
for (var _i = 0; _i < arguments.length; _i++) {
|
3153
3523
|
targetNames[_i] = arguments[_i];
|
3154
3524
|
}
|
3155
|
-
|
3525
|
+
return targetNames.reduce(function(targets, targetName) {
|
3526
|
+
return __spreadArrays$1(targets, _this.findAllTargets(targetName), _this.findAllLegacyTargets(targetName));
|
3527
|
+
}, []);
|
3528
|
+
};
|
3529
|
+
TargetSet.prototype.findTarget = function(targetName) {
|
3530
|
+
var selector = this.getSelectorForTargetName(targetName);
|
3531
|
+
return this.scope.findElement(selector);
|
3532
|
+
};
|
3533
|
+
TargetSet.prototype.findAllTargets = function(targetName) {
|
3534
|
+
var selector = this.getSelectorForTargetName(targetName);
|
3156
3535
|
return this.scope.findAllElements(selector);
|
3157
3536
|
};
|
3158
|
-
TargetSet.prototype.
|
3537
|
+
TargetSet.prototype.getSelectorForTargetName = function(targetName) {
|
3538
|
+
var attributeName = "data-" + this.identifier + "-target";
|
3539
|
+
return attributeValueContainsToken(attributeName, targetName);
|
3540
|
+
};
|
3541
|
+
TargetSet.prototype.findLegacyTarget = function(targetName) {
|
3542
|
+
var selector = this.getLegacySelectorForTargetName(targetName);
|
3543
|
+
return this.deprecate(this.scope.findElement(selector), targetName);
|
3544
|
+
};
|
3545
|
+
TargetSet.prototype.findAllLegacyTargets = function(targetName) {
|
3159
3546
|
var _this = this;
|
3160
|
-
|
3161
|
-
|
3162
|
-
|
3547
|
+
var selector = this.getLegacySelectorForTargetName(targetName);
|
3548
|
+
return this.scope.findAllElements(selector).map(function(element) {
|
3549
|
+
return _this.deprecate(element, targetName);
|
3550
|
+
});
|
3163
3551
|
};
|
3164
|
-
TargetSet.prototype.
|
3552
|
+
TargetSet.prototype.getLegacySelectorForTargetName = function(targetName) {
|
3165
3553
|
var targetDescriptor = this.identifier + "." + targetName;
|
3166
3554
|
return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);
|
3167
3555
|
};
|
3556
|
+
TargetSet.prototype.deprecate = function(element, targetName) {
|
3557
|
+
if (element) {
|
3558
|
+
var identifier = this.identifier;
|
3559
|
+
var attributeName = this.schema.targetAttribute;
|
3560
|
+
this.guide.warn(element, "target:" + targetName, "Please replace " + attributeName + '="' + identifier + "." + targetName + '" with data-' + identifier + '-target="' + targetName + '". ' + ("The " + attributeName + " attribute is deprecated and will be removed in a future version of Stimulus."));
|
3561
|
+
}
|
3562
|
+
return element;
|
3563
|
+
};
|
3564
|
+
Object.defineProperty(TargetSet.prototype, "guide", {
|
3565
|
+
get: function() {
|
3566
|
+
return this.scope.guide;
|
3567
|
+
},
|
3568
|
+
enumerable: false,
|
3569
|
+
configurable: true
|
3570
|
+
});
|
3168
3571
|
return TargetSet;
|
3169
3572
|
}();
|
3170
3573
|
|
3574
|
+
var __spreadArrays$2 = window && window.__spreadArrays || function() {
|
3575
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
3576
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++,
|
3577
|
+
k++) r[k] = a[j];
|
3578
|
+
return r;
|
3579
|
+
};
|
3580
|
+
|
3171
3581
|
var Scope = function() {
|
3172
|
-
function Scope(schema, identifier,
|
3173
|
-
|
3174
|
-
this.identifier = identifier;
|
3175
|
-
this.element = element;
|
3582
|
+
function Scope(schema, element, identifier, logger) {
|
3583
|
+
var _this = this;
|
3176
3584
|
this.targets = new TargetSet(this);
|
3585
|
+
this.classes = new ClassMap(this);
|
3177
3586
|
this.data = new DataMap(this);
|
3587
|
+
this.containsElement = function(element) {
|
3588
|
+
return element.closest(_this.controllerSelector) === _this.element;
|
3589
|
+
};
|
3590
|
+
this.schema = schema;
|
3591
|
+
this.element = element;
|
3592
|
+
this.identifier = identifier;
|
3593
|
+
this.guide = new Guide(logger);
|
3178
3594
|
}
|
3179
3595
|
Scope.prototype.findElement = function(selector) {
|
3180
|
-
return this.
|
3596
|
+
return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);
|
3181
3597
|
};
|
3182
3598
|
Scope.prototype.findAllElements = function(selector) {
|
3183
|
-
|
3184
|
-
var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));
|
3185
|
-
return head.concat(tail);
|
3186
|
-
};
|
3187
|
-
Scope.prototype.filterElements = function(elements) {
|
3188
|
-
var _this = this;
|
3189
|
-
return elements.filter(function(element) {
|
3190
|
-
return _this.containsElement(element);
|
3191
|
-
});
|
3599
|
+
return __spreadArrays$2(this.element.matches(selector) ? [ this.element ] : [], this.queryElements(selector).filter(this.containsElement));
|
3192
3600
|
};
|
3193
|
-
Scope.prototype.
|
3194
|
-
return
|
3601
|
+
Scope.prototype.queryElements = function(selector) {
|
3602
|
+
return Array.from(this.element.querySelectorAll(selector));
|
3195
3603
|
};
|
3196
3604
|
Object.defineProperty(Scope.prototype, "controllerSelector", {
|
3197
3605
|
get: function() {
|
3198
3606
|
return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);
|
3199
3607
|
},
|
3200
|
-
enumerable:
|
3608
|
+
enumerable: false,
|
3201
3609
|
configurable: true
|
3202
3610
|
});
|
3203
3611
|
return Scope;
|
@@ -3222,7 +3630,7 @@ var ScopeObserver = function() {
|
|
3222
3630
|
get: function() {
|
3223
3631
|
return this.schema.controllerAttribute;
|
3224
3632
|
},
|
3225
|
-
enumerable:
|
3633
|
+
enumerable: false,
|
3226
3634
|
configurable: true
|
3227
3635
|
});
|
3228
3636
|
ScopeObserver.prototype.parseValueForToken = function(token) {
|
@@ -3230,7 +3638,7 @@ var ScopeObserver = function() {
|
|
3230
3638
|
var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);
|
3231
3639
|
var scope = scopesByIdentifier.get(identifier);
|
3232
3640
|
if (!scope) {
|
3233
|
-
scope =
|
3641
|
+
scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);
|
3234
3642
|
scopesByIdentifier.set(identifier, scope);
|
3235
3643
|
}
|
3236
3644
|
return scope;
|
@@ -3273,28 +3681,35 @@ var Router = function() {
|
|
3273
3681
|
get: function() {
|
3274
3682
|
return this.application.element;
|
3275
3683
|
},
|
3276
|
-
enumerable:
|
3684
|
+
enumerable: false,
|
3277
3685
|
configurable: true
|
3278
3686
|
});
|
3279
3687
|
Object.defineProperty(Router.prototype, "schema", {
|
3280
3688
|
get: function() {
|
3281
3689
|
return this.application.schema;
|
3282
3690
|
},
|
3283
|
-
enumerable:
|
3691
|
+
enumerable: false,
|
3692
|
+
configurable: true
|
3693
|
+
});
|
3694
|
+
Object.defineProperty(Router.prototype, "logger", {
|
3695
|
+
get: function() {
|
3696
|
+
return this.application.logger;
|
3697
|
+
},
|
3698
|
+
enumerable: false,
|
3284
3699
|
configurable: true
|
3285
3700
|
});
|
3286
3701
|
Object.defineProperty(Router.prototype, "controllerAttribute", {
|
3287
3702
|
get: function() {
|
3288
3703
|
return this.schema.controllerAttribute;
|
3289
3704
|
},
|
3290
|
-
enumerable:
|
3705
|
+
enumerable: false,
|
3291
3706
|
configurable: true
|
3292
3707
|
});
|
3293
3708
|
Object.defineProperty(Router.prototype, "modules", {
|
3294
3709
|
get: function() {
|
3295
3710
|
return Array.from(this.modulesByIdentifier.values());
|
3296
3711
|
},
|
3297
|
-
enumerable:
|
3712
|
+
enumerable: false,
|
3298
3713
|
configurable: true
|
3299
3714
|
});
|
3300
3715
|
Object.defineProperty(Router.prototype, "contexts", {
|
@@ -3303,7 +3718,7 @@ var Router = function() {
|
|
3303
3718
|
return contexts.concat(module.contexts);
|
3304
3719
|
}, []);
|
3305
3720
|
},
|
3306
|
-
enumerable:
|
3721
|
+
enumerable: false,
|
3307
3722
|
configurable: true
|
3308
3723
|
});
|
3309
3724
|
Router.prototype.start = function() {
|
@@ -3334,6 +3749,9 @@ var Router = function() {
|
|
3334
3749
|
Router.prototype.handleError = function(error, message, detail) {
|
3335
3750
|
this.application.handleError(error, message, detail);
|
3336
3751
|
};
|
3752
|
+
Router.prototype.createScopeForElementAndIdentifier = function(element, identifier) {
|
3753
|
+
return new Scope(this.schema, element, identifier, this.logger);
|
3754
|
+
};
|
3337
3755
|
Router.prototype.scopeConnected = function(scope) {
|
3338
3756
|
this.scopesByIdentifier.add(scope.identifier, scope);
|
3339
3757
|
var module = this.modulesByIdentifier.get(scope.identifier);
|
@@ -3372,6 +3790,11 @@ var defaultSchema = {
|
|
3372
3790
|
};
|
3373
3791
|
|
3374
3792
|
var __awaiter = window && window.__awaiter || function(thisArg, _arguments, P, generator) {
|
3793
|
+
function adopt(value) {
|
3794
|
+
return value instanceof P ? value : new P(function(resolve) {
|
3795
|
+
resolve(value);
|
3796
|
+
});
|
3797
|
+
}
|
3375
3798
|
return new (P || (P = Promise))(function(resolve, reject) {
|
3376
3799
|
function fulfilled(value) {
|
3377
3800
|
try {
|
@@ -3388,9 +3811,7 @@ var __awaiter = window && window.__awaiter || function(thisArg, _arguments, P, g
|
|
3388
3811
|
}
|
3389
3812
|
}
|
3390
3813
|
function step(result) {
|
3391
|
-
result.done ? resolve(result.value) :
|
3392
|
-
resolve(result.value);
|
3393
|
-
}).then(fulfilled, rejected);
|
3814
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
3394
3815
|
}
|
3395
3816
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
3396
3817
|
});
|
@@ -3421,8 +3842,9 @@ var __generator = window && window.__generator || function(thisArg, body) {
|
|
3421
3842
|
function step(op) {
|
3422
3843
|
if (f) throw new TypeError("Generator is already executing.");
|
3423
3844
|
while (_) try {
|
3424
|
-
if (f = 1, y && (t =
|
3425
|
-
|
3845
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y),
|
3846
|
+
0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
3847
|
+
if (y = 0, t) op = [ op[0] & 2, t.value ];
|
3426
3848
|
switch (op[0]) {
|
3427
3849
|
case 0:
|
3428
3850
|
case 1:
|
@@ -3485,6 +3907,13 @@ var __generator = window && window.__generator || function(thisArg, body) {
|
|
3485
3907
|
}
|
3486
3908
|
};
|
3487
3909
|
|
3910
|
+
var __spreadArrays$3 = window && window.__spreadArrays || function() {
|
3911
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
3912
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++,
|
3913
|
+
k++) r[k] = a[j];
|
3914
|
+
return r;
|
3915
|
+
};
|
3916
|
+
|
3488
3917
|
var Application = function() {
|
3489
3918
|
function Application(element, schema) {
|
3490
3919
|
if (element === void 0) {
|
@@ -3493,6 +3922,7 @@ var Application = function() {
|
|
3493
3922
|
if (schema === void 0) {
|
3494
3923
|
schema = defaultSchema;
|
3495
3924
|
}
|
3925
|
+
this.logger = console;
|
3496
3926
|
this.element = element;
|
3497
3927
|
this.schema = schema;
|
3498
3928
|
this.dispatcher = new Dispatcher(this);
|
@@ -3512,16 +3942,16 @@ var Application = function() {
|
|
3512
3942
|
|
3513
3943
|
case 1:
|
3514
3944
|
_a.sent();
|
3515
|
-
this.router.start();
|
3516
3945
|
this.dispatcher.start();
|
3946
|
+
this.router.start();
|
3517
3947
|
return [ 2 ];
|
3518
3948
|
}
|
3519
3949
|
});
|
3520
3950
|
});
|
3521
3951
|
};
|
3522
3952
|
Application.prototype.stop = function() {
|
3523
|
-
this.router.stop();
|
3524
3953
|
this.dispatcher.stop();
|
3954
|
+
this.router.stop();
|
3525
3955
|
};
|
3526
3956
|
Application.prototype.register = function(identifier, controllerConstructor) {
|
3527
3957
|
this.load({
|
@@ -3535,7 +3965,7 @@ var Application = function() {
|
|
3535
3965
|
for (var _i = 1; _i < arguments.length; _i++) {
|
3536
3966
|
rest[_i - 1] = arguments[_i];
|
3537
3967
|
}
|
3538
|
-
var definitions = Array.isArray(head) ? head : [ head ]
|
3968
|
+
var definitions = Array.isArray(head) ? head : __spreadArrays$3([ head ], rest);
|
3539
3969
|
definitions.forEach(function(definition) {
|
3540
3970
|
return _this.router.loadDefinition(definition);
|
3541
3971
|
});
|
@@ -3546,7 +3976,7 @@ var Application = function() {
|
|
3546
3976
|
for (var _i = 1; _i < arguments.length; _i++) {
|
3547
3977
|
rest[_i - 1] = arguments[_i];
|
3548
3978
|
}
|
3549
|
-
var identifiers = Array.isArray(head) ? head : [ head ]
|
3979
|
+
var identifiers = Array.isArray(head) ? head : __spreadArrays$3([ head ], rest);
|
3550
3980
|
identifiers.forEach(function(identifier) {
|
3551
3981
|
return _this.router.unloadIdentifier(identifier);
|
3552
3982
|
});
|
@@ -3557,7 +3987,7 @@ var Application = function() {
|
|
3557
3987
|
return context.controller;
|
3558
3988
|
});
|
3559
3989
|
},
|
3560
|
-
enumerable:
|
3990
|
+
enumerable: false,
|
3561
3991
|
configurable: true
|
3562
3992
|
});
|
3563
3993
|
Application.prototype.getControllerForElementAndIdentifier = function(element, identifier) {
|
@@ -3565,7 +3995,7 @@ var Application = function() {
|
|
3565
3995
|
return context ? context.controller : null;
|
3566
3996
|
};
|
3567
3997
|
Application.prototype.handleError = function(error, message, detail) {
|
3568
|
-
|
3998
|
+
this.logger.error("%s\n\n%o\n\n%o", message, error, detail);
|
3569
3999
|
};
|
3570
4000
|
return Application;
|
3571
4001
|
}();
|
@@ -3580,122 +4010,259 @@ function domReady() {
|
|
3580
4010
|
});
|
3581
4011
|
}
|
3582
4012
|
|
3583
|
-
function
|
3584
|
-
var
|
3585
|
-
|
3586
|
-
|
3587
|
-
|
3588
|
-
|
3589
|
-
|
3590
|
-
|
3591
|
-
|
3592
|
-
|
3593
|
-
|
3594
|
-
|
3595
|
-
|
4013
|
+
function ClassPropertiesBlessing(constructor) {
|
4014
|
+
var classes = readInheritableStaticArrayValues(constructor, "classes");
|
4015
|
+
return classes.reduce(function(properties, classDefinition) {
|
4016
|
+
return Object.assign(properties, propertiesForClassDefinition(classDefinition));
|
4017
|
+
}, {});
|
4018
|
+
}
|
4019
|
+
|
4020
|
+
function propertiesForClassDefinition(key) {
|
4021
|
+
var _a;
|
4022
|
+
var name = key + "Class";
|
4023
|
+
return _a = {}, _a[name] = {
|
4024
|
+
get: function() {
|
4025
|
+
var classes = this.classes;
|
4026
|
+
if (classes.has(key)) {
|
4027
|
+
return classes.get(key);
|
4028
|
+
} else {
|
4029
|
+
var attribute = classes.getAttributeName(key);
|
4030
|
+
throw new Error('Missing attribute "' + attribute + '"');
|
3596
4031
|
}
|
3597
|
-
}
|
3598
|
-
|
3599
|
-
|
4032
|
+
}
|
4033
|
+
}, _a["has" + capitalize(name)] = {
|
4034
|
+
get: function() {
|
4035
|
+
return this.classes.has(key);
|
4036
|
+
}
|
4037
|
+
}, _a;
|
4038
|
+
}
|
4039
|
+
|
4040
|
+
function TargetPropertiesBlessing(constructor) {
|
4041
|
+
var targets = readInheritableStaticArrayValues(constructor, "targets");
|
4042
|
+
return targets.reduce(function(properties, targetDefinition) {
|
4043
|
+
return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));
|
4044
|
+
}, {});
|
4045
|
+
}
|
4046
|
+
|
4047
|
+
function propertiesForTargetDefinition(name) {
|
4048
|
+
var _a;
|
4049
|
+
return _a = {}, _a[name + "Target"] = {
|
4050
|
+
get: function() {
|
4051
|
+
var target = this.targets.find(name);
|
4052
|
+
if (target) {
|
4053
|
+
return target;
|
4054
|
+
} else {
|
4055
|
+
throw new Error('Missing target element "' + this.identifier + "." + name + '"');
|
3600
4056
|
}
|
3601
|
-
}
|
4057
|
+
}
|
4058
|
+
}, _a[name + "Targets"] = {
|
4059
|
+
get: function() {
|
4060
|
+
return this.targets.findAll(name);
|
4061
|
+
}
|
4062
|
+
}, _a["has" + capitalize(name) + "Target"] = {
|
4063
|
+
get: function() {
|
4064
|
+
return this.targets.has(name);
|
4065
|
+
}
|
4066
|
+
}, _a;
|
4067
|
+
}
|
4068
|
+
|
4069
|
+
function ValuePropertiesBlessing(constructor) {
|
4070
|
+
var valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, "values");
|
4071
|
+
var propertyDescriptorMap = {
|
4072
|
+
valueDescriptorMap: {
|
3602
4073
|
get: function() {
|
3603
|
-
|
4074
|
+
var _this = this;
|
4075
|
+
return valueDefinitionPairs.reduce(function(result, valueDefinitionPair) {
|
4076
|
+
var _a;
|
4077
|
+
var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);
|
4078
|
+
var attributeName = _this.data.getAttributeNameForKey(valueDescriptor.key);
|
4079
|
+
return Object.assign(result, (_a = {}, _a[attributeName] = valueDescriptor, _a));
|
4080
|
+
}, {});
|
3604
4081
|
}
|
3605
|
-
}
|
3606
|
-
}
|
4082
|
+
}
|
4083
|
+
};
|
4084
|
+
return valueDefinitionPairs.reduce(function(properties, valueDefinitionPair) {
|
4085
|
+
return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));
|
4086
|
+
}, propertyDescriptorMap);
|
3607
4087
|
}
|
3608
4088
|
|
3609
|
-
function
|
3610
|
-
var
|
3611
|
-
|
3612
|
-
|
3613
|
-
|
3614
|
-
|
3615
|
-
|
3616
|
-
|
4089
|
+
function propertiesForValueDefinitionPair(valueDefinitionPair) {
|
4090
|
+
var _a;
|
4091
|
+
var definition = parseValueDefinitionPair(valueDefinitionPair);
|
4092
|
+
var type = definition.type, key = definition.key, name = definition.name;
|
4093
|
+
var read = readers[type], write = writers[type] || writers.default;
|
4094
|
+
return _a = {}, _a[name] = {
|
4095
|
+
get: function() {
|
4096
|
+
var value = this.data.get(key);
|
4097
|
+
if (value !== null) {
|
4098
|
+
return read(value);
|
4099
|
+
} else {
|
4100
|
+
return definition.defaultValue;
|
4101
|
+
}
|
4102
|
+
},
|
4103
|
+
set: function(value) {
|
4104
|
+
if (value === undefined) {
|
4105
|
+
this.data.delete(key);
|
4106
|
+
} else {
|
4107
|
+
this.data.set(key, write(value));
|
4108
|
+
}
|
4109
|
+
}
|
4110
|
+
}, _a["has" + capitalize(name)] = {
|
4111
|
+
get: function() {
|
4112
|
+
return this.data.has(key);
|
4113
|
+
}
|
4114
|
+
}, _a;
|
3617
4115
|
}
|
3618
4116
|
|
3619
|
-
function
|
3620
|
-
var
|
3621
|
-
|
3622
|
-
|
3623
|
-
|
4117
|
+
function parseValueDefinitionPair(_a) {
|
4118
|
+
var token = _a[0], typeConstant = _a[1];
|
4119
|
+
var type = parseValueTypeConstant(typeConstant);
|
4120
|
+
return valueDescriptorForTokenAndType(token, type);
|
4121
|
+
}
|
4122
|
+
|
4123
|
+
function parseValueTypeConstant(typeConstant) {
|
4124
|
+
switch (typeConstant) {
|
4125
|
+
case Array:
|
4126
|
+
return "array";
|
4127
|
+
|
4128
|
+
case Boolean:
|
4129
|
+
return "boolean";
|
4130
|
+
|
4131
|
+
case Number:
|
4132
|
+
return "number";
|
4133
|
+
|
4134
|
+
case Object:
|
4135
|
+
return "object";
|
4136
|
+
|
4137
|
+
case String:
|
4138
|
+
return "string";
|
3624
4139
|
}
|
3625
|
-
|
4140
|
+
throw new Error('Unknown value type constant "' + typeConstant + '"');
|
3626
4141
|
}
|
3627
4142
|
|
3628
|
-
function
|
3629
|
-
var
|
3630
|
-
return
|
4143
|
+
function valueDescriptorForTokenAndType(token, type) {
|
4144
|
+
var key = dasherize(token) + "-value";
|
4145
|
+
return {
|
4146
|
+
type: type,
|
4147
|
+
key: key,
|
4148
|
+
name: camelize(key),
|
4149
|
+
get defaultValue() {
|
4150
|
+
return defaultValuesByType[type];
|
4151
|
+
}
|
4152
|
+
};
|
3631
4153
|
}
|
3632
4154
|
|
3633
|
-
|
3634
|
-
|
3635
|
-
|
3636
|
-
|
3637
|
-
|
4155
|
+
var defaultValuesByType = {
|
4156
|
+
get array() {
|
4157
|
+
return [];
|
4158
|
+
},
|
4159
|
+
boolean: false,
|
4160
|
+
number: 0,
|
4161
|
+
get object() {
|
4162
|
+
return {};
|
4163
|
+
},
|
4164
|
+
string: ""
|
4165
|
+
};
|
4166
|
+
|
4167
|
+
var readers = {
|
4168
|
+
array: function(value) {
|
4169
|
+
var array = JSON.parse(value);
|
4170
|
+
if (!Array.isArray(array)) {
|
4171
|
+
throw new TypeError("Expected array");
|
3638
4172
|
}
|
3639
|
-
|
4173
|
+
return array;
|
4174
|
+
},
|
4175
|
+
boolean: function(value) {
|
4176
|
+
return !(value == "0" || value == "false");
|
4177
|
+
},
|
4178
|
+
number: function(value) {
|
4179
|
+
return parseFloat(value);
|
4180
|
+
},
|
4181
|
+
object: function(value) {
|
4182
|
+
var object = JSON.parse(value);
|
4183
|
+
if (object === null || typeof object != "object" || Array.isArray(object)) {
|
4184
|
+
throw new TypeError("Expected object");
|
4185
|
+
}
|
4186
|
+
return object;
|
4187
|
+
},
|
4188
|
+
string: function(value) {
|
4189
|
+
return value;
|
4190
|
+
}
|
4191
|
+
};
|
4192
|
+
|
4193
|
+
var writers = {
|
4194
|
+
default: writeString,
|
4195
|
+
array: writeJSON,
|
4196
|
+
object: writeJSON
|
4197
|
+
};
|
4198
|
+
|
4199
|
+
function writeJSON(value) {
|
4200
|
+
return JSON.stringify(value);
|
3640
4201
|
}
|
3641
4202
|
|
3642
|
-
function
|
3643
|
-
return
|
4203
|
+
function writeString(value) {
|
4204
|
+
return "" + value;
|
3644
4205
|
}
|
3645
4206
|
|
3646
4207
|
var Controller = function() {
|
3647
4208
|
function Controller(context) {
|
3648
4209
|
this.context = context;
|
3649
4210
|
}
|
3650
|
-
Controller.bless = function() {
|
3651
|
-
defineTargetProperties(this);
|
3652
|
-
};
|
3653
4211
|
Object.defineProperty(Controller.prototype, "application", {
|
3654
4212
|
get: function() {
|
3655
4213
|
return this.context.application;
|
3656
4214
|
},
|
3657
|
-
enumerable:
|
4215
|
+
enumerable: false,
|
3658
4216
|
configurable: true
|
3659
4217
|
});
|
3660
4218
|
Object.defineProperty(Controller.prototype, "scope", {
|
3661
4219
|
get: function() {
|
3662
4220
|
return this.context.scope;
|
3663
4221
|
},
|
3664
|
-
enumerable:
|
4222
|
+
enumerable: false,
|
3665
4223
|
configurable: true
|
3666
4224
|
});
|
3667
4225
|
Object.defineProperty(Controller.prototype, "element", {
|
3668
4226
|
get: function() {
|
3669
4227
|
return this.scope.element;
|
3670
4228
|
},
|
3671
|
-
enumerable:
|
4229
|
+
enumerable: false,
|
3672
4230
|
configurable: true
|
3673
4231
|
});
|
3674
4232
|
Object.defineProperty(Controller.prototype, "identifier", {
|
3675
4233
|
get: function() {
|
3676
4234
|
return this.scope.identifier;
|
3677
4235
|
},
|
3678
|
-
enumerable:
|
4236
|
+
enumerable: false,
|
3679
4237
|
configurable: true
|
3680
4238
|
});
|
3681
4239
|
Object.defineProperty(Controller.prototype, "targets", {
|
3682
4240
|
get: function() {
|
3683
4241
|
return this.scope.targets;
|
3684
4242
|
},
|
3685
|
-
enumerable:
|
4243
|
+
enumerable: false,
|
4244
|
+
configurable: true
|
4245
|
+
});
|
4246
|
+
Object.defineProperty(Controller.prototype, "classes", {
|
4247
|
+
get: function() {
|
4248
|
+
return this.scope.classes;
|
4249
|
+
},
|
4250
|
+
enumerable: false,
|
3686
4251
|
configurable: true
|
3687
4252
|
});
|
3688
4253
|
Object.defineProperty(Controller.prototype, "data", {
|
3689
4254
|
get: function() {
|
3690
4255
|
return this.scope.data;
|
3691
4256
|
},
|
3692
|
-
enumerable:
|
4257
|
+
enumerable: false,
|
3693
4258
|
configurable: true
|
3694
4259
|
});
|
3695
4260
|
Controller.prototype.initialize = function() {};
|
3696
4261
|
Controller.prototype.connect = function() {};
|
3697
4262
|
Controller.prototype.disconnect = function() {};
|
4263
|
+
Controller.blessings = [ ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing ];
|
3698
4264
|
Controller.targets = [];
|
4265
|
+
Controller.values = {};
|
3699
4266
|
return Controller;
|
3700
4267
|
}();
|
3701
4268
|
|